mirror of
https://github.com/elliotnunn/powermac-rom.git
synced 2024-06-02 07:41:28 +00:00
ewa and other fixes
This commit is contained in:
parent
74ad98c3d4
commit
4b6b3057f5
|
@ -28,19 +28,19 @@ ExceptionAfterRetry
|
|||
stw r9, KDP.NKInfo.ExceptionCauseCounts(r8)
|
||||
|
||||
; Move regs from KDP to ContextBlock
|
||||
lwz r8, EWA.r7(r1)
|
||||
lwz r8, KDP.r7(r1)
|
||||
stw r8, CB.r7(r6)
|
||||
lwz r8, EWA.r8(r1)
|
||||
lwz r8, KDP.r8(r1)
|
||||
stw r8, CB.r8(r6)
|
||||
lwz r8, EWA.r9(r1)
|
||||
lwz r8, KDP.r9(r1)
|
||||
stw r8, CB.r9(r6)
|
||||
lwz r8, EWA.r10(r1)
|
||||
lwz r8, KDP.r10(r1)
|
||||
stw r8, CB.r10(r6)
|
||||
lwz r8, EWA.r11(r1)
|
||||
lwz r8, KDP.r11(r1)
|
||||
stw r8, CB.r11(r6)
|
||||
lwz r8, EWA.r12(r1)
|
||||
lwz r8, KDP.r12(r1)
|
||||
stw r8, CB.r12(r6)
|
||||
lwz r8, EWA.r13(r1)
|
||||
lwz r8, KDP.r13(r1)
|
||||
stw r8, CB.r13(r6)
|
||||
|
||||
bge RunSystemContext ; Alt Context has left exception disabled => Sys Context
|
||||
|
@ -80,11 +80,11 @@ RunExceptionHandler
|
|||
########################################################################
|
||||
|
||||
major_0x02980_0x100
|
||||
lwz r0, EWA.r0(r1)
|
||||
lwz r2, EWA.r2(r1)
|
||||
lwz r3, EWA.r3(r1)
|
||||
lwz r4, EWA.r4(r1)
|
||||
lwz r5, EWA.r5(r1)
|
||||
lwz r0, KDP.r0(r1)
|
||||
lwz r2, KDP.r2(r1)
|
||||
lwz r3, KDP.r3(r1)
|
||||
lwz r4, KDP.r4(r1)
|
||||
lwz r5, KDP.r5(r1)
|
||||
blr
|
||||
|
||||
PreferRegistersFromKDPSavingContextBlock
|
||||
|
@ -93,7 +93,7 @@ PreferRegistersFromKDPSavingContextBlock
|
|||
stw r21, CB.PropagateR21(r6)
|
||||
stw r19, CB.PropagateR19(r6)
|
||||
stw r18, CB.PropagateR18(r6)
|
||||
lmw r14, EWA.r14(r1)
|
||||
lmw r14, KDP.r14(r1)
|
||||
blr
|
||||
|
||||
########################################################################
|
||||
|
@ -161,7 +161,7 @@ KCallReturnFromException
|
|||
lwz r4, CB.ExceptionOriginR4(r6)
|
||||
|
||||
bc BO_IF_NOT, bitFlagLowSaves, RunSystemContext
|
||||
stmw r14, EWA.r14(r1)
|
||||
stmw r14, KDP.r14(r1)
|
||||
lwz r17, CB.PropagateR17(r6)
|
||||
lwz r20, CB.PropagateR20(r6)
|
||||
lwz r21, CB.PropagateR21(r6)
|
||||
|
@ -196,9 +196,9 @@ KCallReturnFromException
|
|||
|
||||
LoadInterruptRegisters
|
||||
mfsprg r1, 0
|
||||
stw r6, EWA.r6(r1)
|
||||
stw r6, KDP.r6(r1)
|
||||
mfsprg r6, 1
|
||||
stw r6, EWA.r1(r1)
|
||||
stw r6, KDP.r1(r1)
|
||||
lwz r6, KDP.PA_ContextBlock(r1)
|
||||
stw r7, CB.r7(r6)
|
||||
stw r8, CB.r8(r6)
|
||||
|
@ -259,7 +259,7 @@ SwitchContext ; OldCB *r6, NewCB *r9
|
|||
stw r21, CB.LowSave21(r6)
|
||||
stw r19, CB.LowSave19(r6)
|
||||
stw r18, CB.LowSave18(r6)
|
||||
lmw r14, EWA.r14(r1)
|
||||
lmw r14, KDP.r14(r1)
|
||||
@not_low_saves
|
||||
|
||||
mfxer r8
|
||||
|
@ -277,7 +277,7 @@ SwitchContext ; OldCB *r6, NewCB *r9
|
|||
stw r12, CB.MQ(r6)
|
||||
@no_mq
|
||||
|
||||
lwz r8, EWA.r1(r1)
|
||||
lwz r8, KDP.r1(r1)
|
||||
stw r0, CB.r0(r6)
|
||||
stw r8, 0x010c(r6)
|
||||
stw r2, 0x0114(r6)
|
||||
|
@ -339,7 +339,7 @@ SwitchContext ; OldCB *r6, NewCB *r9
|
|||
|
||||
lwz r8, CB.r1(r6)
|
||||
lwz r0, CB.r0(r6)
|
||||
stw r8, EWA.r1(r1)
|
||||
stw r8, KDP.r1(r1)
|
||||
lwz r2, 0x0114(r6)
|
||||
lwz r3, 0x011c(r6)
|
||||
lwz r4, 0x0124(r6)
|
||||
|
@ -386,8 +386,8 @@ IntReturn
|
|||
lwz r8, CB.r8(r6)
|
||||
lwz r9, CB.r9(r6)
|
||||
|
||||
lwz r6, EWA.r6(r1) ; restore last two registers from EWA
|
||||
lwz r1, EWA.r1(r1)
|
||||
lwz r6, KDP.r6(r1) ; restore last two registers from EWA
|
||||
lwz r1, KDP.r1(r1)
|
||||
|
||||
rfi
|
||||
|
||||
|
|
|
@ -5,18 +5,18 @@
|
|||
_align 6
|
||||
IntExternal0
|
||||
mfsprg r1, 0 ; Init regs and increment ctr
|
||||
stw r0, EWA.r2(r1)
|
||||
stw r2, EWA.r2(r1)
|
||||
stw r0, KDP.r2(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
lwz r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
stw r3, EWA.r3(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
addi r2, r2, 1
|
||||
stw r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
|
||||
mfmsr r2 ; Save a self-ptr to FF880000... why?
|
||||
lis r3, 0xFF88
|
||||
_bset r0, r2, bitMsrDR
|
||||
stw r4, EWA.r4(r1)
|
||||
stw r5, EWA.r5(r1)
|
||||
stw r4, KDP.r4(r1)
|
||||
stw r5, KDP.r5(r1)
|
||||
mfsrr0 r4
|
||||
mfsrr1 r5
|
||||
mtmsr r0
|
||||
|
@ -24,8 +24,8 @@ IntExternal0
|
|||
mtmsr r2
|
||||
mtsrr0 r4
|
||||
mtsrr1 r5
|
||||
lwz r4, EWA.r4(r1)
|
||||
lwz r5, EWA.r5(r1)
|
||||
lwz r4, KDP.r4(r1)
|
||||
lwz r5, KDP.r5(r1)
|
||||
|
||||
lwz r2, KDP.DebugIntPtr(r1) ; Query the shared mem (debug?) for int num
|
||||
mfcr r0
|
||||
|
@ -35,7 +35,7 @@ IntExternal0
|
|||
ori r2, r2, 0x8000
|
||||
sth r2, 0(r3)
|
||||
mfsprg r2, 2
|
||||
lwz r3, EWA.r3(r1)
|
||||
lwz r3, KDP.r3(r1)
|
||||
mtlr r2
|
||||
beq @return ; 0 -> no interrupt
|
||||
bgt @clear ; negative -> clear interrupt
|
||||
|
@ -46,8 +46,8 @@ IntExternal0
|
|||
|
||||
@return
|
||||
mtcr r0 ; Set CR and return
|
||||
lwz r0, EWA.r0(r1)
|
||||
lwz r2, EWA.r2(r1)
|
||||
lwz r0, KDP.r0(r1)
|
||||
lwz r2, KDP.r2(r1)
|
||||
mfsprg r1, 1
|
||||
rfi
|
||||
|
||||
|
@ -72,18 +72,18 @@ IntLookupTable
|
|||
_align 6
|
||||
IntExternal1
|
||||
mfsprg r1, 0 ; Init regs and increment ctr
|
||||
stw r0, EWA.r2(r1)
|
||||
stw r2, EWA.r2(r1)
|
||||
stw r0, KDP.r2(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
lwz r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
stw r3, EWA.r3(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
addi r2, r2, 1
|
||||
stw r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
|
||||
lis r2, 0x50F3 ; Query OpenPIC at 50F2A000
|
||||
mfmsr r2
|
||||
_bset r0, r2, bitMsrDR
|
||||
stw r4, EWA.r4(r1)
|
||||
stw r5, EWA.r5(r1)
|
||||
stw r4, KDP.r4(r1)
|
||||
stw r5, KDP.r5(r1)
|
||||
mfsrr0 r4
|
||||
mfsrr1 r5
|
||||
mtmsr r0
|
||||
|
@ -94,8 +94,8 @@ IntExternal1
|
|||
mtmsr r2
|
||||
mtsrr0 r4
|
||||
mtsrr1 r5
|
||||
lwz r4, EWA.r4(r1)
|
||||
lwz r5, EWA.r5(r1)
|
||||
lwz r4, KDP.r4(r1)
|
||||
lwz r5, KDP.r5(r1)
|
||||
|
||||
lwz r3, KDP.PA_NanoKernelCode(r1) ; Loop that number up in the table
|
||||
rlwimi r3, r0, 0, 0x0000003F
|
||||
|
@ -105,7 +105,7 @@ IntExternal1
|
|||
clrlwi. r2, r2, 29
|
||||
sth r2, 0(r3)
|
||||
mfsprg r2, 2
|
||||
lwz r3, EWA.r3(r1)
|
||||
lwz r3, KDP.r3(r1)
|
||||
mtlr r2
|
||||
beq @clear ; 0 -> clear interrupt
|
||||
; nonzero -> post interrupt
|
||||
|
@ -115,8 +115,8 @@ IntExternal1
|
|||
|
||||
@return
|
||||
mtcr r0 ; Set CR and return
|
||||
lwz r0, EWA.r0(r1)
|
||||
lwz r2, EWA.r2(r1)
|
||||
lwz r0, KDP.r0(r1)
|
||||
lwz r2, KDP.r2(r1)
|
||||
mfsprg r1, 1
|
||||
rfi
|
||||
|
||||
|
@ -130,18 +130,18 @@ IntExternal1
|
|||
_align 6
|
||||
IntExternal2
|
||||
mfsprg r1, 0 ; Init regs and increment ctr
|
||||
stw r0, EWA.r2(r1)
|
||||
stw r2, EWA.r2(r1)
|
||||
stw r0, KDP.r2(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
lwz r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
stw r3, EWA.r3(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
addi r2, r2, 1
|
||||
stw r2, KDP.NKInfo.ExternalIntCount(r1)
|
||||
|
||||
lis r2, 0xF300 ; Query OpenPIC at F3000028/C
|
||||
mfmsr r2
|
||||
_bset r3, r2, bitMsrDR
|
||||
stw r4, EWA.r4(r1)
|
||||
stw r5, EWA.r5(r1)
|
||||
stw r4, KDP.r4(r1)
|
||||
stw r5, KDP.r5(r1)
|
||||
mfsrr0 r4
|
||||
mfsrr1 r5
|
||||
mtmsr r3
|
||||
|
@ -152,8 +152,8 @@ IntExternal2
|
|||
mtmsr r0
|
||||
mtsrr0 r4
|
||||
mtsrr1 r5
|
||||
lwz r4, EWA.r4(r1)
|
||||
lwz r5, EWA.r5(r1)
|
||||
lwz r4, KDP.r4(r1)
|
||||
lwz r5, KDP.r5(r1)
|
||||
|
||||
mfcr r0
|
||||
; Interpret OpenPic result:
|
||||
|
@ -182,7 +182,7 @@ IntExternal2
|
|||
lwz r3, KDP.PA_EmulatorIplValue(r1)
|
||||
sth r2, 0(r3)
|
||||
mfsprg r2, 2
|
||||
lwz r3, EWA.r3(r1)
|
||||
lwz r3, KDP.r3(r1)
|
||||
mtlr r2
|
||||
beq @clear ; 0 -> clear interrupt
|
||||
; nonzero -> post interrupt
|
||||
|
@ -192,8 +192,8 @@ IntExternal2
|
|||
|
||||
@return
|
||||
mtcr r0 ; Set CR and return
|
||||
lwz r0, EWA.r0(r1)
|
||||
lwz r2, EWA.r2(r1)
|
||||
lwz r0, KDP.r0(r1)
|
||||
lwz r2, KDP.r2(r1)
|
||||
mfsprg r1, 1
|
||||
rfi
|
||||
|
||||
|
@ -208,7 +208,7 @@ IntExternal2
|
|||
_align 6
|
||||
IntDecrementerSystem
|
||||
mfsprg r1, 0
|
||||
stmw r2, EWA.r2(r1)
|
||||
stmw r2, KDP.r2(r1)
|
||||
mfdec r31
|
||||
lwz r30, KDP.OtherContextDEC(r1)
|
||||
|
||||
|
@ -238,15 +238,15 @@ DecCommon ; DEC for Alternate=r30, System=r31
|
|||
|
||||
mtxer r29
|
||||
|
||||
stw r0, EWA.r0(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
mfsprg r31, 1
|
||||
stw r31, EWA.r1(r1)
|
||||
stw r31, KDP.r1(r1)
|
||||
|
||||
lwz r31, KDP.NKInfo.DecrementerIntCount(r1)
|
||||
addi r31, r31, 1
|
||||
stw r31, KDP.NKInfo.DecrementerIntCount(r1)
|
||||
|
||||
lmw r27, EWA.r27(r1)
|
||||
lmw r27, KDP.r27(r1)
|
||||
mfsprg r1, 2
|
||||
mtlr r1
|
||||
mfsprg r1, 1
|
||||
|
@ -254,7 +254,7 @@ DecCommon ; DEC for Alternate=r30, System=r31
|
|||
|
||||
IntDecrementerAlternate
|
||||
mfsprg r1, 0
|
||||
stmw r2, EWA.r2(r1)
|
||||
stmw r2, KDP.r2(r1)
|
||||
lwz r31, KDP.OtherContextDEC(r1)
|
||||
mfdec r30
|
||||
b DecCommon
|
||||
|
@ -264,10 +264,10 @@ IntDecrementerAlternate
|
|||
_align 6
|
||||
IntDSI
|
||||
mfsprg r1, 0
|
||||
stmw r2, EWA.r2(r1)
|
||||
stmw r2, KDP.r2(r1)
|
||||
mfsprg r11, 1
|
||||
stw r0, EWA.r0(r1)
|
||||
stw r11, EWA.r1(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
stw r11, KDP.r1(r1)
|
||||
|
||||
mfsrr0 r10
|
||||
mfsrr1 r11
|
||||
|
@ -327,15 +327,15 @@ EmulateDataAccess
|
|||
_align 6
|
||||
IntAlignment
|
||||
mfsprg r1, 0
|
||||
stmw r2, EWA.r2(r1)
|
||||
stmw r2, KDP.r2(r1)
|
||||
|
||||
lwz r11, KDP.NKInfo.MisalignmentCount(r1)
|
||||
addi r11, r11, 1
|
||||
stw r11, KDP.NKInfo.MisalignmentCount(r1)
|
||||
|
||||
mfsprg r11, 1
|
||||
stw r0, EWA.r0(r1)
|
||||
stw r11, EWA.r1(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
stw r11, KDP.r1(r1)
|
||||
|
||||
mfsrr0 r10
|
||||
mfsrr1 r11
|
||||
|
@ -394,7 +394,7 @@ IntISI
|
|||
andis. r8, r11, 0x4020 ; what the hell are these MSR bits?
|
||||
beq major_0x039dc_0x14
|
||||
|
||||
stmw r14, EWA.r14(r8)
|
||||
stmw r14, KDP.r14(r8)
|
||||
mr r27, r10
|
||||
bl PopulateHTAB
|
||||
bne @not_in_htab
|
||||
|
@ -410,11 +410,11 @@ IntISI
|
|||
sync
|
||||
mtmsr r14
|
||||
mtsprg 3, r24
|
||||
lmw r14, EWA.r14(r8)
|
||||
lmw r14, KDP.r14(r8)
|
||||
b IntReturn
|
||||
|
||||
@not_in_htab
|
||||
lmw r14, EWA.r14(r8)
|
||||
lmw r14, KDP.r14(r8)
|
||||
li r8, ecInstPageFault
|
||||
blt Exception
|
||||
li r8, ecInstInvalidAddress
|
||||
|
|
|
@ -41,10 +41,10 @@ KCallVMDispatch ; OUTSIDE REFERER
|
|||
add r8, r8, r7
|
||||
mtlr r8
|
||||
|
||||
lwz r6, EWA.r6(r1)
|
||||
stw r14, EWA.r14(r1)
|
||||
stw r15, EWA.r15(r1)
|
||||
stw r16, EWA.r16(r1)
|
||||
lwz r6, KDP.r6(r1)
|
||||
stw r14, KDP.r14(r1)
|
||||
stw r15, KDP.r15(r1)
|
||||
stw r16, KDP.r16(r1)
|
||||
|
||||
bltlr
|
||||
b VMReturnMinus1
|
||||
|
@ -110,9 +110,9 @@ VMReturn1 ; OUTSIDE REFERER
|
|||
li r3, 0x01
|
||||
|
||||
VMReturn ; OUTSIDE REFERER
|
||||
lwz r14, EWA.r14(r1)
|
||||
lwz r15, EWA.r15(r1)
|
||||
lwz r16, EWA.r16(r1)
|
||||
lwz r14, KDP.r14(r1)
|
||||
lwz r15, KDP.r15(r1)
|
||||
lwz r16, KDP.r16(r1)
|
||||
lwz r7, KDP.Flags(r1)
|
||||
lwz r6, KDP.PA_ContextBlock(r1)
|
||||
b IntReturn
|
||||
|
|
|
@ -10,26 +10,26 @@ IllegalInstruction
|
|||
lwz r8, 0(r10)
|
||||
mtmsr r9
|
||||
|
||||
stw r0, EWA.r0(r1)
|
||||
stw r2, EWA.r2(r1)
|
||||
stw r3, EWA.r3(r1)
|
||||
stw r4, EWA.r4(r1)
|
||||
stw r5, EWA.r5(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
stw r4, KDP.r4(r1)
|
||||
stw r5, KDP.r5(r1)
|
||||
lwz r9, CB.r7(r6)
|
||||
stw r9, EWA.r7(r1)
|
||||
stw r9, KDP.r7(r1)
|
||||
lwz r9, CB.r8(r6)
|
||||
stw r9, EWA.r8(r1)
|
||||
stw r9, KDP.r8(r1)
|
||||
lwz r9, CB.r9(r6)
|
||||
stw r9, EWA.r9(r1)
|
||||
stw r9, KDP.r9(r1)
|
||||
lwz r9, CB.r10(r6)
|
||||
stw r9, EWA.r10(r1)
|
||||
stw r9, KDP.r10(r1)
|
||||
lwz r9, CB.r11(r6)
|
||||
stw r9, EWA.r11(r1)
|
||||
stw r9, KDP.r11(r1)
|
||||
lwz r9, CB.r12(r6)
|
||||
stw r9, EWA.r12(r1)
|
||||
stw r9, KDP.r12(r1)
|
||||
lwz r9, CB.r13(r6)
|
||||
stw r9, EWA.r13(r1)
|
||||
stmw r14, EWA.r14(r1)
|
||||
stw r9, KDP.r13(r1)
|
||||
stmw r14, KDP.r14(r1)
|
||||
|
||||
rlwinm r9, r8, 6, 15, 31
|
||||
cmplwi r9, 0xB99F
|
||||
|
@ -143,7 +143,7 @@ KCallRunAlternateContext
|
|||
|
||||
; No luck with the cache
|
||||
|
||||
stmw r14, EWA.r14(r1)
|
||||
stmw r14, KDP.r14(r1)
|
||||
|
||||
cmpw cr1, r8, r6
|
||||
beq cr1, @fail
|
||||
|
@ -185,7 +185,7 @@ KCallRunAlternateContext
|
|||
|
||||
; Stick it in cache slot 3
|
||||
|
||||
lmw r14, EWA.r14(r1)
|
||||
lmw r14, KDP.r14(r1)
|
||||
stw r8, KDP.NCBCachePA3(r1)
|
||||
|
||||
|
||||
|
@ -234,7 +234,7 @@ KCallRunAlternateContext
|
|||
|
||||
@fail
|
||||
|
||||
lmw r14, EWA.r14(r1)
|
||||
lmw r14, KDP.r14(r1)
|
||||
li r8, ecTrapInstr
|
||||
b Exception
|
||||
|
||||
|
@ -244,7 +244,7 @@ KCallRunAlternateContext
|
|||
KCallResetSystem
|
||||
; PPC trap 1, or indirectly, 68k RESET
|
||||
|
||||
stmw r14, EWA.r14(r1)
|
||||
stmw r14, KDP.r14(r1)
|
||||
|
||||
xoris r8, r3, 'Ga'
|
||||
cmplwi r8, 'ry'
|
||||
|
@ -262,7 +262,7 @@ KCallResetSystem
|
|||
Reset
|
||||
include 'NKReset.s'
|
||||
|
||||
lmw r14, EWA.r14(r1)
|
||||
lmw r14, KDP.r14(r1)
|
||||
b KCallPrioritizeInterrupts
|
||||
|
||||
########################################################################
|
||||
|
@ -280,45 +280,45 @@ KCallPrioritizeInterrupts
|
|||
lwz r12, CB.r12(r6)
|
||||
lwz r13, CB.r13(r6)
|
||||
lwz r7, CB.r7(r6)
|
||||
lwz r8, EWA.r1(r1)
|
||||
lwz r8, KDP.r1(r1)
|
||||
mfsprg r9, 3
|
||||
lwz r9, VecTbl.ExternalIntVector(r9)
|
||||
mtsprg 1, r8
|
||||
mtlr r9
|
||||
lwz r8, CB.r8(r6)
|
||||
lwz r9, CB.r9(r6)
|
||||
lwz r6, EWA.r6(r1)
|
||||
lwz r6, KDP.r6(r1)
|
||||
blrl ; (could this ever fall though to KCallSystemCrash?)
|
||||
|
||||
########################################################################
|
||||
|
||||
KCallSystemCrash
|
||||
|
||||
stw r0, EWA.r0(r1)
|
||||
stw r2, EWA.r2(r1)
|
||||
stw r3, EWA.r3(r1)
|
||||
stw r4, EWA.r4(r1)
|
||||
stw r5, EWA.r5(r1)
|
||||
stw r0, KDP.r0(r1)
|
||||
stw r2, KDP.r2(r1)
|
||||
stw r3, KDP.r3(r1)
|
||||
stw r4, KDP.r4(r1)
|
||||
stw r5, KDP.r5(r1)
|
||||
|
||||
lwz r8, CB.r7(r6)
|
||||
lwz r9, CB.r8(r6)
|
||||
stw r8, EWA.r7(r1)
|
||||
stw r9, EWA.r8(r1)
|
||||
stw r8, KDP.r7(r1)
|
||||
stw r9, KDP.r8(r1)
|
||||
|
||||
lwz r8, CB.r9(r6)
|
||||
lwz r9, CB.r10(r6)
|
||||
stw r8, EWA.r9(r1)
|
||||
stw r9, EWA.r10(r1)
|
||||
stw r8, KDP.r9(r1)
|
||||
stw r9, KDP.r10(r1)
|
||||
|
||||
lwz r8, CB.r11(r6)
|
||||
lwz r9, CB.r12(r6)
|
||||
stw r8, EWA.r11(r1)
|
||||
stw r9, EWA.r12(r1)
|
||||
stw r8, KDP.r11(r1)
|
||||
stw r9, KDP.r12(r1)
|
||||
|
||||
lwz r8, CB.r13(r6)
|
||||
stw r8, EWA.r13(r1)
|
||||
stw r8, KDP.r13(r1)
|
||||
|
||||
stmw r14, EWA.r14(r1)
|
||||
stmw r14, KDP.r14(r1)
|
||||
|
||||
bl SystemCrash
|
||||
|
||||
|
@ -330,9 +330,9 @@ IntProgram
|
|||
|
||||
; Standard interrupt palaver
|
||||
mfsprg r1, 0
|
||||
stw r6, EWA.r6(r1)
|
||||
stw r6, KDP.r6(r1)
|
||||
mfsprg r6, 1
|
||||
stw r6, EWA.r1(r1)
|
||||
stw r6, KDP.r1(r1)
|
||||
lwz r6, KDP.PA_ContextBlock(r1)
|
||||
stw r7, CB.r7(r6)
|
||||
stw r8, CB.r8(r6)
|
||||
|
|
|
@ -31,11 +31,10 @@ SystemCrash
|
|||
mfspr r0, dar
|
||||
stw r0, KDP.CrashDAR(r1)
|
||||
|
||||
mfspr r0, tbu
|
||||
stw r0, KDP.CrashTBU(r1)
|
||||
|
||||
mfspr r0, tb
|
||||
stw r0, KDP.CrashTB(r1)
|
||||
mfspr r0, rtcu
|
||||
stw r0, KDP.CrashRTCU(r1)
|
||||
mfspr r0, rtcl
|
||||
stw r0, KDP.CrashRTCL(r1)
|
||||
|
||||
mfspr r0, dec
|
||||
stw r0, KDP.CrashDEC(r1)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
include 'InfoRecords.a'
|
||||
|
||||
include 'NKStructs.a'
|
||||
include 'NKStructs.s'
|
||||
include 'NKEquates.s'
|
||||
include 'NKMacros.s'
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user