|
|
1.1 ! root 1: /* Copyright (c) 1992 NeXT Computer, Inc. All rights reserved. ! 2: * ! 3: * File: architecture/m98k/m98601_regs.h ! 4: * Author: Ben Fathi, NeXT Computer, Inc. ! 5: * ! 6: * M98601-specific registers ! 7: * ! 8: * HISTORY ! 9: * 08-Dec-92 Ben Fathi ([email protected]) ! 10: * Added interrpt status registers. ! 11: * ! 12: * 18-Nov-92 Ben Fathi ([email protected]) ! 13: * Created. ! 14: */ ! 15: ! 16: #ifndef _ARCH_M98K_M98601_REGS_H_ ! 17: #define _ARCH_M98K_M98601_REGS_H_ ! 18: ! 19: /* ! 20: * Software definitions for m98601-specific registers ! 21: */ ! 22: #define SR_M98601_MCHECK hid0 // machine check status ! 23: #define SR_M98601_RMI_MODES hid1 // run and fetch modes ! 24: #define SR_M98601_RMI_ADDR hid2 // run mode compare address ! 25: #define SR_M98601_RMI_DABR hid5 // data address breakpoint ! 26: #define SR_M98601_PID pid // processor ID ! 27: #define SR_M98601_MQ mq // multiply quotient ! 28: ! 29: /* ! 30: * Data Breakpoints ! 31: */ ! 32: ! 33: #define M98601_N_DATA_BP 1 // 98601 supports 1 data bp ! 34: ! 35: /* ! 36: * Data Breakpoint Address Specification (register HID5 aka DABR) ! 37: */ ! 38: typedef struct { ! 39: unsigned addr:BITS_WIDTH(31,3); // double-word address ! 40: unsigned rsvd:BIT_WIDTH(2); ! 41: unsigned w:BIT_WIDTH(1); // 1 => compare on store ! 42: unsigned r:BIT_WIDTH(0); // 1 => compare on load ! 43: } m98601_data_bp_addr_t; ! 44: ! 45: /* ! 46: * Valid values for "run" bits in m98601_data_bp_mode_t ! 47: */ ! 48: #define M98601_RUN_NORMAL 0 ! 49: #define M98601_RUN_LIMITED_ADDR_CMP 2 ! 50: #define M98601_RUN_SINGLE_INSTR_STEP 4 ! 51: #define M98601_RUN_FULL_ADDR_CMP 6 ! 52: #define M98601_RUN_FULL_BRANCH_TARG_CMP 7 ! 53: ! 54: /* ! 55: * Valid values for "resp" bits in m98601_data_bp_mode_t ! 56: */ ! 57: #define M98601_RESP_HARD_STOP 0 ! 58: #define M98601_RESP_SOFT_STOP 1 ! 59: #define M98601_RESP_TRAP 2 ! 60: ! 61: /* ! 62: * Data Breakpoint Mode Specification (register HID1) ! 63: */ ! 64: typedef struct { ! 65: unsigned :BIT_WIDTH(31); ! 66: unsigned run:BITS_WIDTH(30,28); // see above ! 67: unsigned :BITS_WIDTH(27,24); ! 68: unsigned resp:BITS_WIDTH(23,22); // see above ! 69: unsigned scan:BIT_WIDTH(21); // not for sw use ! 70: unsigned :BITS_WIDTH(20,15); ! 71: unsigned no_brd_tlbi:BIT_WIDTH(14); // if high, don't ! 72: // broadcast tlbie ! 73: unsigned :BITS_WIDTH(13,0); ! 74: } m98601_data_bp_mode_t; ! 75: ! 76: /* ! 77: * M98601-specific: ! 78: * Run Mode Interrupt Status Register (really SRR1) ! 79: */ ! 80: typedef struct { ! 81: unsigned :BITS_WIDTH(31,18); ! 82: unsigned trace:BIT_WIDTH(17); // 1 => interrupt caused by ! 83: // MSR(SE) trace mode ! 84: unsigned :BIT_WIDTH(16); ! 85: MSR_BITS; ! 86: } rmisr_t; ! 87: ! 88: /* ! 89: * M98601-specific: ! 90: * Machine Check Interrupt Status Register (HID0) ! 91: */ ! 92: typedef struct { ! 93: unsigned e:BIT_WIDTH(31); // master checkstop enable ! 94: unsigned s:BIT_WIDTH(30); // micro-code self-test latch ! 95: unsigned m:BIT_WIDTH(29); // checkstop with MSR(me)=0 ! 96: unsigned td:BIT_WIDTH(28); // multi-side hit in tlb ! 97: unsigned cd:BIT_WIDTH(27); // multi-side hit in cache dir ! 98: unsigned sh:BIT_WIDTH(26); // sequencer hang ! 99: unsigned dt:BIT_WIDTH(25); // dispatch timeout ! 100: unsigned ba:BIT_WIDTH(24); // bus address parity error ! 101: unsigned bd:BIT_WIDTH(23); // bus data parity error ! 102: unsigned cp:BIT_WIDTH(22); // cache parity error ! 103: unsigned iu:BIT_WIDTH(21); // invalid micro-code instr ! 104: unsigned pp:BIT_WIDTH(20); // pio bus protocol error ! 105: unsigned :BITS_WIDTH(19,17); // reserved ! 106: unsigned es:BIT_WIDTH(16); // enable ucode selftest ckstop ! 107: unsigned em:BIT_WIDTH(15); // enable machine check ckstop ! 108: unsigned etd:BIT_WIDTH(14); // enable tlb ckstop ! 109: unsigned ecd:BIT_WIDTH(13); // enable cache dir ckstop ! 110: unsigned esh:BIT_WIDTH(12); // enable sequencer hang ckstop ! 111: unsigned edt:BIT_WIDTH(11); // enable disp timeout ckstop ! 112: unsigned eba:BIT_WIDTH(10); // enable bus addr parity ckstop ! 113: unsigned ebd:BIT_WIDTH(9); // enable bus data parity ckstop ! 114: unsigned ecp:BIT_WIDTH(8); // enable cache parity ckstop ! 115: unsigned eiu:BIT_WIDTH(7); // enable inval ucode ins ckstop ! 116: unsigned epp:BIT_WIDTH(6); // enable pio bus prot ckstop ! 117: unsigned ddrip:BIT_WIDTH(5); // disable dynamic reload of ! 118: // alternate sector for instr ! 119: // prefecth (>= DD2.0) ! 120: unsigned ddrls:BIT_WIDTH(4); // disable dynamic reload of ! 121: // alternate sector for ! 122: // load/store ops (>= DD2.0) ! 123: unsigned :BIT_WIDTH(3); // reserved ! 124: unsigned dpc:BIT_WIDTH(2); // disable precharge for ARTRY ! 125: // and SHARED signals (>= DD2.0) ! 126: unsigned emc:BIT_WIDTH(1); // error in main cache ! 127: unsigned ehp:BIT_WIDTH(0); // enable high pri write queue ! 128: // for push data (>= DD2.0) ! 129: } mcisr_t; ! 130: ! 131: #endif _ARCH_M98K_M98601_REGS_H_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.