PDP11: Add descriptions to register names and bitfields to the PSW register.
This commit is contained in:
parent
a729752466
commit
e054a78398
1 changed files with 79 additions and 61 deletions
|
@ -385,62 +385,80 @@ int32 trap_clear[TRAP_V_MAX] = { /* trap clears */
|
|||
|
||||
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[] = {
|
||||
{ ORDATA (PC, saved_PC, 16) },
|
||||
{ ORDATA (R0, REGFILE[0][0], 16) },
|
||||
{ ORDATA (R1, REGFILE[1][0], 16) },
|
||||
{ ORDATA (R2, REGFILE[2][0], 16) },
|
||||
{ ORDATA (R3, REGFILE[3][0], 16) },
|
||||
{ ORDATA (R4, REGFILE[4][0], 16) },
|
||||
{ ORDATA (R5, REGFILE[5][0], 16) },
|
||||
{ ORDATA (SP, STACKFILE[MD_KER], 16) },
|
||||
{ ORDATA (R00, REGFILE[0][0], 16) },
|
||||
{ ORDATA (R01, REGFILE[1][0], 16) },
|
||||
{ ORDATA (R02, REGFILE[2][0], 16) },
|
||||
{ ORDATA (R03, REGFILE[3][0], 16) },
|
||||
{ ORDATA (R04, REGFILE[4][0], 16) },
|
||||
{ ORDATA (R05, REGFILE[5][0], 16) },
|
||||
{ ORDATA (R10, REGFILE[0][1], 16) },
|
||||
{ ORDATA (R11, REGFILE[1][1], 16) },
|
||||
{ ORDATA (R12, REGFILE[2][1], 16) },
|
||||
{ ORDATA (R13, REGFILE[3][1], 16) },
|
||||
{ ORDATA (R14, REGFILE[4][1], 16) },
|
||||
{ ORDATA (R15, REGFILE[5][1], 16) },
|
||||
{ ORDATA (KSP, STACKFILE[MD_KER], 16) },
|
||||
{ ORDATA (SSP, STACKFILE[MD_SUP], 16) },
|
||||
{ ORDATA (USP, STACKFILE[MD_USR], 16) },
|
||||
{ ORDATA (PSW, PSW, 16) },
|
||||
{ GRDATA (CM, PSW, 8, 2, PSW_V_CM) },
|
||||
{ GRDATA (PM, PSW, 8, 2, PSW_V_PM) },
|
||||
{ FLDATA (RS, PSW, PSW_V_RS) },
|
||||
{ FLDATA (FPD, PSW, PSW_V_FPD) },
|
||||
{ GRDATA (IPL, PSW, 8, 3, PSW_V_IPL) },
|
||||
{ FLDATA (T, PSW, PSW_V_TBIT) },
|
||||
{ FLDATA (N, PSW, PSW_V_N) },
|
||||
{ FLDATA (Z, PSW, PSW_V_Z) },
|
||||
{ FLDATA (V, PSW, PSW_V_V) },
|
||||
{ FLDATA (C, PSW, PSW_V_C) },
|
||||
{ ORDATA (PIRQ, PIRQ, 16) },
|
||||
{ ORDATA (STKLIM, STKLIM, 16) },
|
||||
{ ORDATA (FAC0H, FR[0].h, 32) },
|
||||
{ ORDATA (FAC0L, FR[0].l, 32) },
|
||||
{ ORDATA (FAC1H, FR[1].h, 32) },
|
||||
{ ORDATA (FAC1L, FR[1].l, 32) },
|
||||
{ ORDATA (FAC2H, FR[2].h, 32) },
|
||||
{ ORDATA (FAC2L, FR[2].l, 32) },
|
||||
{ ORDATA (FAC3H, FR[3].h, 32) },
|
||||
{ ORDATA (FAC3L, FR[3].l, 32) },
|
||||
{ ORDATA (FAC4H, FR[4].h, 32) },
|
||||
{ ORDATA (FAC4L, FR[4].l, 32) },
|
||||
{ ORDATA (FAC5H, FR[5].h, 32) },
|
||||
{ ORDATA (FAC5L, FR[5].l, 32) },
|
||||
{ ORDATA (FPS, FPS, 16) },
|
||||
{ ORDATA (FEA, FEA, 16) },
|
||||
{ ORDATA (FEC, FEC, 4) },
|
||||
{ ORDATA (MMR0, MMR0, 16) },
|
||||
{ ORDATA (MMR1, MMR1, 16) },
|
||||
{ ORDATA (MMR2, MMR2, 16) },
|
||||
{ ORDATA (MMR3, MMR3, 16) },
|
||||
{ ORDATAD (PC, saved_PC, 16, "Program Counter") },
|
||||
{ ORDATAD (R0, REGFILE[0][0], 16, "General Purpose R0") },
|
||||
{ ORDATAD (R1, REGFILE[1][0], 16, "General Purpose R1") },
|
||||
{ ORDATAD (R2, REGFILE[2][0], 16, "General Purpose R2") },
|
||||
{ ORDATAD (R3, REGFILE[3][0], 16, "General Purpose R3") },
|
||||
{ ORDATAD (R4, REGFILE[4][0], 16, "General Purpose R4") },
|
||||
{ ORDATAD (R5, REGFILE[5][0], 16, "General Purpose R5") },
|
||||
{ ORDATAD (SP, STACKFILE[MD_KER], 16, "Stack Pointer"), },
|
||||
{ ORDATAD (R00, REGFILE[0][0], 16, "Register File R00") },
|
||||
{ ORDATAD (R01, REGFILE[1][0], 16, "Register File R01") },
|
||||
{ ORDATAD (R02, REGFILE[2][0], 16, "Register File R02") },
|
||||
{ ORDATAD (R03, REGFILE[3][0], 16, "Register File R03") },
|
||||
{ ORDATAD (R04, REGFILE[4][0], 16, "Register File R04") },
|
||||
{ ORDATAD (R05, REGFILE[5][0], 16, "Register File R05") },
|
||||
{ ORDATAD (R10, REGFILE[0][1], 16, "Register File R10") },
|
||||
{ ORDATAD (R11, REGFILE[1][1], 16, "Register File R11") },
|
||||
{ ORDATAD (R12, REGFILE[2][1], 16, "Register File R12") },
|
||||
{ ORDATAD (R13, REGFILE[3][1], 16, "Register File R13") },
|
||||
{ ORDATAD (R14, REGFILE[4][1], 16, "Register File R14") },
|
||||
{ ORDATAD (R15, REGFILE[5][1], 16, "Register File R15") },
|
||||
{ ORDATAD (KSP, STACKFILE[MD_KER], 16, "Kernel Stack Pointer" ) },
|
||||
{ ORDATAD (SSP, STACKFILE[MD_SUP], 16, "Supervisor Stack Pointer" ) },
|
||||
{ ORDATAD (USP, STACKFILE[MD_USR], 16, "User Stack Pointer" ) },
|
||||
{ ORDATADF(PSW, PSW, 16, "Processor Status Word", psw_bits) },
|
||||
{ GRDATAD (CM, PSW, 8, 2, PSW_V_CM, "Current Mode") },
|
||||
{ GRDATAD (PM, PSW, 8, 2, PSW_V_PM, "Previous Mode") },
|
||||
{ FLDATAD (RS, PSW, PSW_V_RS, "Register Set") },
|
||||
{ FLDATAD (FPD, PSW, PSW_V_FPD, "First Part Done") },
|
||||
{ GRDATAD (IPL, PSW, 8, 3, PSW_V_IPL, "Interrupt Priority Level") },
|
||||
{ FLDATAD (T, PSW, PSW_V_TBIT, "Trace Trap") },
|
||||
{ FLDATAD (N, PSW, PSW_V_N, "Condition Code: Negative") },
|
||||
{ FLDATAD (Z, PSW, PSW_V_Z, "Condition Code: Zero") },
|
||||
{ FLDATAD (V, PSW, PSW_V_V, "Condition Code: Overflow") },
|
||||
{ FLDATAD (C, PSW, PSW_V_C, "Condition Code: Carry") },
|
||||
{ ORDATAD (PIRQ, PIRQ, 16, "Programmed Interrupt Request") },
|
||||
{ ORDATAD (STKLIM, STKLIM, 16, "Stack Limit") },
|
||||
{ ORDATAD (FAC0H, FR[0].h, 32, "Floating Point: R0 High") },
|
||||
{ ORDATAD (FAC0L, FR[0].l, 32, "Floating Point: R0 Low") },
|
||||
{ ORDATAD (FAC1H, FR[1].h, 32, "Floating Point: R1 High") },
|
||||
{ ORDATAD (FAC1L, FR[1].l, 32, "Floating Point: R1 Low") },
|
||||
{ ORDATAD (FAC2H, FR[2].h, 32, "Floating Point: R2 High") },
|
||||
{ ORDATAD (FAC2L, FR[2].l, 32, "Floating Point: R2 Low") },
|
||||
{ ORDATAD (FAC3H, FR[3].h, 32, "Floating Point: R3 High") },
|
||||
{ ORDATAD (FAC3L, FR[3].l, 32, "Floating Point: R3 Low") },
|
||||
{ ORDATAD (FAC4H, FR[4].h, 32, "Floating Point: R4 High") },
|
||||
{ ORDATAD (FAC4L, FR[4].l, 32, "Floating Point: R4 Low") },
|
||||
{ ORDATAD (FAC5H, FR[5].h, 32, "Floating Point: R5 High") },
|
||||
{ ORDATAD (FAC5L, FR[5].l, 32, "Floating Point: R5 Low") },
|
||||
{ ORDATAD (FPS, FPS, 16, "FP Status") },
|
||||
{ ORDATAD (FEA, FEA, 16, "FP Exception Code") },
|
||||
{ ORDATAD (FEC, FEC, 4, "FP Exception Address") },
|
||||
{ ORDATAD (MMR0, MMR0, 16, "MMR0 - Status") },
|
||||
{ ORDATAD (MMR1, MMR1, 16, "MMR1 - R+/-R") },
|
||||
{ ORDATAD (MMR2, MMR2, 16, "MMR2 - saved PC") },
|
||||
{ ORDATAD (MMR3, MMR3, 16, "MMR3 - 22b status") },
|
||||
{ GRDATA (KIPAR0, APRFILE[000], 8, 16, 16) },
|
||||
{ GRDATA (KIPDR0, APRFILE[000], 8, 16, 0) },
|
||||
{ GRDATA (KIPAR1, APRFILE[001], 8, 16, 16) },
|
||||
|
@ -537,13 +555,13 @@ REG cpu_reg[] = {
|
|||
{ GRDATA (UDPDR6, APRFILE[076], 8, 16, 0) },
|
||||
{ GRDATA (UDPAR7, APRFILE[077], 8, 16, 16) },
|
||||
{ GRDATA (UDPDR7, APRFILE[077], 8, 16, 0) },
|
||||
{ BRDATA (IREQ, int_req, 8, 32, IPL_HLVL), REG_RO },
|
||||
{ ORDATA (TRAPS, trap_req, TRAP_V_MAX) },
|
||||
{ FLDATA (WAIT, wait_state, 0) },
|
||||
{ BRDATAD (IREQ, int_req, 8, 32, IPL_HLVL, "Interrupt Requests"), REG_RO },
|
||||
{ ORDATAD (TRAPS, trap_req, TRAP_V_MAX, "Trap Requests") },
|
||||
{ FLDATAD (WAIT, wait_state, 0, "Wait State") },
|
||||
{ FLDATA (WAIT_ENABLE, wait_enable, 0), REG_HIDDEN },
|
||||
{ ORDATA (STOP_TRAPS, stop_trap, TRAP_V_MAX) },
|
||||
{ FLDATA (STOP_VECA, stop_vecabort, 0) },
|
||||
{ FLDATA (STOP_SPA, stop_spabort, 0) },
|
||||
{ ORDATAD (STOP_TRAPS, stop_trap, TRAP_V_MAX, "Stop on Trap") },
|
||||
{ FLDATAD (STOP_VECA, stop_vecabort, 0, "Stop on Vec Abort") },
|
||||
{ FLDATAD (STOP_SPA, stop_spabort, 0, "Stop on SP Abort") },
|
||||
{ FLDATA (AUTOCON, autcon_enb, 0), REG_HRO },
|
||||
{ BRDATA (PCQ, pcq, 8, 16, PCQ_SIZE), REG_RO+REG_CIRC },
|
||||
{ ORDATA (PCQP, pcq_p, 6), REG_HRO },
|
||||
|
|
Loading…
Add table
Reference in a new issue