PDP11: Add descriptions to register names and bitfields to the PSW register.

This commit is contained in:
Mark Pizzolato 2016-01-18 07:02:06 -08:00
parent a729752466
commit e054a78398

View file

@ -385,62 +385,80 @@ int32 trap_clear[TRAP_V_MAX] = { /* trap clears */
UNIT cpu_unit = { UDATA (NULL, UNIT_FIX|UNIT_BINK, INIMEMSIZE) }; UNIT cpu_unit = { UDATA (NULL, UNIT_FIX|UNIT_BINK, INIMEMSIZE) };
const char *psw_modes[] = {"K", "E", "S", "U"};
BITFIELD psw_bits[] = {
BIT(C), /* Carry */
BIT(V), /* Overflow */
BIT(Z), /* Zero */
BIT(N), /* Negative */
BIT(TBIT), /* trace trap */
BITFFMT(IPL,3,%d), /* IPL */
BIT(FPD), /* First Part Done */
BITNCF(2), /* MBZ */
BIT(RS), /* Register Set */
BITFNAM(PM,2,psw_modes), /* Previous Access Mode */
BITFNAM(CM,2,psw_modes), /* Current Access Mode */
ENDBITS
};
REG cpu_reg[] = { REG cpu_reg[] = {
{ ORDATA (PC, saved_PC, 16) }, { ORDATAD (PC, saved_PC, 16, "Program Counter") },
{ ORDATA (R0, REGFILE[0][0], 16) }, { ORDATAD (R0, REGFILE[0][0], 16, "General Purpose R0") },
{ ORDATA (R1, REGFILE[1][0], 16) }, { ORDATAD (R1, REGFILE[1][0], 16, "General Purpose R1") },
{ ORDATA (R2, REGFILE[2][0], 16) }, { ORDATAD (R2, REGFILE[2][0], 16, "General Purpose R2") },
{ ORDATA (R3, REGFILE[3][0], 16) }, { ORDATAD (R3, REGFILE[3][0], 16, "General Purpose R3") },
{ ORDATA (R4, REGFILE[4][0], 16) }, { ORDATAD (R4, REGFILE[4][0], 16, "General Purpose R4") },
{ ORDATA (R5, REGFILE[5][0], 16) }, { ORDATAD (R5, REGFILE[5][0], 16, "General Purpose R5") },
{ ORDATA (SP, STACKFILE[MD_KER], 16) }, { ORDATAD (SP, STACKFILE[MD_KER], 16, "Stack Pointer"), },
{ ORDATA (R00, REGFILE[0][0], 16) }, { ORDATAD (R00, REGFILE[0][0], 16, "Register File R00") },
{ ORDATA (R01, REGFILE[1][0], 16) }, { ORDATAD (R01, REGFILE[1][0], 16, "Register File R01") },
{ ORDATA (R02, REGFILE[2][0], 16) }, { ORDATAD (R02, REGFILE[2][0], 16, "Register File R02") },
{ ORDATA (R03, REGFILE[3][0], 16) }, { ORDATAD (R03, REGFILE[3][0], 16, "Register File R03") },
{ ORDATA (R04, REGFILE[4][0], 16) }, { ORDATAD (R04, REGFILE[4][0], 16, "Register File R04") },
{ ORDATA (R05, REGFILE[5][0], 16) }, { ORDATAD (R05, REGFILE[5][0], 16, "Register File R05") },
{ ORDATA (R10, REGFILE[0][1], 16) }, { ORDATAD (R10, REGFILE[0][1], 16, "Register File R10") },
{ ORDATA (R11, REGFILE[1][1], 16) }, { ORDATAD (R11, REGFILE[1][1], 16, "Register File R11") },
{ ORDATA (R12, REGFILE[2][1], 16) }, { ORDATAD (R12, REGFILE[2][1], 16, "Register File R12") },
{ ORDATA (R13, REGFILE[3][1], 16) }, { ORDATAD (R13, REGFILE[3][1], 16, "Register File R13") },
{ ORDATA (R14, REGFILE[4][1], 16) }, { ORDATAD (R14, REGFILE[4][1], 16, "Register File R14") },
{ ORDATA (R15, REGFILE[5][1], 16) }, { ORDATAD (R15, REGFILE[5][1], 16, "Register File R15") },
{ ORDATA (KSP, STACKFILE[MD_KER], 16) }, { ORDATAD (KSP, STACKFILE[MD_KER], 16, "Kernel Stack Pointer" ) },
{ ORDATA (SSP, STACKFILE[MD_SUP], 16) }, { ORDATAD (SSP, STACKFILE[MD_SUP], 16, "Supervisor Stack Pointer" ) },
{ ORDATA (USP, STACKFILE[MD_USR], 16) }, { ORDATAD (USP, STACKFILE[MD_USR], 16, "User Stack Pointer" ) },
{ ORDATA (PSW, PSW, 16) }, { ORDATADF(PSW, PSW, 16, "Processor Status Word", psw_bits) },
{ GRDATA (CM, PSW, 8, 2, PSW_V_CM) }, { GRDATAD (CM, PSW, 8, 2, PSW_V_CM, "Current Mode") },
{ GRDATA (PM, PSW, 8, 2, PSW_V_PM) }, { GRDATAD (PM, PSW, 8, 2, PSW_V_PM, "Previous Mode") },
{ FLDATA (RS, PSW, PSW_V_RS) }, { FLDATAD (RS, PSW, PSW_V_RS, "Register Set") },
{ FLDATA (FPD, PSW, PSW_V_FPD) }, { FLDATAD (FPD, PSW, PSW_V_FPD, "First Part Done") },
{ GRDATA (IPL, PSW, 8, 3, PSW_V_IPL) }, { GRDATAD (IPL, PSW, 8, 3, PSW_V_IPL, "Interrupt Priority Level") },
{ FLDATA (T, PSW, PSW_V_TBIT) }, { FLDATAD (T, PSW, PSW_V_TBIT, "Trace Trap") },
{ FLDATA (N, PSW, PSW_V_N) }, { FLDATAD (N, PSW, PSW_V_N, "Condition Code: Negative") },
{ FLDATA (Z, PSW, PSW_V_Z) }, { FLDATAD (Z, PSW, PSW_V_Z, "Condition Code: Zero") },
{ FLDATA (V, PSW, PSW_V_V) }, { FLDATAD (V, PSW, PSW_V_V, "Condition Code: Overflow") },
{ FLDATA (C, PSW, PSW_V_C) }, { FLDATAD (C, PSW, PSW_V_C, "Condition Code: Carry") },
{ ORDATA (PIRQ, PIRQ, 16) }, { ORDATAD (PIRQ, PIRQ, 16, "Programmed Interrupt Request") },
{ ORDATA (STKLIM, STKLIM, 16) }, { ORDATAD (STKLIM, STKLIM, 16, "Stack Limit") },
{ ORDATA (FAC0H, FR[0].h, 32) }, { ORDATAD (FAC0H, FR[0].h, 32, "Floating Point: R0 High") },
{ ORDATA (FAC0L, FR[0].l, 32) }, { ORDATAD (FAC0L, FR[0].l, 32, "Floating Point: R0 Low") },
{ ORDATA (FAC1H, FR[1].h, 32) }, { ORDATAD (FAC1H, FR[1].h, 32, "Floating Point: R1 High") },
{ ORDATA (FAC1L, FR[1].l, 32) }, { ORDATAD (FAC1L, FR[1].l, 32, "Floating Point: R1 Low") },
{ ORDATA (FAC2H, FR[2].h, 32) }, { ORDATAD (FAC2H, FR[2].h, 32, "Floating Point: R2 High") },
{ ORDATA (FAC2L, FR[2].l, 32) }, { ORDATAD (FAC2L, FR[2].l, 32, "Floating Point: R2 Low") },
{ ORDATA (FAC3H, FR[3].h, 32) }, { ORDATAD (FAC3H, FR[3].h, 32, "Floating Point: R3 High") },
{ ORDATA (FAC3L, FR[3].l, 32) }, { ORDATAD (FAC3L, FR[3].l, 32, "Floating Point: R3 Low") },
{ ORDATA (FAC4H, FR[4].h, 32) }, { ORDATAD (FAC4H, FR[4].h, 32, "Floating Point: R4 High") },
{ ORDATA (FAC4L, FR[4].l, 32) }, { ORDATAD (FAC4L, FR[4].l, 32, "Floating Point: R4 Low") },
{ ORDATA (FAC5H, FR[5].h, 32) }, { ORDATAD (FAC5H, FR[5].h, 32, "Floating Point: R5 High") },
{ ORDATA (FAC5L, FR[5].l, 32) }, { ORDATAD (FAC5L, FR[5].l, 32, "Floating Point: R5 Low") },
{ ORDATA (FPS, FPS, 16) }, { ORDATAD (FPS, FPS, 16, "FP Status") },
{ ORDATA (FEA, FEA, 16) }, { ORDATAD (FEA, FEA, 16, "FP Exception Code") },
{ ORDATA (FEC, FEC, 4) }, { ORDATAD (FEC, FEC, 4, "FP Exception Address") },
{ ORDATA (MMR0, MMR0, 16) }, { ORDATAD (MMR0, MMR0, 16, "MMR0 - Status") },
{ ORDATA (MMR1, MMR1, 16) }, { ORDATAD (MMR1, MMR1, 16, "MMR1 - R+/-R") },
{ ORDATA (MMR2, MMR2, 16) }, { ORDATAD (MMR2, MMR2, 16, "MMR2 - saved PC") },
{ ORDATA (MMR3, MMR3, 16) }, { ORDATAD (MMR3, MMR3, 16, "MMR3 - 22b status") },
{ GRDATA (KIPAR0, APRFILE[000], 8, 16, 16) }, { GRDATA (KIPAR0, APRFILE[000], 8, 16, 16) },
{ GRDATA (KIPDR0, APRFILE[000], 8, 16, 0) }, { GRDATA (KIPDR0, APRFILE[000], 8, 16, 0) },
{ GRDATA (KIPAR1, APRFILE[001], 8, 16, 16) }, { GRDATA (KIPAR1, APRFILE[001], 8, 16, 16) },
@ -537,13 +555,13 @@ REG cpu_reg[] = {
{ GRDATA (UDPDR6, APRFILE[076], 8, 16, 0) }, { GRDATA (UDPDR6, APRFILE[076], 8, 16, 0) },
{ GRDATA (UDPAR7, APRFILE[077], 8, 16, 16) }, { GRDATA (UDPAR7, APRFILE[077], 8, 16, 16) },
{ GRDATA (UDPDR7, APRFILE[077], 8, 16, 0) }, { GRDATA (UDPDR7, APRFILE[077], 8, 16, 0) },
{ BRDATA (IREQ, int_req, 8, 32, IPL_HLVL), REG_RO }, { BRDATAD (IREQ, int_req, 8, 32, IPL_HLVL, "Interrupt Requests"), REG_RO },
{ ORDATA (TRAPS, trap_req, TRAP_V_MAX) }, { ORDATAD (TRAPS, trap_req, TRAP_V_MAX, "Trap Requests") },
{ FLDATA (WAIT, wait_state, 0) }, { FLDATAD (WAIT, wait_state, 0, "Wait State") },
{ FLDATA (WAIT_ENABLE, wait_enable, 0), REG_HIDDEN }, { FLDATA (WAIT_ENABLE, wait_enable, 0), REG_HIDDEN },
{ ORDATA (STOP_TRAPS, stop_trap, TRAP_V_MAX) }, { ORDATAD (STOP_TRAPS, stop_trap, TRAP_V_MAX, "Stop on Trap") },
{ FLDATA (STOP_VECA, stop_vecabort, 0) }, { FLDATAD (STOP_VECA, stop_vecabort, 0, "Stop on Vec Abort") },
{ FLDATA (STOP_SPA, stop_spabort, 0) }, { FLDATAD (STOP_SPA, stop_spabort, 0, "Stop on SP Abort") },
{ FLDATA (AUTOCON, autcon_enb, 0), REG_HRO }, { FLDATA (AUTOCON, autcon_enb, 0), REG_HRO },
{ BRDATA (PCQ, pcq, 8, 16, PCQ_SIZE), REG_RO+REG_CIRC }, { BRDATA (PCQ, pcq, 8, 16, PCQ_SIZE), REG_RO+REG_CIRC },
{ ORDATA (PCQP, pcq_p, 6), REG_HRO }, { ORDATA (PCQP, pcq_p, 6), REG_HRO },