$Id: ka43-interrupts.txt,v 1.1 2001/09/19 15:53:39 atp Exp $ This info was obtained by trawling through a running VMS 7.2 on a VAXstation 3100/m76 (KA43 CPU) with the System Dump Analyzer (ANALYZE/SYSTEM). First off, this is the SCB (system control block): SDA> examine exe$gl_scb EXE$GL_SCB: 81258000 "..%." SDA> examine 81258000:81258000+3fc 80BD6E09 80002491 8000A801 80002119 .!.......$...n½. 81258000 800025F8 80B723A4 80002518 80E5CFC0 ..å..%...#o.Ø%.. 81258010 80B722C0 80B723AC 80BB35B8 80B7223C <"o..5».¬#o.."o. 81258020 80BB3479 80002118 800021D0 80002308 .#...!...!..y4». 81258030 80002300 800022F8 80B724D8 80B725E0 à%o.b$o.Ø"...#.. 81258040 8000A819 8000A811 8000A809 80002118 .!.............. 81258050 80002118 80002520 80002118 8000A821 !....!.. %...!.. 81258060 80002118 80002118 80002118 80002118 .!...!...!...!.. 81258070 80BE0C00 80BD04D0 80002118 80002118 .!...!....½..... 81258080 80C4E921 80C4E621 80002118 80BD3E91 .>½..!..!æÄ.!éÄ. 81258090 80C4E639 80C4E631 80C4E629 80C4E641 AæÄ.)æÄ.1æÄ.9æÄ. 812580A0 80002118 800027B1 80002118 80002471 q$...!..±'...!.. 812580B0 80E60A9C 80E60A00 80002118 80C4E739 9çÄ..!....æ...æ. 812580C0 80002118 80002118 80002118 80002118 .!...!...!...!.. 812580D0 80002118 80002118 80002118 80002118 .!...!...!...!.. 812580E0 80C50A5D 80C50A25 80002118 80002118 .!...!..%.Å.].Å. 812580F0 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258100 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258110 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258120 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258130 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258140 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258150 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258160 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258170 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258180 80002119 80002119 80002119 80002119 .!...!...!...!.. 81258190 80002119 80002119 80002119 80002119 .!...!...!...!.. 812581A0 80002119 80002119 80002119 80002119 .!...!...!...!.. 812581B0 80002119 80002119 80002119 80002119 .!...!...!...!.. 812581C0 80002119 80002119 80002119 80002119 .!...!...!...!.. 812581D0 80002119 80002119 80002119 80002119 .!...!...!...!.. 812581E0 80002119 80002119 80002119 80002119 .!...!...!...!.. 812581F0 8000A829 8000A829 8000A829 80E642D9 .Bæ.)...)...)... 81258200 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258210 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258220 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258230 8000A829 80DBB389 80DBB351 8000A829 )...Q.......)... 81258240 8000A829 8000A829 8000A829 80D875D1 Ñub.)...)...)... 81258250 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258260 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258270 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258280 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258290 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812582A0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812582B0 8000A829 8000A829 80DC33C9 80DC3391 .3Ü.É3Ü.)...)... 812582C0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812582D0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812582E0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812582F0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258300 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258310 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258320 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258330 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258340 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258350 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258360 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258370 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258380 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 81258390 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812583A0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812583B0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812583C0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812583D0 8000A829 8000A829 8000A829 8000A829 )...)...)...)... 812583E0 80D9CF11 80DB9BD1 8000A829 8000A829 )...)...Ñ....... 812583F0 (The hex data reads right-to-left and the ASCII reads left-to-right, i.e. VMS DUMP format.) The part we're interested in here is the second page (containing the device vectors). Most of these vectors are set to 8000a829 (which corresponds to address 8000a828, and the CPU should switch to the interrupt stack): SDA> examine/instr 8000a828 UBA$UNEXINT: JMP @#MCHK+00700 UBA$UNEXINT+00006: HALT So, these are unexpected interrupts and will lead to code near the machine check handling code. The other (used) vectors are: vector addr vector number handler addr 81258200 80 80e642d8 81258244 91 80dbb350 81258248 92 80dbb388 81258250 94 80d875d0 812582c0 b0 80dc3390 812582c4 b1 80dc33c8 812583f8 fe 80db9bd0 812583fc ff 80d9cf10 These interrupt handler addresses are containing within the CRB (Channel Request Block) for the relevant device or controller. Let's chase these down. First vector 0x80: SDA> examine/instr 80e642d8:80e642d8+10 MCHK+006F8: INCL @#IO$GL_UBA_INT0 MCHK+006FE: BRB MCHK+00700 MCHK+00700: REI This just increments an interrupt counter and dismisses the interrupt. (So the unexpected interrupt handler above effectively just dismisses the interrupt.) Next vector 0x91: SDA> examine/instr/noskip 80DBB350;2 80DBB350: PUSHR #3F 80DBB352: JSB @#GABDRIVER+00942 So, this interrupt is probably handled by GABDRIVER. Let's verify this by looking at GABDRIVER's data structures: SDA> show device ga ... --- Primary Channel Request Block (CRB) 80DBB300 --- Reference count 1 Wait queue empty IDB address 80DB5640 Unit init. 80E0D589 Int. service 80E0DCC2 ADP address 80D87300 Ctrl. init. 80E0D4ED ... SDA> format 80DBB300 80DBB300 CRB$L_FQFL 00000000 ... 80DBB350 CRB$L_INTD 9F163FBB 80DBB354 80E0DCC2 GABDRIVER+00942 ... 80DBB388 CRB$L_INTD2 9F163FBB SDA> So the interrupt handler is 0x50 bytes into the CRB. Interestingly, there's another interrupt handler 0x88 bytes into the CRB as well. This corresponds to vector 0x92 in the table above. SDA> examine/instr 80DBB388;2 80DBB388: PUSHR #3F 80DBB38A: JSB @#GABDRIVER+0145C So this device uses two interrupt vectors. This means that the CRBs for the other vectors are: vector addr num handler addr CRB address driver 81258200 80 80e642d8 (no driver) 81258244 91 80dbb350 80dbb300 GABDRIVER 81258248 92 80dbb388 80dbb300 GABDRIVER 81258250 94 80d875d0 80d87580 ESDRIVER 812582c0 b0 80dc3390 80dc3340 YEDRIVER 812582c4 b1 80dc33c8 80dc3340 YEDRIVER 812583f8 fe 80db9bd0 80db9b80 PKNDRIVER (PKA) 812583fc ff 80d9cf10 80d9cec0 PKNDRIVER (PKB) GABDRIVER is the framebuffer driver, ESDRIVER is ethernet, YEDRIVER is a terminal port driver (I think) and PKNDRIVER is a SCSI port driver. So, to summarize, the KA43 device interrupts are: Framebuffer 0x91, 0x92 LANCE ethernet 0x94 DZ11 serial 0xb0, 0xb1 NCR5380 SCSI: internal 0xfe external 0xff