mirror of
https://github.com/elliotnunn/powermac-rom.git
synced 2025-02-19 19:31:02 +00:00
Remove unnecessary static branch hints
These + and - characters in a branch mnemonic can cause the assembler to produce conditional branch instructions with that hint the branch predictor. The default for forward branches is -, and for backward branches is +. If a mnemonic is issued with the opposite sign, then bit 10 of the instruction (the LSB of the BO field) is set. My long-retired "ppcdisasm" script inserted these hints unconditionally, despite 98% of them not being required. The code is much cleaner now. I read in some old MPW release notes that PPCAsm and PPCLink together exhibit a quirk when linking conditional branches to imported symbols. PPCAsm always assembles these conditional branches as if they were forward branches (that is, a + hint will always set the hint bit, and a - hint will never). I hoped to use this property to divine whether the NanoKernel was linked from one or many assembly files, but I was frustrated by the lack of conditional branches between files.
This commit is contained in:
parent
e2e519b863
commit
4c0e5221f1
@ -14,10 +14,10 @@ NKDebug
|
||||
rlwinm. r9, r11, 0, MSR_DRbit, MSR_DRbit ; IntSyscall sets this
|
||||
mr r8, r3
|
||||
|
||||
beq- @already_physical
|
||||
beq @already_physical
|
||||
li r9, 0
|
||||
bl V2P ; takes page EA in r8, r9=0, returns page PA in r17
|
||||
beq- @fail
|
||||
beq @fail
|
||||
rlwimi r8, r17, 0, 0, 19
|
||||
@already_physical
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -49,7 +49,7 @@ InitBuiltin
|
||||
|
||||
mfspr r12, pvr
|
||||
rlwinm. r12, r12, 0, 0, 14
|
||||
bne- @not601
|
||||
bne @not601
|
||||
|
||||
mtspr rtcl, r0
|
||||
mtspr rtcu, r0
|
||||
@ -92,7 +92,7 @@ InitBuiltin
|
||||
@rambank_loop
|
||||
lwzu r11, 8(r10) ; Bank0Size, Bank1Size...
|
||||
cmpwi r11, 0
|
||||
beq+ @rambank_loop
|
||||
beq @rambank_loop
|
||||
|
||||
; r10 points to BankXSize, r11 contains BankXSize
|
||||
|
||||
@ -127,7 +127,7 @@ InitBuiltin
|
||||
lwz r11, NKSystemInfo.PhysicalMemorySize(r5)
|
||||
addis r15, r11, 1
|
||||
cmpwi r15, 0
|
||||
bgt- @skip_reducing_ram
|
||||
bgt @skip_reducing_ram
|
||||
addi r11, r11, -4096
|
||||
@skip_reducing_ram
|
||||
subf r11, r12, r11
|
||||
@ -212,9 +212,9 @@ InitBuiltin
|
||||
andc r13, r11, r14 ; end % HTABSIZE
|
||||
subf r13, r15, r13 ; end % HTABSIZE - r15
|
||||
cmplw r13, r12
|
||||
blt+ @try_another_bank
|
||||
blt @try_another_bank
|
||||
cmplw r13, r11
|
||||
bgt+ @try_another_bank
|
||||
bgt @try_another_bank
|
||||
|
||||
add r12, r13, r15
|
||||
|
||||
@ -265,7 +265,7 @@ InitBuiltin
|
||||
cmpw r12, r11
|
||||
lis r11, 0x7fff
|
||||
|
||||
bne- @did_not_panic
|
||||
bne @did_not_panic
|
||||
subf r11, r13, r1
|
||||
addi r11, r11, KDP.StartOfPanicArea
|
||||
@did_not_panic
|
||||
@ -279,11 +279,11 @@ InitBuiltin
|
||||
subf r10, r11, r12
|
||||
cmplwi cr7, r10, KDP.EndOfPanicArea - KDP.StartOfPanicArea - 4
|
||||
|
||||
ble- cr7, @skipwrite
|
||||
ble cr7, @skipwrite
|
||||
stwx r0, r13, r12
|
||||
@skipwrite
|
||||
|
||||
bne+ @eraseloop
|
||||
bne @eraseloop
|
||||
|
||||
|
||||
|
||||
@ -317,7 +317,7 @@ InitBuiltin
|
||||
|
||||
lisori r12, 'RTAS'
|
||||
cmpw r7, r12
|
||||
bne- @RTAS_absent
|
||||
bne @RTAS_absent
|
||||
|
||||
stw r8, KDP.RTAS_Proc(r1)
|
||||
|
||||
@ -332,7 +332,7 @@ InitBuiltin
|
||||
addic. r10, r10, -4
|
||||
lwzx r12, r9, r10
|
||||
stwx r12, r11, r10
|
||||
bgt+ @RTAS_copyloop
|
||||
bgt @RTAS_copyloop
|
||||
|
||||
stw r23, PSA.NoIdeaR23(r1)
|
||||
b @RTAS_done
|
||||
@ -354,7 +354,7 @@ InitBuiltin
|
||||
addic. r10, r10, -4
|
||||
lwzx r12, r4, r10
|
||||
stwx r12, r11, r10
|
||||
bgt+ @ProcessorInfo_copyloop
|
||||
bgt @ProcessorInfo_copyloop
|
||||
|
||||
|
||||
|
||||
@ -367,14 +367,14 @@ InitBuiltin
|
||||
addic. r10, r10, -4
|
||||
lwzx r12, r5, r10
|
||||
stwx r12, r11, r10
|
||||
bgt+ @SystemInfo_copyloop
|
||||
bgt @SystemInfo_copyloop
|
||||
|
||||
|
||||
|
||||
; If DiagnosticInfo != 0, copy it to PSA
|
||||
|
||||
cmpwi r6, 0
|
||||
beq- @DiagInfo_skipcopy
|
||||
beq @DiagInfo_skipcopy
|
||||
|
||||
addi r11, r1, PSA.DiagInfo
|
||||
li r10, 256; NKDiagInfo.Size
|
||||
@ -383,7 +383,7 @@ InitBuiltin
|
||||
addic. r10, r10, -4
|
||||
lwzx r12, r6, r10
|
||||
stwx r12, r11, r10
|
||||
bgt+ @DiagInfo_copyloop
|
||||
bgt @DiagInfo_copyloop
|
||||
|
||||
@DiagInfo_skipcopy
|
||||
|
||||
@ -405,11 +405,11 @@ InitBuiltin
|
||||
lwz r8, KDP.NanoKernelInfo + NKNanoKernelInfo.ConfigFlags(r1)
|
||||
|
||||
if &TYPE('NKShowLog') = 'UNDEFINED'
|
||||
blt- @no_screen_log
|
||||
blt @no_screen_log
|
||||
lwz r8, NKConfigurationInfo.DebugFlags(r9)
|
||||
rlwinm. r8, r8, 0, NKConfigurationInfo.LogFlagBit, NKConfigurationInfo.LogFlagBit
|
||||
lwz r8, KDP.NanoKernelInfo + NKNanoKernelInfo.ConfigFlags(r1)
|
||||
beq- @no_screen_log
|
||||
beq @no_screen_log
|
||||
endif
|
||||
|
||||
; Enable the screen log
|
||||
@ -741,7 +741,7 @@ InitBuiltin
|
||||
@LowMem_zeroloop
|
||||
addic. r9, r9, -4
|
||||
stwx r0, r10, r9
|
||||
bne+ @LowMem_zeroloop
|
||||
bne @LowMem_zeroloop
|
||||
|
||||
|
||||
; Populate from LowMemInit "key-value" table.
|
||||
@ -751,7 +751,7 @@ InitBuiltin
|
||||
lwzux r9, r11, r3 ; get first word and point r11 at it
|
||||
@LowMem_setloop
|
||||
mr. r9, r9
|
||||
beq- @LowMem_done
|
||||
beq @LowMem_done
|
||||
lwzu r12, 4(r11)
|
||||
stwx r12, r10, r9
|
||||
lwzu r9, 4(r11)
|
||||
@ -772,7 +772,7 @@ InitBuiltin
|
||||
lwz r11, IRP.HWInfo + NKHWInfo.Signature(r11)
|
||||
lisori r12, 'Hnfo'
|
||||
cmplw r12, r11
|
||||
beq- FinishInitBuiltin
|
||||
beq FinishInitBuiltin
|
||||
|
||||
|
||||
|
||||
@ -789,41 +789,41 @@ InitBuiltin
|
||||
; check for several (some unknown) pre-7410 CPUs, and load their info
|
||||
cmpwi r12, 0x0001 ; 601
|
||||
addi r11, r11, ProcessorInfoTable - NKTop
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x0003 ; 603
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x0004 ; 604
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x0006 ; 603e
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x0007 ; 750FX
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x0008 ; 750
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x0009 ; ???
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
cmpwi r12, 0x000a ; ???
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x000c ; 7400
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
cmpwi r12, 0x000d ; ???
|
||||
addi r11, r11, NKProcessorInfo.OvrEnd - NKProcessorInfo.Ovr
|
||||
beq- OverrideProcessorInfo
|
||||
beq OverrideProcessorInfo
|
||||
|
||||
|
||||
|
||||
@ -849,17 +849,17 @@ new_world_0x60c
|
||||
lwzu r12, -0x0008(r10)
|
||||
subf r9, r12, r21
|
||||
cmplw r9, r11
|
||||
bge- new_world_0x624
|
||||
bge new_world_0x624
|
||||
mr r11, r9
|
||||
|
||||
new_world_0x624
|
||||
cmplw r11, r15
|
||||
ble- new_world_0x634
|
||||
ble new_world_0x634
|
||||
mr r13, r12
|
||||
mr r15, r11
|
||||
|
||||
new_world_0x634
|
||||
bdnz+ new_world_0x60c
|
||||
bdnz new_world_0x60c
|
||||
addi r12, r22, -0x01
|
||||
neg r11, r13
|
||||
and r12, r11, r12
|
||||
@ -874,14 +874,14 @@ new_world_0x634
|
||||
new_world_0x660
|
||||
subic. r10, r10, 4
|
||||
stwx r11, r21, r10
|
||||
bne+ new_world_0x660
|
||||
bne new_world_0x660
|
||||
dcbz 0, r21
|
||||
|
||||
new_world_0x670
|
||||
addi r10, r10, 0x01
|
||||
lbzx r11, r21, r10
|
||||
cmpwi r11, 0x00
|
||||
beq+ new_world_0x670
|
||||
beq new_world_0x670
|
||||
sth r10, 0x0f3c(r1)
|
||||
sth r10, 0x0f3e(r1)
|
||||
sth r10, 0x0f46(r1)
|
||||
@ -899,7 +899,7 @@ new_world_0x6a4
|
||||
cmpw r10, r21
|
||||
rlwinm r9, r10, 9, 7, 19
|
||||
tlbie r9
|
||||
bne+ new_world_0x6a4
|
||||
bne new_world_0x6a4
|
||||
sync
|
||||
isync
|
||||
lwz r11, 0x064c(r1)
|
||||
@ -914,7 +914,7 @@ new_world_0x6dc
|
||||
dcbst 0, r20
|
||||
sync
|
||||
icbi 0, r20
|
||||
bdnz+ new_world_0x6dc
|
||||
bdnz new_world_0x6dc
|
||||
sync
|
||||
isync
|
||||
stw r0, 0x0f34(r1)
|
||||
@ -927,12 +927,12 @@ new_world_0x6dc
|
||||
new_world_0x714
|
||||
addi r17, r17, 0x200
|
||||
cmplw r17, r15
|
||||
bge- new_world_0x734
|
||||
bge new_world_0x734
|
||||
|
||||
new_world_0x720
|
||||
mtlr r20
|
||||
blrl
|
||||
ble+ new_world_0x714
|
||||
ble new_world_0x714
|
||||
addi r12, r17, -0x200
|
||||
stw r12, 0x0f34(r1)
|
||||
|
||||
@ -948,12 +948,12 @@ new_world_0x734
|
||||
new_world_0x750
|
||||
add r17, r17, r18
|
||||
cmplw r17, r15
|
||||
bge- new_world_0x774
|
||||
bge new_world_0x774
|
||||
|
||||
new_world_0x75c
|
||||
mtlr r20
|
||||
blrl
|
||||
ble+ new_world_0x750
|
||||
ble new_world_0x750
|
||||
subf r17, r18, r17
|
||||
divwu r12, r17, r18
|
||||
sth r12, 0x0f4e(r1)
|
||||
@ -972,14 +972,14 @@ new_world_0x774
|
||||
new_world_0x798
|
||||
lhz r12, 0x0f4a(r1)
|
||||
cmplw r14, r12
|
||||
ble- new_world_0x7bc
|
||||
ble new_world_0x7bc
|
||||
srwi r14, r14, 1
|
||||
subf r19, r14, r19
|
||||
|
||||
new_world_0x7ac
|
||||
mtlr r20
|
||||
blrl
|
||||
ble+ new_world_0x798
|
||||
ble new_world_0x798
|
||||
slwi r12, r14, 1
|
||||
|
||||
new_world_0x7bc
|
||||
@ -998,7 +998,7 @@ new_world_0x7e4
|
||||
add r17, r17, r18
|
||||
lis r12, 0x3f
|
||||
cmplw r17, r12
|
||||
bge- new_world_0x82c
|
||||
bge new_world_0x82c
|
||||
|
||||
new_world_0x7f4
|
||||
mtlr r20
|
||||
@ -1011,7 +1011,7 @@ new_world_0x7f4
|
||||
rlwinm r12, r12, 0, 28, 26
|
||||
mtmsr r12
|
||||
isync
|
||||
ble+ new_world_0x7e4
|
||||
ble new_world_0x7e4
|
||||
subf r17, r18, r17
|
||||
divwu r12, r17, r18
|
||||
sth r12, 0x0f50(r1)
|
||||
@ -1029,7 +1029,7 @@ new_world_0x848
|
||||
add r17, r17, r18
|
||||
lis r12, 0x200
|
||||
cmplw r17, r12
|
||||
bge- new_world_0x890
|
||||
bge new_world_0x890
|
||||
|
||||
new_world_0x858
|
||||
mtlr r20
|
||||
@ -1042,7 +1042,7 @@ new_world_0x858
|
||||
rlwinm r12, r12, 0, 28, 26
|
||||
mtmsr r12
|
||||
isync
|
||||
ble+ new_world_0x848
|
||||
ble new_world_0x848
|
||||
subf r17, r18, r17
|
||||
divwu r12, r17, r18
|
||||
sth r12, 0x0f52(r1)
|
||||
@ -1079,7 +1079,7 @@ new_world_0x890
|
||||
blrl
|
||||
sth r11, 0x0f40(r1)
|
||||
cmpwi r11, 0x01
|
||||
beq- skip_cache_hackery_never
|
||||
beq skip_cache_hackery_never
|
||||
lwz r11, 0x064c(r1)
|
||||
li r12, (copied_code_2_end - copied_code_2) / 4
|
||||
mtctr r12
|
||||
@ -1092,13 +1092,13 @@ new_world_0x924
|
||||
dcbst 0, r20
|
||||
sync
|
||||
icbi 0, r20
|
||||
bdnz+ new_world_0x924
|
||||
bdnz new_world_0x924
|
||||
sync
|
||||
isync
|
||||
subf r12, r21, r20
|
||||
mulli r12, r12, 0x80
|
||||
cmplw r12, r15
|
||||
bge- new_world_0x958
|
||||
bge new_world_0x958
|
||||
mr r15, r12
|
||||
|
||||
new_world_0x958
|
||||
@ -1115,7 +1115,7 @@ new_world_0x968
|
||||
dcbst 0, r12
|
||||
sync
|
||||
icbi 0, r12
|
||||
bne+ new_world_0x968
|
||||
bne new_world_0x968
|
||||
sync
|
||||
isync
|
||||
stw r0, 0x0f38(r1)
|
||||
@ -1128,12 +1128,12 @@ new_world_0x968
|
||||
new_world_0x9a8
|
||||
addi r17, r17, 0x200
|
||||
cmplw r17, r15
|
||||
bge- new_world_0x9c8
|
||||
bge new_world_0x9c8
|
||||
|
||||
new_world_0x9b4
|
||||
mtlr r20
|
||||
blrl
|
||||
ble+ new_world_0x9a8
|
||||
ble new_world_0x9a8
|
||||
addi r12, r17, -0x200
|
||||
stw r12, 0x0f38(r1)
|
||||
|
||||
@ -1149,12 +1149,12 @@ new_world_0x9c8
|
||||
new_world_0x9e4
|
||||
add r17, r17, r18
|
||||
cmplw r17, r15
|
||||
bge- new_world_0xa08
|
||||
bge new_world_0xa08
|
||||
|
||||
new_world_0x9f0
|
||||
mtlr r20
|
||||
blrl
|
||||
ble+ new_world_0x9e4
|
||||
ble new_world_0x9e4
|
||||
subf r17, r18, r17
|
||||
divwu r12, r17, r18
|
||||
sth r12, 0x0f4c(r1)
|
||||
@ -1170,7 +1170,7 @@ new_world_0xa10
|
||||
dcbst 0, r12
|
||||
sync
|
||||
icbi 0, r12
|
||||
bne+ new_world_0xa10
|
||||
bne new_world_0xa10
|
||||
sync
|
||||
isync
|
||||
lwz r17, 0x0f38(r1)
|
||||
@ -1203,9 +1203,9 @@ new_world_0xa54
|
||||
dcbst r12, r14
|
||||
sync
|
||||
icbi r12, r14
|
||||
bne+ new_world_0xa54
|
||||
bne new_world_0xa54
|
||||
cmpw r12, r13
|
||||
bne+ new_world_0xa4c
|
||||
bne new_world_0xa4c
|
||||
sync
|
||||
isync
|
||||
mr r19, r18
|
||||
@ -1218,14 +1218,14 @@ new_world_0xa54
|
||||
new_world_0xac8
|
||||
li r12, 0x08
|
||||
cmplw r14, r12
|
||||
ble- new_world_0xaec
|
||||
ble new_world_0xaec
|
||||
srwi r14, r14, 1
|
||||
subf r19, r14, r19
|
||||
|
||||
new_world_0xadc
|
||||
mtlr r20
|
||||
blrl
|
||||
ble+ new_world_0xac8
|
||||
ble new_world_0xac8
|
||||
slwi r12, r14, 1
|
||||
|
||||
new_world_0xaec
|
||||
@ -1245,9 +1245,9 @@ new_world_0xb04
|
||||
addi r14, r14, 0x04
|
||||
lwzu r9, 0x0004(r11)
|
||||
stwx r9, r12, r14
|
||||
bne+ new_world_0xb04
|
||||
bne new_world_0xb04
|
||||
cmpw r12, r13
|
||||
bne+ new_world_0xafc
|
||||
bne new_world_0xafc
|
||||
|
||||
skip_cache_hackery_never
|
||||
; Clearly can't just fall through
|
||||
@ -1275,21 +1275,21 @@ copied_code_1_0x18
|
||||
lbzx r12, r19, r11
|
||||
add r12, r12, r12
|
||||
add r11, r11, r18
|
||||
bdnz+ copied_code_1_0x18
|
||||
bdnz copied_code_1_0x18
|
||||
subf r19, r13, r19
|
||||
mfdec r12
|
||||
neg r12, r12
|
||||
cmplw r12, r16
|
||||
bgt- copied_code_1_0x54
|
||||
bgt copied_code_1_0x54
|
||||
mr r16, r12
|
||||
|
||||
copied_code_1_0x54
|
||||
srwi r11, r12, 7
|
||||
subf r12, r11, r12
|
||||
cmpw r12, r16
|
||||
blelr-
|
||||
blelr
|
||||
addic. r10, r10, -0x01
|
||||
bgt+ copied_code_1_0x4
|
||||
bgt copied_code_1_0x4
|
||||
cmpw r12, r16
|
||||
blr
|
||||
isync
|
||||
@ -1336,12 +1336,12 @@ copied_code_2_0x1c
|
||||
mtlr r12
|
||||
blrl
|
||||
add r11, r11, r18
|
||||
bdnz+ copied_code_2_0x1c
|
||||
bdnz copied_code_2_0x1c
|
||||
subf r19, r13, r19
|
||||
mfdec r12
|
||||
neg r12, r12
|
||||
cmplw r12, r16
|
||||
bgt- copied_code_2_0x60
|
||||
bgt copied_code_2_0x60
|
||||
mr r16, r12
|
||||
|
||||
copied_code_2_0x60
|
||||
@ -1349,9 +1349,9 @@ copied_code_2_0x60
|
||||
subf r12, r11, r12
|
||||
cmpw r12, r16
|
||||
mtlr r9
|
||||
blelr-
|
||||
blelr
|
||||
addic. r10, r10, -0x01
|
||||
bgt+ copied_code_2_0x8
|
||||
bgt copied_code_2_0x8
|
||||
cmpw r12, r16
|
||||
blr
|
||||
isync
|
||||
|
@ -52,24 +52,24 @@ kcCacheDispatch
|
||||
|
||||
clrlwi r8, r3, 16 ; bad selector
|
||||
cmplwi r8, 2
|
||||
bgt- @fail_bad_selector
|
||||
bgt @fail_bad_selector
|
||||
|
||||
lwz r8, KDP.ProcessorInfo + NKProcessorInfo.ProcessorFlags(r1)
|
||||
andi. r8, r8, 1 << NKProcessorInfo.hasL2CR
|
||||
beq- CacheCallFailNoL2 ; no L2CR => fail (what about 601?)
|
||||
beq CacheCallFailNoL2 ; no L2CR => fail (what about 601?)
|
||||
|
||||
rlwinm. r9, r3, 0, 2, 2 ; if flagged, get cache state in r23
|
||||
bnel- CacheCallGetInfoForReturnValue ; (otherwise, r23 is undefined)
|
||||
bnel CacheCallGetInfoForReturnValue ; (otherwise, r23 is undefined)
|
||||
|
||||
srwi r8, r3, 30 ; cannot enable *and* disable
|
||||
cmpwi r8, 3
|
||||
beq- CacheCallFailBadFlags
|
||||
beq CacheCallFailBadFlags
|
||||
|
||||
clrlwi r8, r3, 16 ; go to main code for level 1/2 cache
|
||||
cmplwi r8, 1
|
||||
beq- CacheCallDispatchL1
|
||||
beq CacheCallDispatchL1
|
||||
cmplwi r8, 2
|
||||
beq- CacheCallDispatchL2
|
||||
beq CacheCallDispatchL2
|
||||
|
||||
@fail_bad_selector ; fall through => bad selector
|
||||
lisori r3, -2
|
||||
@ -88,10 +88,10 @@ kcCacheDispatch
|
||||
CacheCallDispatchL1
|
||||
|
||||
rlwinm. r9, r3, 0, 1, 1
|
||||
bne- CacheCallL1DisableSelected
|
||||
bne CacheCallL1DisableSelected
|
||||
|
||||
rlwinm. r9, r3, 0, 0, 0
|
||||
bne- CacheCallL1EnableSelected
|
||||
bne CacheCallL1EnableSelected
|
||||
|
||||
rlwinm. r9, r3, 0, 3, 3 ; ???
|
||||
|
||||
@ -142,18 +142,18 @@ CacheCallL1EnableSelected
|
||||
CacheCallDispatchL2
|
||||
|
||||
rlwinm. r9, r3, 0, 1, 1
|
||||
bne- CacheCallL2DisableSelected
|
||||
bne CacheCallL2DisableSelected
|
||||
|
||||
rlwinm. r9, r3, 0, 0, 0
|
||||
bne- CacheCallL2EnableSelected
|
||||
bne CacheCallL2EnableSelected
|
||||
|
||||
rlwinm. r9, r3, 0, 3, 3
|
||||
bne- CacheCallL2Flag3 ; goes to DisableSelected
|
||||
bne CacheCallL2Flag3 ; goes to DisableSelected
|
||||
|
||||
rlwinm. r9, r3, 0, 2, 2
|
||||
;bne removed?
|
||||
|
||||
bne- CacheCallReturn
|
||||
bne CacheCallReturn
|
||||
|
||||
|
||||
|
||||
@ -175,11 +175,11 @@ CacheCallL2EnableSelected
|
||||
mfspr r21, l2cr ; fail if L2CR[L2E] already set
|
||||
sync
|
||||
andis. r21, r21, 0x8000
|
||||
bne- CacheCallReturn
|
||||
bne CacheCallReturn
|
||||
|
||||
lwz r8, KDP.ProcessorInfo + NKProcessorInfo.ProcessorL2DSize(r1)
|
||||
and. r8, r8, r8
|
||||
beq- CacheCallFailNoL2 ; fail if zero-sized cache reported
|
||||
beq CacheCallFailNoL2 ; fail if zero-sized cache reported
|
||||
|
||||
mfspr r21, hid0 ; save HID0
|
||||
|
||||
@ -190,7 +190,7 @@ CacheCallL2EnableSelected
|
||||
addi r8, r1, PSA.ProcessorState
|
||||
lwz r8, NKProcessorState.saveL2CR(r8)
|
||||
and. r8, r8, r8
|
||||
beq- CacheCallReturn ; fail if zero L2CR was saved?
|
||||
beq CacheCallReturn ; fail if zero L2CR was saved?
|
||||
sync
|
||||
|
||||
lis r9, 0x0020 ; set L2CR[GI] (global invalidate)
|
||||
@ -201,7 +201,7 @@ CacheCallL2EnableSelected
|
||||
mfspr r8, l2cr ; check L2CR[IP] (invalidate progress)
|
||||
sync
|
||||
andi. r9, r8, 1
|
||||
bne+ @inval_loop
|
||||
bne @inval_loop
|
||||
|
||||
lis r9, 0x0020 ; clear L2CR[GI]
|
||||
andc r8, r8, r9
|
||||
@ -233,7 +233,7 @@ CacheCallL2DisableSelected
|
||||
mfspr r22, l2cr ; return if already disabled per L2CR[L2E]
|
||||
sync
|
||||
andis. r22, r22, 0x8000
|
||||
beq- CacheCallReturn
|
||||
beq CacheCallReturn
|
||||
|
||||
bl FlushCaches
|
||||
|
||||
@ -298,9 +298,9 @@ CacheCallGetInfoForReturnValue
|
||||
clrlwi r8, r3, 16
|
||||
|
||||
cmplwi r8, 1
|
||||
beq- @level1
|
||||
beq @level1
|
||||
cmplwi r8, 2
|
||||
beq- @level2
|
||||
beq @level2
|
||||
|
||||
lisori r3, -5
|
||||
b CacheCallReturnWithoutFlags
|
||||
@ -308,7 +308,7 @@ CacheCallGetInfoForReturnValue
|
||||
@level1
|
||||
mfspr r21, hid0
|
||||
rlwinm. r21, r21, 12, 4, 5
|
||||
beq- @all_off
|
||||
beq @all_off
|
||||
|
||||
oris r23, r21, 0x8000
|
||||
blr
|
||||
@ -316,7 +316,7 @@ CacheCallGetInfoForReturnValue
|
||||
@level2
|
||||
lwz r8, KDP.ProcessorInfo + NKProcessorInfo.ProcessorL2DSize(r1)
|
||||
and. r8, r8, r8
|
||||
beq+ CacheCallFailNoL2
|
||||
beq CacheCallFailNoL2
|
||||
|
||||
mfspr r21, hid0 ; same bits as above
|
||||
rlwinm r21, r21, 12, 4, 5
|
||||
@ -327,7 +327,7 @@ CacheCallGetInfoForReturnValue
|
||||
|
||||
mfspr r22, l2cr ; then again, both L2s are off if L2CR[L2E] is cleared
|
||||
andis. r22, r22, 0x8000
|
||||
beq- @all_off
|
||||
beq @all_off
|
||||
|
||||
or r23, r21, r22
|
||||
blr
|
||||
@ -369,12 +369,12 @@ FlushCaches
|
||||
lhz r25, KDP.ProcessorInfo + NKProcessorInfo.DataCacheLineSize(r1)
|
||||
and. r25, r25, r25 ; r25 = L1-D line size
|
||||
cntlzw r8, r25
|
||||
beq- @return
|
||||
beq @return
|
||||
subfic r9, r8, 31 ; r9 = logb(L1-D line size)
|
||||
|
||||
lwz r8, KDP.ProcessorInfo + NKProcessorInfo.DataCacheTotalSize(r1)
|
||||
and. r8, r8, r8 ; r8 = L1-D size
|
||||
beq- @return
|
||||
beq @return
|
||||
|
||||
lwz r24, KDP.ProcessorInfo + NKProcessorInfo.ProcessorFlags(r1)
|
||||
mtcr r24
|
||||
@ -397,28 +397,28 @@ FlushCaches
|
||||
|
||||
@loop_L1
|
||||
lwzux r9, r8, r25
|
||||
bdnz+ @loop_L1
|
||||
bdnz @loop_L1
|
||||
|
||||
|
||||
; Flush level 2 (very similar to above)
|
||||
|
||||
lwz r24, KDP.ProcessorInfo + NKProcessorInfo.ProcessorFlags(r1)
|
||||
andi. r24, r24, 1 << NKProcessorInfo.hasL2CR
|
||||
beq- @return ; return if L2CR unavailable
|
||||
beq @return ; return if L2CR unavailable
|
||||
|
||||
mfspr r24, l2cr
|
||||
andis. r24, r24, 0x8000
|
||||
beq- @return ; return if L2 off (per L2CR[L2E])
|
||||
beq @return ; return if L2 off (per L2CR[L2E])
|
||||
|
||||
lhz r25, KDP.ProcessorInfo + NKProcessorInfo.ProcessorL2DBlockSize(r1)
|
||||
and. r25, r25, r25 ; r25 = L2-D line size
|
||||
cntlzw r8, r25
|
||||
beq- @return
|
||||
beq @return
|
||||
subfic r9, r8, 31 ; r9 = logb(L2-D line size)
|
||||
|
||||
lwz r8, KDP.ProcessorInfo + NKProcessorInfo.ProcessorL2DSize(r1)
|
||||
and. r8, r8, r8 ; r8 = L2-D size
|
||||
beq- @return
|
||||
beq @return
|
||||
|
||||
srw r8, r8, r9
|
||||
mtctr r8 ; loop counter = cache/line
|
||||
@ -437,7 +437,7 @@ FlushCaches
|
||||
|
||||
@loop_L2
|
||||
lwzux r9, r8, r25
|
||||
bdnz+ @loop_L2
|
||||
bdnz @loop_L2
|
||||
|
||||
rlwinm r24, r24, 0, 10, 8
|
||||
mtspr l2cr, r24 ; clear L2CR[DO] (reenables L2-I)
|
||||
@ -474,7 +474,7 @@ FlushCaches
|
||||
mfspr r8, msscr0
|
||||
sync
|
||||
andis. r8, r8, 0x0080
|
||||
bne+ @loop_msscr0
|
||||
bne @loop_msscr0
|
||||
|
||||
|
||||
; Flush level 2: set L2CR[4] and spin until it clears
|
||||
@ -487,7 +487,7 @@ FlushCaches
|
||||
mfspr r8, l2cr
|
||||
sync
|
||||
andi. r8, r8, 0x0800
|
||||
bne+ @loop_l2cr
|
||||
bne @loop_l2cr
|
||||
|
||||
|
||||
; Jump back up to main code path to return
|
||||
@ -524,6 +524,6 @@ FlushL1CacheUsingMSSCR0
|
||||
mfspr r8, msscr0
|
||||
sync
|
||||
andis. r8, r8, 0x0080
|
||||
bne+ @loop_msscr0
|
||||
bne @loop_msscr0
|
||||
|
||||
blr
|
||||
|
@ -18,9 +18,9 @@ prints ; OUTSIDE REFERER
|
||||
|
||||
cmpwi cr7, r28, 0x00
|
||||
andi. r29, r29, 0x02
|
||||
beq- cr7, prints_skip_serial
|
||||
beq cr7, prints_skip_serial
|
||||
crmove 30, 2
|
||||
beq- PrintS_skip_serial
|
||||
beq PrintS_skip_serial
|
||||
mfmsr r31
|
||||
bl serial_io
|
||||
bl serial_flush
|
||||
@ -32,24 +32,24 @@ prints_next_char
|
||||
bl serial_busywait
|
||||
lbzu r29, 0x0001(r8)
|
||||
cmpwi r29, 0x00
|
||||
beq- print_common
|
||||
beq print_common
|
||||
cmpwi r29, 10
|
||||
beq- PrintS_newline
|
||||
beq PrintS_newline
|
||||
cmpwi r29, 13
|
||||
beq- PrintS_newline
|
||||
beq PrintS_newline
|
||||
cmpwi r29, '\\'
|
||||
beq- PrintS_escape_code
|
||||
beq PrintS_escape_code
|
||||
cmpwi r29, '^'
|
||||
bne- PrintS_normal_char
|
||||
bne PrintS_normal_char
|
||||
|
||||
prints_escape_code
|
||||
lbzu r29, 0x0001(r8)
|
||||
cmpwi r29, 'n'
|
||||
beq- PrintS_newline
|
||||
beq PrintS_newline
|
||||
cmpwi r29, 'r'
|
||||
beq- PrintS_newline
|
||||
beq PrintS_newline
|
||||
cmpwi r29, 'b'
|
||||
bne- PrintS_literal_backslash_or_caret
|
||||
bne PrintS_literal_backslash_or_caret
|
||||
li r29, 0x07
|
||||
b PrintS_normal_char
|
||||
|
||||
@ -62,7 +62,7 @@ prints_normal_char
|
||||
|
||||
; r1 = kdp
|
||||
bl ScreenConsole_putchar
|
||||
beq- cr7, prints_0xe4
|
||||
beq cr7, prints_0xe4
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -86,7 +86,7 @@ prints_newline
|
||||
|
||||
; r1 = kdp
|
||||
bl ScreenConsole_redraw
|
||||
beq- cr7, prints_0x13c
|
||||
beq cr7, prints_0x13c
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -98,7 +98,7 @@ prints_0x118
|
||||
lbz r29, 0x0002(r28)
|
||||
eieio
|
||||
andi. r29, r29, 0x04
|
||||
beq+ PrintS_0x118
|
||||
beq PrintS_0x118
|
||||
li r29, 0x0a
|
||||
stb r29, 0x0006(r28)
|
||||
eieio
|
||||
@ -111,7 +111,7 @@ prints_0x13c
|
||||
|
||||
|
||||
print_common ; OUTSIDE REFERER
|
||||
beq- cr7, print_common_0x8c
|
||||
beq cr7, print_common_0x8c
|
||||
mtmsr r31
|
||||
isync
|
||||
lwz r29, -0x0438(r1)
|
||||
@ -125,14 +125,14 @@ print_common ; OUTSIDE REFERER
|
||||
print_common_0x28
|
||||
mfspr r30, dec
|
||||
subf. r30, r29, r30
|
||||
ble- print_common_0x50
|
||||
ble print_common_0x50
|
||||
li r30, 0x01
|
||||
stb r30, 0x0002(r28)
|
||||
eieio
|
||||
lbz r30, 0x0002(r28)
|
||||
eieio
|
||||
andi. r30, r30, 0x01
|
||||
beq+ print_common_0x28
|
||||
beq print_common_0x28
|
||||
|
||||
print_common_0x50
|
||||
sync
|
||||
@ -141,7 +141,7 @@ print_common_0x50
|
||||
mfspr r30, pvr
|
||||
rlwinm. r30, r30, 0, 0, 14
|
||||
li r31, 0x00
|
||||
beq- print_common_0x78
|
||||
beq print_common_0x78
|
||||
mtspr dbat3u, r31
|
||||
mtspr dbat3l, r31
|
||||
b print_common_0x80
|
||||
@ -195,27 +195,27 @@ printd ; OUTSIDE REFERER
|
||||
|
||||
cmpwi cr7, r28, 0x00
|
||||
andi. r29, r29, 0x02
|
||||
beq- cr7, printd_0x58
|
||||
beq cr7, printd_0x58
|
||||
crmove 30, 2
|
||||
beq- Printd_0x58
|
||||
beq Printd_0x58
|
||||
bl serial_io
|
||||
bl serial_flush
|
||||
|
||||
printd_0x58
|
||||
cmpwi r8, 0x00
|
||||
li r25, 0x2d
|
||||
blt- Printd_0x9c
|
||||
blt Printd_0x9c
|
||||
|
||||
printd_0x64
|
||||
mr. r24, r8
|
||||
li r25, 0x30
|
||||
beq- Printd_0x9c
|
||||
beq Printd_0x9c
|
||||
lis r24, 0x3b9a
|
||||
ori r24, r24, 0xca00
|
||||
|
||||
printd_0x78
|
||||
divw. r25, r8, r24
|
||||
bne- Printd_0x8c
|
||||
bne Printd_0x8c
|
||||
li r25, 0x0a
|
||||
divw r24, r24, r25
|
||||
b Printd_0x78
|
||||
@ -232,7 +232,7 @@ printd_0x9c
|
||||
|
||||
; r1 = kdp
|
||||
bl ScreenConsole_putchar
|
||||
beq- cr7, printd_0xc8
|
||||
beq cr7, printd_0xc8
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -243,19 +243,19 @@ printd_0x9c
|
||||
|
||||
printd_0xc8
|
||||
cmpwi r8, 0x00
|
||||
bge- Printd_0xd8
|
||||
bge Printd_0xd8
|
||||
neg r8, r8
|
||||
b Printd_0x64
|
||||
|
||||
printd_0xd8
|
||||
li r25, 0x0a
|
||||
divw. r24, r24, r25
|
||||
bne+ Printd_0x8c
|
||||
bne Printd_0x8c
|
||||
li r29, 0x20
|
||||
|
||||
; r1 = kdp
|
||||
bl ScreenConsole_putchar
|
||||
beq- cr7, printd_0x120
|
||||
beq cr7, printd_0x120
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -264,7 +264,7 @@ printd_0xfc
|
||||
lbz r30, 0x0002(r28)
|
||||
eieio
|
||||
andi. r30, r30, 0x04
|
||||
beq+ Printd_0xfc
|
||||
beq Printd_0xfc
|
||||
li r29, 0x20
|
||||
stb r29, 0x0006(r28)
|
||||
eieio
|
||||
@ -352,9 +352,9 @@ print_digity_common ; OUTSIDE REFERER
|
||||
|
||||
cmpwi cr7, r28, 0x00
|
||||
andi. r29, r29, 0x02
|
||||
beq- cr7, print_digity_common_0x40
|
||||
beq cr7, print_digity_common_0x40
|
||||
crmove 30, 2
|
||||
beq- print_digity_common_0x40
|
||||
beq print_digity_common_0x40
|
||||
bl serial_io
|
||||
bl serial_flush
|
||||
|
||||
@ -364,7 +364,7 @@ print_digity_common_0x40
|
||||
rlwimi r25, r8, 4, 28, 31
|
||||
rotlwi r8, r8, 0x04
|
||||
cmpwi r25, 0x39
|
||||
ble- print_digity_common_0x5c
|
||||
ble print_digity_common_0x5c
|
||||
addi r25, r25, 0x27
|
||||
|
||||
print_digity_common_0x5c
|
||||
@ -372,7 +372,7 @@ print_digity_common_0x5c
|
||||
|
||||
; r1 = kdp
|
||||
bl ScreenConsole_putchar
|
||||
beq- cr7, print_digity_common_0x84
|
||||
beq cr7, print_digity_common_0x84
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -384,13 +384,13 @@ print_digity_common_0x5c
|
||||
print_digity_common_0x84
|
||||
addi r24, r24, -0x01
|
||||
mr. r24, r24
|
||||
bne+ print_digity_common_0x40
|
||||
bne- cr6, print_digity_common_0xd0
|
||||
bne print_digity_common_0x40
|
||||
bne cr6, print_digity_common_0xd0
|
||||
li r29, 0x20
|
||||
|
||||
; r1 = kdp
|
||||
bl ScreenConsole_putchar
|
||||
beq- cr7, print_digity_common_0xd0
|
||||
beq cr7, print_digity_common_0xd0
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -399,7 +399,7 @@ print_digity_common_0xac
|
||||
lbz r30, 0x0002(r28)
|
||||
eieio
|
||||
andi. r30, r30, 0x04
|
||||
beq+ print_digity_common_0xac
|
||||
beq print_digity_common_0xac
|
||||
li r29, 0x20
|
||||
stb r29, 0x0006(r28)
|
||||
eieio
|
||||
@ -423,7 +423,7 @@ getchar ; OUTSIDE REFERER
|
||||
lwz r28, -0x0900(r1)
|
||||
cmpwi cr7, r28, 0x00
|
||||
li r8, -0x01
|
||||
beq+ cr7, print_return
|
||||
beq cr7, print_return
|
||||
|
||||
_Lock PSA.DbugLock, scratch1=r30, scratch2=r31
|
||||
|
||||
@ -434,7 +434,7 @@ getchar ; OUTSIDE REFERER
|
||||
lbz r30, 0x0002(r28)
|
||||
eieio
|
||||
andi. r30, r30, 0x01
|
||||
beq+ print_common
|
||||
beq print_common
|
||||
lbz r8, 0x0006(r28)
|
||||
b print_common
|
||||
|
||||
@ -459,9 +459,9 @@ printc ; OUTSIDE REFERER
|
||||
|
||||
cmpwi cr7, r28, 0x00
|
||||
andi. r29, r29, 0x02
|
||||
beq- cr7, printc_0x58
|
||||
beq cr7, printc_0x58
|
||||
crmove 30, 2
|
||||
beq- Printc_0x58
|
||||
beq Printc_0x58
|
||||
bl serial_io
|
||||
bl serial_flush
|
||||
|
||||
@ -470,7 +470,7 @@ printc_0x58
|
||||
|
||||
; r1 = kdp
|
||||
bl ScreenConsole_putchar
|
||||
beq- cr7, printc_0x90
|
||||
beq cr7, printc_0x90
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -479,7 +479,7 @@ printc_0x70
|
||||
lbz r30, 0x0002(r28)
|
||||
eieio
|
||||
andi. r30, r30, 0x04
|
||||
beq+ Printc_0x70
|
||||
beq Printc_0x70
|
||||
stb r8, 0x0006(r28)
|
||||
eieio
|
||||
mtmsr r31
|
||||
@ -602,7 +602,7 @@ serial_io ; OUTSIDE REFERER
|
||||
mfspr r30, pvr
|
||||
rlwinm. r30, r30, 0, 0, 14
|
||||
rlwinm r29, r28, 0, 0, 14
|
||||
beq- serial_io_0x38
|
||||
beq serial_io_0x38
|
||||
li r30, 0x03
|
||||
or r30, r30, r29
|
||||
li r31, 0x3a
|
||||
@ -631,7 +631,7 @@ serial_io_0x50
|
||||
; See disclaimer above.
|
||||
|
||||
serial_busywait ; OUTSIDE
|
||||
beqlr- cr7
|
||||
beqlr cr7
|
||||
ori r30, r31, 0x10
|
||||
mtmsr r30
|
||||
isync
|
||||
@ -640,7 +640,7 @@ serial_busywait_0x10
|
||||
lbz r30, 0x0002(r28)
|
||||
eieio
|
||||
andi. r30, r30, 0x04
|
||||
beq+ serial_busywait_0x10
|
||||
beq serial_busywait_0x10
|
||||
mtmsr r31
|
||||
isync
|
||||
blr
|
||||
|
@ -32,7 +32,7 @@ InitIDIndex
|
||||
|
||||
mr. r22, r8
|
||||
stw r8, PSA.IndexPtr(r1)
|
||||
beq+ Local_Panic
|
||||
beq Local_Panic
|
||||
|
||||
li r9, 0
|
||||
stw r9, KDP.NanoKernelInfo + NKNanoKernelInfo.IDCtr(r1)
|
||||
@ -50,7 +50,7 @@ InitIDIndex
|
||||
|
||||
cmpwi r8, 0
|
||||
stw r8, Index.IDsPtr(r22)
|
||||
beq+ Local_Panic
|
||||
beq Local_Panic
|
||||
|
||||
mtlr r23
|
||||
|
||||
@ -82,24 +82,24 @@ MakeID
|
||||
addi r20, r18, 0x08
|
||||
cmpwi r18, 0x00
|
||||
add r22, r22, r20
|
||||
bne- @_48
|
||||
bne @_48
|
||||
li r19, 0x00
|
||||
b @_c
|
||||
|
||||
@_3c
|
||||
add r20, r20, r19
|
||||
cmpw r20, r21
|
||||
beq- @_70
|
||||
beq @_70
|
||||
|
||||
@_48
|
||||
lbz r23, 0x0000(r22)
|
||||
cmpwi r23, 0x00
|
||||
beq- @_f0
|
||||
beq @_f0
|
||||
addi r19, r19, 0x01
|
||||
cmpwi cr1, r19, 0x1fa
|
||||
addi r22, r22, 0x08
|
||||
lhz r20, 0x0000(r18)
|
||||
blt+ cr1, @_3c
|
||||
blt cr1, @_3c
|
||||
addi r19, r20, 0x200
|
||||
b @_c
|
||||
|
||||
@ -111,7 +111,7 @@ MakeID
|
||||
addi r19, r19, 0x200
|
||||
rlwinm. r20, r19, 25, 23, 29
|
||||
li r8, 0x00
|
||||
beqlr-
|
||||
beqlr
|
||||
mflr r23
|
||||
li r8, 0xfd8
|
||||
|
||||
@ -123,7 +123,7 @@ MakeID
|
||||
mr. r18, r8
|
||||
mtlr r23
|
||||
li r8, 0x00
|
||||
beqlr-
|
||||
beqlr
|
||||
lwz r17, -0x0a98(r1)
|
||||
lhz r19, 0x0002(r17)
|
||||
addi r19, r19, 0x200
|
||||
@ -185,14 +185,14 @@ DeleteID
|
||||
add r22, r22, r20
|
||||
clrlwi r20, r8, 0x10
|
||||
li r8, 0x00
|
||||
bgelr- cr1
|
||||
beqlr-
|
||||
bgelr cr1
|
||||
beqlr
|
||||
lbz r19, 0x0000(r22)
|
||||
lhz r23, 0x0002(r22)
|
||||
cmpwi r19, 0x00
|
||||
cmpw cr1, r23, r20
|
||||
beqlr-
|
||||
bnelr- cr1
|
||||
beqlr
|
||||
bnelr cr1
|
||||
lwz r9, KDP.NanoKernelInfo + NKNanoKernelInfo.IDCtr(r1)
|
||||
addi r9, r9, -0x01
|
||||
stw r9, KDP.NanoKernelInfo + NKNanoKernelInfo.IDCtr(r1)
|
||||
@ -224,14 +224,14 @@ LookupID
|
||||
clrlwi r20, r8, 0x10
|
||||
li r8, 0x00
|
||||
li r9, 0x00
|
||||
bgelr- cr1
|
||||
beqlr-
|
||||
bgelr cr1
|
||||
beqlr
|
||||
lbz r19, 0x0000(r22)
|
||||
lhz r23, 0x0002(r22)
|
||||
cmpwi r19, 0x00
|
||||
cmpw cr1, r23, r20
|
||||
beqlr-
|
||||
bnelr- cr1
|
||||
beqlr
|
||||
bnelr cr1
|
||||
lwz r8, 0x0004(r22)
|
||||
mr r9, r19
|
||||
blr
|
||||
@ -255,40 +255,40 @@ GetNextIDOfClass
|
||||
addi r20, r18, 0x08
|
||||
slwi r22, r19, 3
|
||||
li r8, 0x00
|
||||
bgelr- cr1
|
||||
beqlr-
|
||||
bgelr cr1
|
||||
beqlr
|
||||
add r22, r22, r20
|
||||
bne- cr2, @_48
|
||||
bne cr2, @_48
|
||||
|
||||
@_3c
|
||||
lbz r23, 0x0000(r22)
|
||||
cmpwi r23, 0x00
|
||||
bne- @_8c
|
||||
bne @_8c
|
||||
|
||||
@_48
|
||||
addi r19, r19, 0x01
|
||||
cmpwi r19, 0x1fa
|
||||
addi r22, r22, 0x08
|
||||
blt+ @_3c
|
||||
blt @_3c
|
||||
lhz r20, 0x0000(r18)
|
||||
addi r20, r20, 0x200
|
||||
rlwinm. r20, r20, 25, 23, 29
|
||||
lwz r18, -0x0a98(r1)
|
||||
beqlr-
|
||||
beqlr
|
||||
addi r20, r20, 0x08
|
||||
li r19, 0x00
|
||||
lwzx r18, r18, r20
|
||||
cmpwi r18, 0x00
|
||||
addi r22, r18, 0x08
|
||||
bne+ @_3c
|
||||
bne @_3c
|
||||
li r8, 0x00
|
||||
blr
|
||||
|
||||
@_8c
|
||||
cmpwi r9, 0x00
|
||||
cmpw cr1, r9, r23
|
||||
beq- @_9c
|
||||
bne+ cr1, @_48
|
||||
beq @_9c
|
||||
bne cr1, @_48
|
||||
|
||||
@_9c
|
||||
lhz r20, 0x0000(r18)
|
||||
|
@ -56,7 +56,7 @@ EndOfNanoKernelHeader
|
||||
|
||||
mfmsr r0
|
||||
rlwinm. r0, r0, 0, MSR_DRbit, MSR_DRbit
|
||||
beql- InitBuiltin
|
||||
beql InitBuiltin
|
||||
|
||||
|
||||
; But if data paging is on, do some very strange things...
|
||||
@ -118,7 +118,7 @@ InitIRP
|
||||
stw r10, 4(r12)
|
||||
addi r12, r12, 8
|
||||
andi. r10, r12, 0xfff
|
||||
bne+ @wipe_loop
|
||||
bne @wipe_loop
|
||||
blr
|
||||
|
||||
|
||||
@ -350,7 +350,7 @@ InitHighLevel
|
||||
subic. r22, r22, 4
|
||||
lwzx r0, r22, r8
|
||||
stwx r0, r22, r9
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
|
||||
|
||||
|
||||
@ -583,7 +583,7 @@ InitHighLevel
|
||||
@kctab_initloop
|
||||
subic. r22, r22, 4
|
||||
stwx r23, r8, r22
|
||||
bne+ @kctab_initloop
|
||||
bne @kctab_initloop
|
||||
|
||||
|
||||
; Then some overrides (names still pretty poor)
|
||||
@ -639,11 +639,11 @@ SetProcessorFlags
|
||||
mfpvr r23
|
||||
srwi r23, r23, 16
|
||||
andi. r8, r23, 0x8000
|
||||
bne- @pvr_has_high_bit_set
|
||||
bne @pvr_has_high_bit_set
|
||||
|
||||
; PVR < 0x8000 (therefore probably equals 000*)
|
||||
cmplwi r23, 0x000f ; but if not, pretend it's zero
|
||||
ble- @pvr_not_low
|
||||
ble @pvr_not_low
|
||||
li r23, 0x0000
|
||||
@pvr_not_low
|
||||
|
||||
@ -664,7 +664,7 @@ SetProcessorFlags
|
||||
andi. r23, r23, 0x7fff
|
||||
|
||||
cmplwi r23, 0x000f
|
||||
ble- @other_pvr_not_low
|
||||
ble @other_pvr_not_low
|
||||
li r23, -0x10
|
||||
@other_pvr_not_low
|
||||
|
||||
@ -763,7 +763,7 @@ SetProcessorFlags
|
||||
bl PoolAllocClear ; takes size and returns ptr, all in r8
|
||||
|
||||
mr. r31, r8
|
||||
beq- Init_Panic
|
||||
beq Init_Panic
|
||||
|
||||
; Get opaque ID
|
||||
li r9, Process.kIDClass
|
||||
@ -802,7 +802,7 @@ SetProcessorFlags
|
||||
li r8, 0x58 ;CoherenceGroup.Size
|
||||
bl PoolAllocClear
|
||||
mr. r31, r8
|
||||
beq- Init_Panic
|
||||
beq Init_Panic
|
||||
|
||||
|
||||
; Append to the global CGRP list
|
||||
@ -926,13 +926,13 @@ SetProcessorFlags
|
||||
rlwinm r23, r21, 0, 23, 21 ; munge the second byte
|
||||
cmpw r21, r23
|
||||
|
||||
beq- @bitnotset
|
||||
beq @bitnotset
|
||||
add r21, r23, r26
|
||||
@bitnotset
|
||||
|
||||
addic. r22, r22, -8
|
||||
stwu r21, 4(r8) ; but store it eventually
|
||||
bgt+ @BAT_copyloop
|
||||
bgt @BAT_copyloop
|
||||
|
||||
|
||||
|
||||
@ -953,7 +953,7 @@ SetProcessorFlags
|
||||
|
||||
cmpwi r8, 0
|
||||
mr r30, r9
|
||||
bne- Init_Panic
|
||||
bne Init_Panic
|
||||
|
||||
|
||||
; The relationship between SPACes and PROCs is still unclear...
|
||||
@ -1116,7 +1116,7 @@ SetProcessorFlags
|
||||
|
||||
; Check
|
||||
mr. r31, r8
|
||||
beq- Init_Panic
|
||||
beq Init_Panic
|
||||
|
||||
lwz r8, Task.ID(r31)
|
||||
stw r8, KDP.NanoKernelInfo + NKNanoKernelInfo.blueTaskID(r1)
|
||||
@ -1224,7 +1224,7 @@ av set PSA.AVFeatureBit
|
||||
|
||||
; Check
|
||||
mr. r31, r8
|
||||
beq- Init_Panic
|
||||
beq Init_Panic
|
||||
|
||||
; Misc population
|
||||
lisori r8, 'idle'
|
||||
@ -1302,7 +1302,7 @@ av set PSA.AVFeatureBit
|
||||
cmpwi r8, 0
|
||||
mr r30, r9
|
||||
lwz r31, EWA.CPUBase + CPU.IdleTaskPtr(r1)
|
||||
bne- Init_Panic
|
||||
bne Init_Panic
|
||||
|
||||
stw r30, Task.AddressSpacePtr(r31)
|
||||
|
||||
@ -1317,7 +1317,7 @@ av set PSA.AVFeatureBit
|
||||
|
||||
; Put HTABORG and PTEGMask in KDP, and zero out the last PTEG
|
||||
|
||||
beq- cr5, @skip_zeroing_pteg
|
||||
beq cr5, @skip_zeroing_pteg
|
||||
mfspr r8, sdr1
|
||||
|
||||
; get settable HTABMASK bits
|
||||
@ -1339,7 +1339,7 @@ av set PSA.AVFeatureBit
|
||||
@loop
|
||||
subic. r22, r22, 4
|
||||
stwx r23, r8, r22
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
@skip_zeroing_pteg
|
||||
|
||||
|
||||
@ -1352,7 +1352,7 @@ av set PSA.AVFeatureBit
|
||||
; Copy the ConfigInfo pagemap into KDP, absolut-ising entries
|
||||
; whose physical addresses are relative to ConfigInfo.
|
||||
|
||||
beq- cr5, @skip_copying_pagemap
|
||||
beq cr5, @skip_copying_pagemap
|
||||
lwz r9, NKConfigurationInfo.PageMapInitOffset(r26) ; from base of CI
|
||||
lwz r22, NKConfigurationInfo.PageMapInitSize(r26)
|
||||
add r9, r9, r26
|
||||
@ -1363,7 +1363,7 @@ av set PSA.AVFeatureBit
|
||||
|
||||
andi. r23, r21, PMDT.DaddyFlag | PMDT.PhysicalIsRelativeFlag
|
||||
cmpwi r23, PMDT.PhysicalIsRelativeFlag
|
||||
bne- @physical_address_not_relative_to_config_info
|
||||
bne @physical_address_not_relative_to_config_info
|
||||
|
||||
rlwinm r21, r21, 0, ~PMDT.PhysicalIsRelativeFlag
|
||||
add r21, r21, r26
|
||||
@ -1374,7 +1374,7 @@ av set PSA.AVFeatureBit
|
||||
subic. r22, r22, 4
|
||||
lwzx r20, r9, r22 ; load another word, but no be cray
|
||||
stwx r20, r18, r22 ; just save it in KDP
|
||||
bgt+ @copyloop_pagemap
|
||||
bgt @copyloop_pagemap
|
||||
@skip_copying_pagemap
|
||||
|
||||
|
||||
@ -1455,7 +1455,7 @@ IRPTopOffset equ IRPOffset + 0x1000
|
||||
oris r23, r23, 0x2000 ; no clue?
|
||||
stwu r23, 4(r8)
|
||||
|
||||
bgt+ @copyloop_segmaps
|
||||
bgt @copyloop_segmaps
|
||||
|
||||
|
||||
|
||||
@ -1523,14 +1523,14 @@ IRPTopOffset equ IRPOffset + 0x1000
|
||||
|
||||
cmplwi cr7, r30, 0xffff ; if not at base:
|
||||
rlwinm. r31, r31, 0, PMDT.DaddyFlag | PMDT.CountingFlag ; if neither flag:
|
||||
bgt- cr7, @finish_count ; stop counting
|
||||
bgt cr7, @finish_count ; stop counting
|
||||
cmpwi cr6, r31, PMDT.DaddyFlag | PMDT.CountingFlag ; if both flags:
|
||||
beq- @finish_count ; stop counting
|
||||
beq+ cr6, @skip_pmdt ; next PMDT instead
|
||||
beq @finish_count ; stop counting
|
||||
beq cr6, @skip_pmdt ; next PMDT instead
|
||||
|
||||
add r22, r22, r30
|
||||
addi r22, r22, 1
|
||||
beq+ cr7, @next_segment ; else count and move on to next segment descriptor
|
||||
beq cr7, @next_segment ; else count and move on to next segment descriptor
|
||||
|
||||
@finish_count
|
||||
stw r22, KDP.VMMaxVirtualPages(r1)
|
||||
@ -1555,7 +1555,7 @@ IRPTopOffset equ IRPOffset + 0x1000
|
||||
|
||||
ListFreePhysicalPages
|
||||
|
||||
beq- cr5, @skip
|
||||
beq cr5, @skip
|
||||
|
||||
lwz r21, KDP.KernelMemoryBase(r1)
|
||||
lwz r20, KDP.KernelMemoryEnd(r1)
|
||||
@ -1583,7 +1583,7 @@ ListFreePhysicalPages
|
||||
|
||||
@nextbank
|
||||
subic. r23, r23, 1
|
||||
blt- @done
|
||||
blt @done
|
||||
|
||||
lwzu r31, 8(r19) ; bank start address
|
||||
lwz r22, 4(r19) ; bank size
|
||||
@ -1594,11 +1594,11 @@ ListFreePhysicalPages
|
||||
cmplw cr6, r31, r21
|
||||
cmplw cr7, r31, r20
|
||||
subi r22, r22, 4096
|
||||
blt+ @nextbank
|
||||
blt @nextbank
|
||||
|
||||
; Check that this page is outside the kernel's reserved area
|
||||
blt- cr6, @below_reserved
|
||||
blt- cr7, @in_reserved
|
||||
blt cr6, @below_reserved
|
||||
blt cr7, @in_reserved
|
||||
@below_reserved
|
||||
stwu r31, 4(r29) ; write that part-PTE at the base of kernel memory
|
||||
@in_reserved
|
||||
@ -1613,7 +1613,7 @@ ListFreePhysicalPages
|
||||
|
||||
PrimeFreeListFromBanks
|
||||
|
||||
beq- cr5, PrimeFreeListFromSystemHeap
|
||||
beq cr5, PrimeFreeListFromSystemHeap
|
||||
|
||||
; Add ~18 to 20 of these pages to the free list, depending on RAM size
|
||||
subf r22, r21, r29
|
||||
@ -1636,7 +1636,7 @@ PrimeFreeListFromBanks
|
||||
subi r17, r17, 1
|
||||
subi r29, r29, 4
|
||||
cmpwi r17, 0
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
|
||||
b DonePrimingFreeList
|
||||
|
||||
@ -1651,7 +1651,7 @@ PrimeFreeListFromSystemHeap
|
||||
lwz r8, 0x05a8(r1) ; kdp.0x5a8
|
||||
addi r18, r1, 0x2000 ; kdp.0x2000
|
||||
subf. r8, r18, r8
|
||||
blt- DonePrimingFreeList
|
||||
blt DonePrimingFreeList
|
||||
addi r8, r8, 0x1000
|
||||
srwi r17, r8, 12
|
||||
|
||||
@ -1670,7 +1670,7 @@ PrimeFreeListFromSystemHeap
|
||||
addi r17, r17, -0x01
|
||||
addi r18, r18, 0x1000
|
||||
cmpwi r17, 0x00
|
||||
bgt+ @stupidloop
|
||||
bgt @stupidloop
|
||||
|
||||
|
||||
|
||||
@ -1714,7 +1714,7 @@ DonePrimingFreeList
|
||||
; The replacement kernel needs to return to the Mac OS
|
||||
; boot process.
|
||||
|
||||
beq- cr5, finish_old_world
|
||||
beq cr5, finish_old_world
|
||||
|
||||
|
||||
|
||||
@ -1740,7 +1740,7 @@ ReconcileMemory
|
||||
slwi r8, r8, 2
|
||||
|
||||
; Memory We Have versus Memory We Could Use
|
||||
; (see blt- below)
|
||||
; (see blt below)
|
||||
cmplw r22, r8
|
||||
|
||||
; TotalPhysicalPages equals pages not yet in free list but that could go in.
|
||||
@ -1750,7 +1750,7 @@ ReconcileMemory
|
||||
stw r19, KDP.TotalPhysicalPages(r1)
|
||||
|
||||
; r22 = pages in array destined to be mapped to blue area
|
||||
blt- @less_than_VMMaxVirtualPages
|
||||
blt @less_than_VMMaxVirtualPages
|
||||
subi r22, r8, 4
|
||||
@less_than_VMMaxVirtualPages
|
||||
|
||||
@ -1794,7 +1794,7 @@ ReconcileMemory
|
||||
stwu r21, 0x0004(r29)
|
||||
addis r21, r21, 4 ; we just used a segment's worth of pages on this
|
||||
subis r22, r22, 1 ; pages in a segment
|
||||
bgt+ @persegment
|
||||
bgt @persegment
|
||||
|
||||
; Number of pages in that last segment
|
||||
sth r22, 0x0002(r8)
|
||||
@ -1807,7 +1807,7 @@ ReconcileMemory
|
||||
; If any, they will be chucked on the free list
|
||||
subf. r18, r17, r18
|
||||
slwi r31, r17, 12 ; does this work with discontiguous banks? hmm...
|
||||
ble- @no_leftover_ram
|
||||
ble @no_leftover_ram
|
||||
|
||||
; See?
|
||||
_log 'Physical RAM greater than the initial logical area.^n Moving '
|
||||
@ -1824,7 +1824,7 @@ ReconcileMemory
|
||||
addi r31, r31, 4096
|
||||
subi r18, r18, 1
|
||||
cmpwi r18, 0
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
|
||||
@no_leftover_ram
|
||||
|
||||
@ -1880,7 +1880,7 @@ finish_old_world
|
||||
lwz r27, 0x0630(r1)
|
||||
lwz r27, 0x0094(r27)
|
||||
bl PagingFunc4
|
||||
beq- setup_0x1160
|
||||
beq setup_0x1160
|
||||
li r30, 0x00
|
||||
stw r30, -0x0004(r29)
|
||||
eieio
|
||||
@ -1892,7 +1892,7 @@ setup_0x1160
|
||||
lwz r27, 0x0630(r1)
|
||||
lwz r27, 0x009c(r27)
|
||||
bl PagingFunc4
|
||||
beq- setup_0x1188
|
||||
beq setup_0x1188
|
||||
li r30, 0x00
|
||||
stw r30, -0x0004(r29)
|
||||
eieio
|
||||
@ -1909,7 +1909,7 @@ setup_0x1188
|
||||
|
||||
setup_0x11a0
|
||||
bl PagingFunc4
|
||||
beq- setup_0x11bc
|
||||
beq setup_0x11bc
|
||||
li r30, 0x00
|
||||
stw r30, -0x0004(r29)
|
||||
eieio
|
||||
@ -1920,11 +1920,11 @@ setup_0x11bc
|
||||
bl PagingFunc1
|
||||
cmplw r27, r19
|
||||
addi r27, r27, -0x1000
|
||||
bgt+ setup_0x11a0
|
||||
bgt setup_0x11a0
|
||||
lwz r27, 0x0630(r1)
|
||||
lwz r27, 0x00a4(r27)
|
||||
bl PagingFunc4
|
||||
beq- setup_0x11f0
|
||||
beq setup_0x11f0
|
||||
li r30, 0x00
|
||||
stw r30, -0x0004(r29)
|
||||
eieio
|
||||
|
@ -38,7 +38,7 @@ major_0x02980 ; OUTSIDE REFERER
|
||||
lwz r9, EWA.Enables(r1)
|
||||
rlwinm r23, r17, 31, 27, 31
|
||||
rlwnm. r9, r9, r8, 0x00, 0x00
|
||||
bsol- cr3, major_0x02980_0x100
|
||||
bsol cr3, major_0x02980_0x100
|
||||
lwz r6, -0x0014(r1)
|
||||
ori r7, r16, 0x10
|
||||
neg r23, r23
|
||||
@ -70,10 +70,10 @@ major_0x02980 ; OUTSIDE REFERER
|
||||
lwz r8, 0x0034(r1)
|
||||
stw r8, 0x016c(r6)
|
||||
cmpwi cr1, r9, 0x14
|
||||
blt- cr4, major_0x04a20_0x18
|
||||
bne- cr2, TaskApproachTwo
|
||||
blt- major_0x02980_0xa8
|
||||
bne- cr1, major_0x02980_0x178
|
||||
blt cr4, major_0x04a20_0x18
|
||||
bne cr2, TaskApproachTwo
|
||||
blt major_0x02980_0xa8
|
||||
bne cr1, major_0x02980_0x178
|
||||
b TaskApproachTwo
|
||||
|
||||
major_0x02980_0xa8
|
||||
@ -91,13 +91,13 @@ major_0x02980_0xa8
|
||||
lwz r1, -0x0004(r1)
|
||||
lwz r4, 0x0054(r6)
|
||||
lwz r3, 0x0654(r1)
|
||||
blt- cr2, major_0x02980_0xec
|
||||
blt cr2, major_0x02980_0xec
|
||||
lwz r3, 0x05b4(r1)
|
||||
_bclr r11, r11, 16
|
||||
|
||||
major_0x02980_0xec
|
||||
lwz r12, 0x0648(r1)
|
||||
bsol- cr6, PreferRegistersFromEWASavingContextBlock
|
||||
bsol cr6, PreferRegistersFromEWASavingContextBlock
|
||||
rlwinm r7, r7, 0, 29, 16
|
||||
rlwimi r11, r7, 0, 20, 23
|
||||
b IntReturn
|
||||
@ -143,8 +143,8 @@ major_0x02980_0x134 ; OUTSIDE REFERER
|
||||
bc BO_IF, EWA.kFlag16, major_0x04a20_0x18
|
||||
bc BO_IF_NOT, EWA.kFlagBlue, TaskApproachOne
|
||||
cmpwi cr1, r9, ecInstPageFault
|
||||
blt+ major_0x02980_0xa8 ; when Enables[cause] is set!
|
||||
beq- cr1, TaskApproachOne
|
||||
blt major_0x02980_0xa8 ; when Enables[cause] is set!
|
||||
beq cr1, TaskApproachOne
|
||||
|
||||
major_0x02980_0x178 ; OUTSIDE REFERER
|
||||
lwz r1, EWA.PA_KDP(r1)
|
||||
@ -209,7 +209,7 @@ major_0x02980_0x1e8
|
||||
stw r29, 0x01ec(r6)
|
||||
stw r30, 0x01f4(r6)
|
||||
stw r31, 0x01fc(r6)
|
||||
bnel- major_0x03e18_0xb4
|
||||
bnel major_0x03e18_0xb4
|
||||
|
||||
bc BO_IF_NOT, 12, major_0x02980_0x260
|
||||
bl Save_v0_v31
|
||||
@ -232,7 +232,7 @@ major_0x02980_0x260
|
||||
lwz r8, 0x00f4(r6)
|
||||
lwz r10, 0x00fc(r6)
|
||||
mtctr r8
|
||||
bnel- major_0x03e18_0x8
|
||||
bnel major_0x03e18_0x8
|
||||
lwarx r8, 0, r1
|
||||
sync
|
||||
stwcx. r8, 0, r1
|
||||
@ -241,7 +241,7 @@ major_0x02980_0x260
|
||||
cmpwi r29, 0x00
|
||||
stw r8, 0x0004(r1)
|
||||
lwz r28, 0x0210(r29)
|
||||
beq- major_0x02980_0x2d0
|
||||
beq major_0x02980_0x2d0
|
||||
mtspr vrsave, r28
|
||||
|
||||
major_0x02980_0x2d0
|
||||
@ -280,7 +280,7 @@ IntReturn ; OUTSIDE REFERER
|
||||
|
||||
andi. r8, r7, (1 << (31 - 26)) | (1 << (31 - 27))
|
||||
mfsprg r1, 0
|
||||
bnel- major_0x02ccc ; my counters say almost never called!
|
||||
bnel major_0x02ccc ; my counters say almost never called!
|
||||
li r8, 0
|
||||
stw r7, EWA.Flags(r1)
|
||||
stw r8, EWA.WeMightClear(r1)
|
||||
@ -317,7 +317,7 @@ major_0x02ccc_0x30
|
||||
; according to my counter, this point is never reached
|
||||
|
||||
rlwinm. r8, r7, 0, 8, 8
|
||||
beq- SuspendBlueTask
|
||||
beq SuspendBlueTask
|
||||
stw r7, EWA.Flags(r1)
|
||||
lwz r8, 0x0104(r6)
|
||||
stw r8, 0x0000(r1)
|
||||
@ -368,7 +368,7 @@ major_0x02ccc_0x30
|
||||
mtmsr r15
|
||||
isync
|
||||
rlwimi r25, r26, 2, 22, 29 ; apparently the lower byte of the entry is an FDP (code?) offset, /4!
|
||||
bnelr-
|
||||
bnelr
|
||||
b FDP_011c
|
||||
|
||||
|
||||
@ -381,11 +381,11 @@ SuspendBlueTask
|
||||
bl LookupID
|
||||
cmpwi r9, Queue.kIDClass
|
||||
mr r30, r8
|
||||
bnel- @no_exception_handler
|
||||
bnel @no_exception_handler
|
||||
|
||||
lwz r28, Queue.ReservePtr(r30)
|
||||
cmpwi r28, 0
|
||||
beql- @no_memory_reserved_for_exception_messages
|
||||
beql @no_memory_reserved_for_exception_messages
|
||||
|
||||
;notify exception handler
|
||||
_Lock PSA.SchLock, scratch1=r8, scratch2=r9
|
||||
@ -468,8 +468,8 @@ TaskApproachOne ; OUTSIDE REFERER
|
||||
srwi r8, r7, 24
|
||||
rlwinm. r16, r16, 0, Task.kFlag9, Task.kFlag9
|
||||
cmpwi cr1, r8, ecInstPageFault
|
||||
bne- TaskNotSuitableForWhatWeWantToDo
|
||||
bne- cr1, TaskNotSuitableForWhatWeWantToDo
|
||||
bne TaskNotSuitableForWhatWeWantToDo
|
||||
bne cr1, TaskNotSuitableForWhatWeWantToDo
|
||||
; what is special about the upper 8 Flags? Are they Task-related?
|
||||
|
||||
lwz r8, Task.Zero3(r31)
|
||||
@ -510,8 +510,8 @@ TaskApproachTwo ; OUTSIDE REFERER
|
||||
srwi r8, r7, 24
|
||||
rlwinm. r16, r16, 0, Task.kFlag9, Task.kFlag9
|
||||
cmpwi cr1, r8, 0x14
|
||||
bne- TaskNotSuitableForWhatWeWantToDo
|
||||
bne- cr1, TaskNotSuitableForWhatWeWantToDo
|
||||
bne TaskNotSuitableForWhatWeWantToDo
|
||||
bne cr1, TaskNotSuitableForWhatWeWantToDo
|
||||
|
||||
lwz r8, Task.Zero4(r31)
|
||||
addi r8, r8, 1
|
||||
@ -531,7 +531,7 @@ CommonPathBetweenTaskIntFuncs
|
||||
lisori r17, Area.kSignature
|
||||
lwz r16, Area.Signature(r29)
|
||||
cmplw r16, r17
|
||||
bnel+ Local_Panic
|
||||
bnel Local_Panic
|
||||
|
||||
lwz r17, Area.Counter(r29)
|
||||
addi r17, r17, 1
|
||||
@ -544,9 +544,9 @@ CommonPathBetweenTaskIntFuncs
|
||||
cmpwi cr0, r9, ecInstPageFault
|
||||
cmpwi cr1, r16, 0
|
||||
mr r26, r8
|
||||
bne- cr0, CanSendMessage
|
||||
beq- cr1, CantSendMessage
|
||||
beq- cr2, CanSendMessage
|
||||
bne cr0, CanSendMessage
|
||||
beq cr1, CantSendMessage
|
||||
beq cr2, CanSendMessage
|
||||
|
||||
CantSendMessage
|
||||
lwz r16, Task.Flags(r31)
|
||||
@ -573,15 +573,15 @@ CantSendMessage
|
||||
bl CauseNotification
|
||||
|
||||
cmpwi r8, 0
|
||||
beq+ IntLocalBlockMPCall ; jump if no error?
|
||||
beq IntLocalBlockMPCall ; jump if no error?
|
||||
|
||||
CanSendMessage
|
||||
mfcr r28
|
||||
li r8, Message.Size
|
||||
beq- cr2, major_0x02ccc_0x4a8
|
||||
beq cr2, major_0x02ccc_0x4a8
|
||||
bl PoolAlloc
|
||||
mr. r26, r8
|
||||
beq- major_0x02ccc_PoolAllocFailed
|
||||
beq major_0x02ccc_PoolAllocFailed
|
||||
|
||||
addi r17, r31, Task.QueueMember
|
||||
addi r18, r31, Task.Semaphore
|
||||
@ -612,7 +612,7 @@ major_0x02ccc_0x4a8
|
||||
bl SchRdyTaskNow
|
||||
_AssertAndRelease PSA.SchLock, scratch=r31
|
||||
mtcr r28
|
||||
bns- cr6, major_0x02ccc_0x504
|
||||
bns cr6, major_0x02ccc_0x504
|
||||
lwz r8, 0x0064(r6)
|
||||
lwz r9, 0x0068(r6)
|
||||
stw r8, 0x0024(r6)
|
||||
@ -663,8 +663,8 @@ IntDecrementer ; OUTSIDE REFERER
|
||||
lwz r8, KDP.OldKDP(r1)
|
||||
rlwinm. r9, r11, 0, 16, 16
|
||||
cmpwi cr1, r8, 0x00
|
||||
beq- MaskedInterruptTaken
|
||||
beq- cr1, IntDecrementer_0x54
|
||||
beq MaskedInterruptTaken
|
||||
beq cr1, IntDecrementer_0x54
|
||||
|
||||
stw r16, ContextBlock.r16(r6)
|
||||
stw r17, ContextBlock.r17(r6)
|
||||
@ -672,7 +672,7 @@ IntDecrementer ; OUTSIDE REFERER
|
||||
stw r25, ContextBlock.r25(r6)
|
||||
|
||||
bl SchFiddlePriorityShifty
|
||||
ble- IntDecrementer_0x48
|
||||
ble IntDecrementer_0x48
|
||||
|
||||
lwz r8, PSA.CriticalReadyQ + ReadyQueue.Timecake + 4(r1)
|
||||
mtspr dec, r8
|
||||
@ -727,7 +727,7 @@ IntDSI ; OUTSIDE REFERER
|
||||
andis. r28, r26, 0x400
|
||||
mtsprg 3, r23
|
||||
mfmsr r14
|
||||
bne- major_0x03324_0x9c
|
||||
bne major_0x03324_0x9c
|
||||
ori r15, r14, 0x10
|
||||
mtmsr r15
|
||||
isync
|
||||
@ -742,7 +742,7 @@ major_0x03324 ; OUTSIDE REFERER
|
||||
lwz r25, 0x0650(r1)
|
||||
li r21, 0x00
|
||||
mfsprg r1, 0
|
||||
beq- major_0x03324_0x18
|
||||
beq major_0x03324_0x18
|
||||
lwzx r18, r1, r18
|
||||
|
||||
major_0x03324_0x18
|
||||
@ -750,7 +750,7 @@ major_0x03324_0x18
|
||||
lwz r16, EWA.Flags(r1)
|
||||
rlwinm r17, r27, 0, 6, 15
|
||||
rlwimi r16, r16, 27, 26, 26
|
||||
bge- major_0x03324_0x58
|
||||
bge major_0x03324_0x58
|
||||
rlwimi r25, r27, 7, 26, 29
|
||||
rlwimi r25, r27, 12, 25, 25
|
||||
lwz r26, 0x0b80(r25)
|
||||
@ -777,7 +777,7 @@ major_0x03324_0x58
|
||||
crclr cr5_so
|
||||
rlwimi r17, r26, 6, 26, 5
|
||||
add r18, r18, r23
|
||||
blelr- cr3
|
||||
blelr cr3
|
||||
neg r23, r23
|
||||
add r18, r18, r23
|
||||
blr
|
||||
@ -801,12 +801,12 @@ major_0x03324_0x9c ; OUTSIDE REFERER
|
||||
mr r16, r28
|
||||
crset cr3_so
|
||||
mfsprg r1, 0
|
||||
beq- major_0x03324_0x12c
|
||||
beq major_0x03324_0x12c
|
||||
mr r18, r8
|
||||
rlwinm r28, r27, 13, 25, 29
|
||||
andis. r9, r31, 0x200
|
||||
rlwimi r18, r17, 0, 0, 19
|
||||
beq- major_0x03324_0x118
|
||||
beq major_0x03324_0x118
|
||||
lwzx r31, r1, r28
|
||||
stwcx. r31, 0, r18
|
||||
sync
|
||||
@ -861,7 +861,7 @@ IntAlignment ; OUTSIDE REFERER
|
||||
|
||||
addi r23, r1, KDP.RedVecBase
|
||||
|
||||
bne- major_0x03548_0x20
|
||||
bne major_0x03548_0x20
|
||||
|
||||
; DSISR for misaligned X-form instruction:
|
||||
|
||||
@ -878,7 +878,7 @@ FDP_TableBase equ 0xa00
|
||||
|
||||
; Get the FDP and F.O. if we were in MSR_LE mode
|
||||
lwz r25, KDP.PA_FDP(r1)
|
||||
bne- major_0x03548_0x20
|
||||
bne major_0x03548_0x20
|
||||
|
||||
|
||||
rlwinm. r21, r27, 17, 30, 31 ; evaluate hi two bits of XO (or 0 for d-form?)
|
||||
@ -892,7 +892,7 @@ FDP_TableBase equ 0xa00
|
||||
|
||||
rlwimi r16, r16, 27, 26, 26 ; AllCpuFeatures: copy bit 21 to bit 26
|
||||
|
||||
bne- @regidx
|
||||
bne @regidx
|
||||
|
||||
; D-form (immediate-indexed) instruction
|
||||
lwz r26, FDP_TableBase + 4*(0x40 + 0x20)(r25) ; use upper quarter of table
|
||||
@ -916,7 +916,7 @@ FDP_TableBase equ 0xa00
|
||||
mtcr r26
|
||||
rlwimi r17, r26, 6, 26, 5
|
||||
crclr 23 ; unset bit 23 = cr5_so
|
||||
bgelr- cr3 ; jump now if bit 12 is off
|
||||
bgelr cr3 ; jump now if bit 12 is off
|
||||
|
||||
; if bit 12 was on, turn on paging and fetch the offending insn
|
||||
; and also activate the Red vector table
|
||||
@ -960,11 +960,11 @@ IntDSIOtherOther ; OUTSIDE REFERER
|
||||
mfspr r27, dar
|
||||
andis. r28, r31, 0xc030
|
||||
lwz r1, -0x0004(r1)
|
||||
bne- IntDSIOtherOther_0x1c8
|
||||
bne IntDSIOtherOther_0x1c8
|
||||
mfspr r30, srr1
|
||||
andi. r28, r30, 0x4000
|
||||
mfsprg r30, 0
|
||||
beq- IntDSIOtherOther_0x100
|
||||
beq IntDSIOtherOther_0x100
|
||||
stw r8, -0x00e0(r30)
|
||||
stw r9, -0x00dc(r30)
|
||||
mfcr r8
|
||||
@ -980,25 +980,25 @@ IntDSIOtherOther ; OUTSIDE REFERER
|
||||
lwz r17, 0x0028(r8)
|
||||
cmplw r27, r16
|
||||
cmplw cr7, r27, r17
|
||||
blt- IntDSIOtherOther_0xe0
|
||||
bgt- cr7, IntDSIOtherOther_0xe0
|
||||
blt IntDSIOtherOther_0xe0
|
||||
bgt cr7, IntDSIOtherOther_0xe0
|
||||
mr r31, r8
|
||||
mr r8, r27
|
||||
bl MPCall_95_0x1e4
|
||||
beq- IntDSIOtherOther_0xe0
|
||||
beq IntDSIOtherOther_0xe0
|
||||
lwz r8, 0x0000(r30)
|
||||
lwz r16, 0x0098(r31)
|
||||
rlwinm r28, r8, 0, 29, 30
|
||||
cmpwi cr7, r28, 0x04
|
||||
cmpwi r28, 0x02
|
||||
beq- cr7, IntDSIOtherOther_0xe0
|
||||
beq- IntDSIOtherOther_0xe0
|
||||
beq cr7, IntDSIOtherOther_0xe0
|
||||
beq IntDSIOtherOther_0xe0
|
||||
|
||||
IntDSIOtherOther_0x98
|
||||
addi r17, r31, 0x90
|
||||
cmpw r16, r17
|
||||
addi r17, r16, 0x14
|
||||
beq- IntDSIOtherOther_0x158
|
||||
beq IntDSIOtherOther_0x158
|
||||
lwz r9, 0x0010(r16)
|
||||
add r9, r9, r17
|
||||
|
||||
@ -1006,11 +1006,11 @@ IntDSIOtherOther_0xb0
|
||||
lwz r18, 0x0000(r17)
|
||||
cmplw cr7, r17, r9
|
||||
lwz r19, 0x0004(r17)
|
||||
bgt- cr7, IntDSIOtherOther_0xd8
|
||||
bgt cr7, IntDSIOtherOther_0xd8
|
||||
cmplw r27, r18
|
||||
cmplw cr7, r27, r19
|
||||
blt- IntDSIOtherOther_0xd0
|
||||
ble- cr7, IntDSIOtherOther_0xe0
|
||||
blt IntDSIOtherOther_0xd0
|
||||
ble cr7, IntDSIOtherOther_0xe0
|
||||
|
||||
IntDSIOtherOther_0xd0
|
||||
addi r17, r17, 0x08
|
||||
@ -1033,14 +1033,14 @@ IntDSIOtherOther_0xe0
|
||||
IntDSIOtherOther_0x100
|
||||
andis. r28, r31, 0x800
|
||||
addi r29, r1, 800
|
||||
bnel- PagingFunc3
|
||||
bnel PagingFunc3
|
||||
li r28, 0x43
|
||||
and r28, r31, r28
|
||||
cmpwi cr7, r28, 0x43
|
||||
beql+ Local_Panic
|
||||
beql Local_Panic
|
||||
mfsprg r28, 2
|
||||
mtlr r28
|
||||
bne- cr7, IntDSIOtherOther_0x144
|
||||
bne cr7, IntDSIOtherOther_0x144
|
||||
mfspr r28, srr0
|
||||
addi r28, r28, 0x04
|
||||
lwz r26, 0x0e90(r1)
|
||||
@ -1052,7 +1052,7 @@ IntDSIOtherOther_0x100
|
||||
IntDSIOtherOther_0x144
|
||||
andi. r28, r31, 0x03
|
||||
li r8, ecDataSupAccessViolation
|
||||
beq+ major_0x02980
|
||||
beq major_0x02980
|
||||
li r8, ecDataWriteViolation
|
||||
b major_0x02980
|
||||
|
||||
@ -1084,7 +1084,7 @@ IntDSIOtherOther_0x19c
|
||||
|
||||
IntDSIOtherOther_0x1c8
|
||||
andis. r28, r31, 0x8010
|
||||
bne- IntMachineCheckMemRetry_0x14c
|
||||
bne IntMachineCheckMemRetry_0x14c
|
||||
|
||||
_Lock PSA.HTABLock, scratch1=r28, scratch2=r31
|
||||
|
||||
@ -1092,9 +1092,9 @@ IntDSIOtherOther_0x1c8
|
||||
_AssertAndRelease PSA.HTABLock, scratch=r28
|
||||
mfsprg r28, 2
|
||||
mtlr r28
|
||||
beq+ IntDSIOtherOther_0x19c
|
||||
beq IntDSIOtherOther_0x19c
|
||||
li r8, ecDataInvalidAccess
|
||||
bge+ major_0x02980
|
||||
bge major_0x02980
|
||||
li r8, ecDataPageFault
|
||||
b major_0x02980
|
||||
|
||||
@ -1131,9 +1131,9 @@ IntMachineCheckMemRetry ; OUTSIDE REFERER
|
||||
lwz r27, 0x0694(r1)
|
||||
subf r28, r19, r27
|
||||
cmpwi r28, -0x10
|
||||
blt- IntMachineCheckMemRetry_0x14c
|
||||
blt IntMachineCheckMemRetry_0x14c
|
||||
cmpwi r28, 0x10
|
||||
bgt- IntMachineCheckMemRetry_0x14c
|
||||
bgt IntMachineCheckMemRetry_0x14c
|
||||
|
||||
_Lock PSA.HTABLock, scratch1=r28, scratch2=r29
|
||||
|
||||
@ -1147,7 +1147,7 @@ IntMachineCheckMemRetry ; OUTSIDE REFERER
|
||||
rlwinm. r28, r28, 0, 0, 14
|
||||
sync
|
||||
tlbie r27
|
||||
beq- IntMachineCheckMemRetry_0x124
|
||||
beq IntMachineCheckMemRetry_0x124
|
||||
sync
|
||||
tlbsync
|
||||
|
||||
@ -1159,7 +1159,7 @@ IntMachineCheckMemRetry_0x124
|
||||
IntMachineCheckMemRetry_0x14c ; OUTSIDE REFERER
|
||||
cmplw r10, r19
|
||||
li r8, ecDataHardwareFault
|
||||
bne+ major_0x02980
|
||||
bne major_0x02980
|
||||
mfsprg r1, 0
|
||||
mtsprg 3, r24
|
||||
lmw r14, 0x0038(r1)
|
||||
@ -1186,7 +1186,7 @@ IntISI ; OUTSIDE REFERER
|
||||
; r13 = cr
|
||||
|
||||
andis. r8, r11, 0x4020
|
||||
beq- major_0x039dc_0x14
|
||||
beq major_0x039dc_0x14
|
||||
mfsprg r8, 0
|
||||
stmw r14, 0x0038(r8)
|
||||
|
||||
@ -1196,7 +1196,7 @@ IntISI ; OUTSIDE REFERER
|
||||
bl PagingFunc1
|
||||
_AssertAndRelease PSA.HTABLock, scratch=r28
|
||||
mfsprg r8, 0
|
||||
bne- major_0x039dc
|
||||
bne major_0x039dc
|
||||
mfsprg r24, 3
|
||||
mfmsr r14
|
||||
ori r15, r14, 0x10
|
||||
@ -1219,14 +1219,14 @@ IntISI ; OUTSIDE REFERER
|
||||
major_0x039dc ; OUTSIDE REFERER
|
||||
lmw r14, 0x0038(r8)
|
||||
li r8, ecInstPageFault
|
||||
blt+ major_0x02980_0x134
|
||||
blt major_0x02980_0x134
|
||||
li r8, ecInstInvalidAddress
|
||||
b major_0x02980_0x134
|
||||
|
||||
major_0x039dc_0x14 ; OUTSIDE REFERER
|
||||
andis. r8, r11, 0x800
|
||||
li r8, ecInstSupAccessViolation
|
||||
bne+ major_0x02980_0x134
|
||||
bne major_0x02980_0x134
|
||||
li r8, ecInstHardwareFault
|
||||
b major_0x02980_0x134
|
||||
|
||||
@ -1265,7 +1265,7 @@ IntMachineCheck ; OUTSIDE REFERER
|
||||
_log '^n'
|
||||
|
||||
rlwinm. r8, r11, 0, 2, 2
|
||||
beq- @not_L1_data_cache_error
|
||||
beq @not_L1_data_cache_error
|
||||
|
||||
;L1 data cache error
|
||||
bl FlushL1CacheUsingMSSCR0
|
||||
@ -1297,7 +1297,7 @@ IntDSIOther ; OUTSIDE REFERER
|
||||
mfspr r8, dsisr
|
||||
rlwimi r11, r8, 0, 0, 9
|
||||
andis. r8, r11, 0x4020
|
||||
beq+ major_0x039dc_0x14
|
||||
beq major_0x039dc_0x14
|
||||
mfsprg r8, 0
|
||||
stmw r14, 0x0038(r8)
|
||||
lwz r1, -0x0004(r8)
|
||||
@ -1308,7 +1308,7 @@ IntDSIOther ; OUTSIDE REFERER
|
||||
bl PagingFunc1
|
||||
_AssertAndRelease PSA.HTABLock, scratch=r28
|
||||
mfsprg r8, 0
|
||||
bne+ major_0x039dc
|
||||
bne major_0x039dc
|
||||
lmw r14, 0x0038(r8)
|
||||
mfsprg r1, 2
|
||||
mtlr r1
|
||||
@ -1334,9 +1334,9 @@ kcReturnFromException ; OUTSIDE REFERER
|
||||
ori r11, r11, 0x8000
|
||||
mtcrf 0x3f, r7
|
||||
cmplwi cr1, r3, 0x01
|
||||
blt- cr4, major_0x04a20_0x18
|
||||
blt- cr1, major_0x03be0_0x58
|
||||
beq- cr1, major_0x03be0_0x90
|
||||
blt cr4, major_0x04a20_0x18
|
||||
blt cr1, major_0x03be0_0x58
|
||||
beq cr1, major_0x03be0_0x90
|
||||
addi r8, r3, -0x20
|
||||
lwz r9, 0x0eac(r1)
|
||||
cmplwi r8, 0xe0
|
||||
@ -1344,7 +1344,7 @@ kcReturnFromException ; OUTSIDE REFERER
|
||||
stw r9, 0x0eac(r1)
|
||||
mfsprg r1, 0
|
||||
rlwimi r7, r3, 24, 0, 7
|
||||
blt- major_0x03be0_0xe8
|
||||
blt major_0x03be0_0xe8
|
||||
li r8, ecTrapInstr
|
||||
b major_0x02980_0x134
|
||||
|
||||
@ -1360,7 +1360,7 @@ major_0x03be0_0x58
|
||||
lwz r12, 0x008c(r6)
|
||||
lwz r3, 0x0094(r6)
|
||||
lwz r4, 0x009c(r6)
|
||||
bnel- major_0x03e18
|
||||
bnel major_0x03e18
|
||||
addi r9, r6, 0x40
|
||||
b IntReturn
|
||||
|
||||
@ -1379,8 +1379,8 @@ major_0x03be0_0x90
|
||||
lwz r12, 0x008c(r6)
|
||||
lwz r3, 0x0094(r6)
|
||||
lwz r4, 0x009c(r6)
|
||||
bne- cr2, major_0x03be0_0xe8
|
||||
bns- cr6, major_0x03be0_0xe8
|
||||
bne cr2, major_0x03be0_0xe8
|
||||
bns cr6, major_0x03be0_0xe8
|
||||
stmw r14, 0x0038(r1)
|
||||
lwz r17, 0x0064(r6)
|
||||
lwz r20, 0x0068(r6)
|
||||
@ -1389,7 +1389,7 @@ major_0x03be0_0x90
|
||||
lwz r18, 0x007c(r6)
|
||||
|
||||
major_0x03be0_0xe8
|
||||
beq+ cr2, major_0x02980_0x178
|
||||
beq cr2, major_0x02980_0x178
|
||||
crclr cr6_so
|
||||
mfspr r10, srr0
|
||||
li r8, ecTrapInstr
|
||||
@ -1542,14 +1542,14 @@ IntFPUnavail ; OUTSIDE REFERER
|
||||
|
||||
major_0x03e18 ; OUTSIDE REFERER
|
||||
rlwinm. r8, r11, 0, 18, 18
|
||||
bnelr-
|
||||
bnelr
|
||||
|
||||
major_0x03e18_0x8 ; OUTSIDE REFERER
|
||||
lwz r8, 0x00e4(r6)
|
||||
rlwinm. r8, r8, 1, 0, 0
|
||||
mfmsr r8
|
||||
ori r8, r8, 0x2000
|
||||
beqlr-
|
||||
beqlr
|
||||
mtmsr r8
|
||||
isync
|
||||
ori r11, r11, 0x2000
|
||||
@ -1677,7 +1677,7 @@ major_0x04180 ; OUTSIDE REFERER
|
||||
lwz r10, 0x00d8(r6)
|
||||
mfspr r11, srr1
|
||||
cmpwi r10, 0x00
|
||||
beql- major_0x04180_0x9c
|
||||
beql major_0x04180_0x9c
|
||||
oris r11, r11, 0x200
|
||||
stw r9, -0x027c(r1)
|
||||
mtspr srr1, r11
|
||||
@ -1740,14 +1740,14 @@ IntPerfMonitor ; OUTSIDE REFERER
|
||||
mflr r8
|
||||
mfcr r13
|
||||
cmpwi r8, 0xf20
|
||||
beq+ major_0x04180
|
||||
beq major_0x04180
|
||||
mtcr r13
|
||||
lwz r13, -0x0284(r1)
|
||||
lwz r8, -0x0280(r1)
|
||||
bl save_all_registers
|
||||
mr r28, r8
|
||||
rlwinm. r9, r11, 0, 16, 16
|
||||
beq+ MaskedInterruptTaken
|
||||
beq MaskedInterruptTaken
|
||||
|
||||
_Lock PSA.SchLock, scratch1=r8, scratch2=r9
|
||||
|
||||
@ -1758,7 +1758,7 @@ IntPerfMonitor ; OUTSIDE REFERER
|
||||
cmpwi r9, Notification.kIDClass
|
||||
|
||||
mr r30, r8
|
||||
bne- IntPerfMonitor_0x88
|
||||
bne IntPerfMonitor_0x88
|
||||
lwz r16, -0x0340(r28)
|
||||
lwz r17, -0x0008(r28)
|
||||
stw r16, 0x0010(r30)
|
||||
@ -1785,7 +1785,7 @@ IntThermalEvent ; OUTSIDE REFERER
|
||||
bl save_all_registers
|
||||
mr r28, r8
|
||||
rlwinm. r9, r11, 0, 16, 16
|
||||
beq+ MaskedInterruptTaken
|
||||
beq MaskedInterruptTaken
|
||||
_log 'Thermal event^n'
|
||||
|
||||
_Lock PSA.SchLock, scratch1=r8, scratch2=r9
|
||||
@ -1794,7 +1794,7 @@ IntThermalEvent ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Notification.kIDClass
|
||||
mr r30, r8
|
||||
bne- @no_thermal_handler
|
||||
bne @no_thermal_handler
|
||||
|
||||
lwz r16, EWA.CPUBase + CPU.ID(r28)
|
||||
stw r16, Notification.MsgWord1(r30)
|
||||
@ -1819,9 +1819,9 @@ kcRunAlternateContext ; OUTSIDE REFERER
|
||||
lwz r9, KDP.MinusOne1(r1)
|
||||
rlwinm r8, r3, 0, 0, 25
|
||||
cmpw cr1, r8, r9
|
||||
bne+ IntReturn
|
||||
bne IntReturn
|
||||
lwz r9, 0x0344(r1)
|
||||
bne- cr1, major_0x043a0_0x48
|
||||
bne cr1, major_0x043a0_0x48
|
||||
|
||||
major_0x043a0_0x24
|
||||
addi r8, r1, 0x420
|
||||
@ -1837,41 +1837,41 @@ major_0x043a0_0x24
|
||||
major_0x043a0_0x48
|
||||
lwz r9, 0x0348(r1)
|
||||
cmpw cr1, r8, r9
|
||||
beq- cr1, major_0x043a0_0x130
|
||||
beq cr1, major_0x043a0_0x130
|
||||
lwz r9, 0x0350(r1)
|
||||
cmpw cr1, r8, r9
|
||||
beq- cr1, major_0x043a0_0x110
|
||||
beq cr1, major_0x043a0_0x110
|
||||
lwz r9, 0x0358(r1)
|
||||
cmpw cr1, r8, r9
|
||||
beq- cr1, major_0x043a0_0xf0
|
||||
beq cr1, major_0x043a0_0xf0
|
||||
mfsprg r1, 0
|
||||
stmw r14, 0x0038(r1)
|
||||
lwz r1, -0x0004(r1)
|
||||
cmpw cr1, r8, r6
|
||||
beq- cr1, major_0x043a0_0x154
|
||||
beq cr1, major_0x043a0_0x154
|
||||
mr r27, r8
|
||||
addi r29, r1, 800
|
||||
bl PagingFunc3
|
||||
clrlwi r23, r8, 0x14
|
||||
beq- major_0x043a0_0x154
|
||||
beq major_0x043a0_0x154
|
||||
cmplwi r23, 0xd00
|
||||
mr r9, r8
|
||||
mr r8, r31
|
||||
ble- major_0x043a0_0xc4
|
||||
ble major_0x043a0_0xc4
|
||||
addi r27, r27, 0x1000
|
||||
addi r29, r1, 800
|
||||
bl PagingFunc3
|
||||
beq- major_0x043a0_0x154
|
||||
beq major_0x043a0_0x154
|
||||
addi r31, r31, -0x1000
|
||||
xor r23, r8, r31
|
||||
rlwinm. r23, r23, 0, 25, 22
|
||||
bne- major_0x043a0_0x154
|
||||
bne major_0x043a0_0x154
|
||||
|
||||
major_0x043a0_0xc4
|
||||
clrlwi r23, r31, 0x1e
|
||||
cmpwi r23, 0x03
|
||||
rlwimi r8, r9, 0, 20, 31
|
||||
beq- major_0x043a0_0x154
|
||||
beq major_0x043a0_0x154
|
||||
lwz r23, 0x0ea4(r1)
|
||||
addi r23, r23, 0x01
|
||||
stw r23, 0x0ea4(r1)
|
||||
@ -1927,7 +1927,7 @@ major_0x043a0_0x154
|
||||
wordfill ; OUTSIDE REFERER
|
||||
subic. r22, r22, 4
|
||||
stwx r23, r8, r22
|
||||
bne+ wordfill
|
||||
bne wordfill
|
||||
blr
|
||||
|
||||
|
||||
@ -1952,7 +1952,7 @@ kcResetSystem ; OUTSIDE REFERER
|
||||
; This xoris/cmplwi technique is very cool
|
||||
xoris r8, r3, 'Ga'
|
||||
|
||||
beq- @is_601
|
||||
beq @is_601
|
||||
mftb r9
|
||||
b @endif_601
|
||||
@is_601
|
||||
@ -1965,12 +1965,12 @@ kcResetSystem ; OUTSIDE REFERER
|
||||
andis. r9, r9, 0xffff
|
||||
|
||||
cmplwi r8, 'ry'
|
||||
bne- NonGaryReset
|
||||
bne NonGaryReset
|
||||
|
||||
; r4 (i.e. A1) == 5 May 1956?
|
||||
xoris r8, r4, 0x0505
|
||||
cmplwi r8, 0x1956
|
||||
bne- NonGaryReset
|
||||
bne NonGaryReset
|
||||
|
||||
andc r11, r11, r5
|
||||
lwz r8, ContextBlock.r7(r6)
|
||||
@ -2001,7 +2001,7 @@ NonGaryReset
|
||||
lwz r8, KDP.OldKDP(r1)
|
||||
|
||||
cmpwi r8, 0
|
||||
beq+ ResetBuiltinKernel
|
||||
beq ResetBuiltinKernel
|
||||
|
||||
_log 'Unplugging the replacement nanokernel^n'
|
||||
|
||||
@ -2122,7 +2122,7 @@ IntExternalOrange ; OUTSIDE REFERER
|
||||
; r13 = cr
|
||||
|
||||
mtcrf 0x3f, r7
|
||||
bnel+ cr2, Local_Panic
|
||||
bnel cr2, Local_Panic
|
||||
li r8, ecNoException
|
||||
b major_0x02980_0x134
|
||||
|
||||
@ -2147,12 +2147,12 @@ IntProgram
|
||||
|
||||
cmplwi cr0, r8, NanoKernelCallTable.ReturnFromException
|
||||
cmplwi cr1, r8, NanoKernelCallTable.MPDispatch
|
||||
beq- cr0, @emutrap_0_return_from_exception
|
||||
beq- cr1, @emutrap_8_mpdispatch
|
||||
beq cr0, @emutrap_0_return_from_exception
|
||||
beq cr1, @emutrap_8_mpdispatch
|
||||
cmplwi cr0, r8, NanoKernelCallTable.VMDispatch
|
||||
cmplwi cr1, r8, NanoKernelCallTable.Size
|
||||
beq- cr0, @emutrap_3_vmdispatch
|
||||
blt- cr1, @emutrap_other
|
||||
beq cr0, @emutrap_3_vmdispatch
|
||||
blt cr1, @emutrap_other
|
||||
|
||||
|
||||
; Not from the emulator image? Return will be to next instruction,
|
||||
@ -2192,13 +2192,13 @@ IntProgram
|
||||
xoris r8, r8, 0xfff
|
||||
cmplwi cr0, r8, NanoKernelCallTable.Size / 4
|
||||
cmplwi cr1, r8, NanoKernelCallTable.ReturnFromException / 4
|
||||
bge- cr0, @trap_too_high
|
||||
bge cr0, @trap_too_high
|
||||
cmplwi cr7, r8, NanoKernelCallTable.MPDispatch / 4
|
||||
cmplwi cr0, r8, NanoKernelCallTable.VMDispatch / 4
|
||||
slwi r8, r8, 2
|
||||
beq- cr1, @nonemu_return_from_exception
|
||||
beq- cr7, @nonemu_mpdispatch
|
||||
beq- cr0, @nonemu_vmdispatch
|
||||
beq cr1, @nonemu_return_from_exception
|
||||
beq cr7, @nonemu_mpdispatch
|
||||
beq cr0, @nonemu_vmdispatch
|
||||
|
||||
; Fall through to some hard truths
|
||||
bc BO_IF, 16, @_IntProgram_0x150
|
||||
@ -2227,7 +2227,7 @@ IntProgram
|
||||
lwz r9, KDP.NanoKernelInfo + NKNanoKernelInfo.NanoKernelCallCounts(r8)
|
||||
addi r9, r9, 1
|
||||
stw r9, KDP.NanoKernelInfo + NKNanoKernelInfo.NanoKernelCallCounts(r8)
|
||||
bne+ @nonemu_go
|
||||
bne @nonemu_go
|
||||
|
||||
; Non-emu MPDispatch trap with r0 == -1: muck around a bit?
|
||||
addi r10, r10, 4
|
||||
@ -2307,7 +2307,7 @@ IntExternalYellow ; OUTSIDE REFERER
|
||||
; Sanity check
|
||||
|
||||
rlwinm. r9, r11, 0, MSR_EEbit, MSR_EEbit
|
||||
beq+ MaskedInterruptTaken
|
||||
beq MaskedInterruptTaken
|
||||
|
||||
|
||||
; How many CPUs?
|
||||
@ -2319,7 +2319,7 @@ IntExternalYellow ; OUTSIDE REFERER
|
||||
|
||||
; Uniprocessor machine: go straight to PIH
|
||||
|
||||
blt+ kcPrioritizeInterrupts
|
||||
blt kcPrioritizeInterrupts
|
||||
|
||||
|
||||
; Check with the CPU plugin whether this is an interprocessor interrupt
|
||||
@ -2338,9 +2338,9 @@ IntExternalYellow ; OUTSIDE REFERER
|
||||
cmpwi cr2, r8, -29279 ; interprocessor interrupt!
|
||||
; else: real external interrupt
|
||||
|
||||
beq+ cr0, kcPrioritizeInterrupts
|
||||
beq+ cr1, IntReturn
|
||||
bne+ cr2, kcPrioritizeInterrupts
|
||||
beq cr0, kcPrioritizeInterrupts
|
||||
beq cr1, IntReturn
|
||||
bne cr2, kcPrioritizeInterrupts
|
||||
|
||||
mfsprg r9, 0 ; "alert" => run scheduler evaluation
|
||||
li r8, 1
|
||||
@ -2381,7 +2381,7 @@ SIGP
|
||||
bc BO_IF, 16, major_0x04a20_0x18 ; not sure about this
|
||||
cmpwi cr2, r8, 0
|
||||
lwz r18, EWA.SIGPSelector(r23)
|
||||
beq- cr2, @args_in_registers
|
||||
beq cr2, @args_in_registers
|
||||
slwi r20, r18, 2
|
||||
@args_in_registers
|
||||
|
||||
@ -2392,11 +2392,11 @@ SIGP
|
||||
lwz r17, CoherenceGroup.PA_CpuPluginDesc(r22)
|
||||
lwz r16, CoherenceGroup.CpuPluginSelectorCount(r22)
|
||||
mr. r17, r17
|
||||
beqlr-
|
||||
beqlr
|
||||
slwi r16, r16, 2
|
||||
li r8, -0x7267
|
||||
cmplw r20, r16
|
||||
bgelr-
|
||||
bgelr
|
||||
|
||||
; Save some registers in advance of this unusual "upcall".
|
||||
stw r10, EWA.SIGPSavedR10(r23)
|
||||
@ -2416,7 +2416,7 @@ SIGP
|
||||
lwz r9, EWA.PA_CurAddressSpace(r23)
|
||||
lwz r8, CoherenceGroup.CpuPluginSpacePtr(r22)
|
||||
cmpw r9, r8
|
||||
beq- @noNeedToSwitchSpace
|
||||
beq @noNeedToSwitchSpace
|
||||
bl SchSwitchSpace
|
||||
@noNeedToSwitchSpace
|
||||
|
||||
@ -2466,7 +2466,7 @@ SIGP
|
||||
addi r6, r23, -0x318
|
||||
stw r6, EWA.PA_ContextBlock(r23)
|
||||
|
||||
beq- cr2, @args_in_registers_2
|
||||
beq cr2, @args_in_registers_2
|
||||
|
||||
;args not in registers
|
||||
lwz r4, EWA.SIGPCallR4(r23)
|
||||
@ -2505,14 +2505,14 @@ major_0x04a20_0x18 ; OUTSIDE REFERER
|
||||
lwz r7, -0x02b0(r23)
|
||||
andis. r8, r11, 0x02
|
||||
stw r7, -0x0010(r23)
|
||||
bne- major_0x04a20_0x30
|
||||
bne major_0x04a20_0x30
|
||||
li r3, -0x7265
|
||||
|
||||
major_0x04a20_0x30
|
||||
lwz r8, EWA.SIGPSpacOnResume(r23)
|
||||
lwz r9, -0x001c(r23)
|
||||
cmpw r9, r8
|
||||
beq- major_0x04a20_0x44
|
||||
beq major_0x04a20_0x44
|
||||
bl SchSwitchSpace
|
||||
|
||||
major_0x04a20_0x44
|
||||
@ -2551,7 +2551,7 @@ IntSyscall ; OUTSIDE REFERER
|
||||
; Only r1 and LR have been saved, so these compares clobber cr0
|
||||
|
||||
cmpwi r0, -3
|
||||
bne- @not_minus_3
|
||||
bne @not_minus_3
|
||||
|
||||
; sc -3:
|
||||
|
||||
@ -2559,7 +2559,7 @@ IntSyscall ; OUTSIDE REFERER
|
||||
mfspr r1, srr1
|
||||
rlwinm. r0, r1, 26, 26, 27 ; nonsense code?
|
||||
_bclr r1, r1, 17
|
||||
blt- @dont_unset_pr ; r0 should never have bit 0 set
|
||||
blt @dont_unset_pr ; r0 should never have bit 0 set
|
||||
mtspr srr1, r1
|
||||
@dont_unset_pr
|
||||
|
||||
@ -2573,7 +2573,7 @@ IntSyscall ; OUTSIDE REFERER
|
||||
@not_minus_3
|
||||
cmpwi r0, -1
|
||||
mfsprg r1, 0
|
||||
bne- @not_minus_1
|
||||
bne @not_minus_1
|
||||
|
||||
; sc -1: mess around with flags
|
||||
|
||||
@ -2586,7 +2586,7 @@ IntSyscall ; OUTSIDE REFERER
|
||||
|
||||
@not_minus_1
|
||||
cmpwi r0, -2
|
||||
bne- @not_any_special
|
||||
bne @not_any_special
|
||||
|
||||
; sc -2: more flag nonsense?
|
||||
|
||||
|
@ -103,7 +103,7 @@ MPCallTableEnd
|
||||
lwz r16, KDP.NanoKernelInfo + NKNanoKernelInfo.MPDispatchCountTblPtr(r1)
|
||||
rlwinm r17, r15, 2, 20, 29
|
||||
cmplwi r16, 0
|
||||
beq- @no_count
|
||||
beq @no_count
|
||||
lwzx r18, r16, r17
|
||||
addi r18, r18, 1
|
||||
stwx r18, r16, r17
|
||||
@ -115,7 +115,7 @@ MPCallTableEnd
|
||||
lwzx r15, r16, r14
|
||||
add r15, r15, r14
|
||||
mtlr r15
|
||||
bltlr-
|
||||
bltlr
|
||||
|
||||
|
||||
|
||||
@ -158,7 +158,7 @@ ScrambleMPCall ; OUTSIDE REFERER
|
||||
mfspr r16, pvr
|
||||
rlwinm. r16, r16, 0, 0, 14
|
||||
|
||||
beq- @is_601
|
||||
beq @is_601
|
||||
mftb r4
|
||||
b @not_601
|
||||
@is_601
|
||||
@ -295,24 +295,24 @@ MPCall_0 ; OUTSIDE REFERER
|
||||
andi. r16, r3, 0xfff
|
||||
mr r30, r7
|
||||
mr r29, r6
|
||||
bne+ ReturnMPCallOOM
|
||||
bne ReturnMPCallOOM
|
||||
|
||||
; Fail if this page is outside of the PAR
|
||||
rlwinm. r4, r3, 20, 12, 31
|
||||
lwz r9, KDP.PrimaryAddrRangePages(r1)
|
||||
beq+ ReturnMPCallOOM
|
||||
beq ReturnMPCallOOM
|
||||
cmplw r4, r9
|
||||
bge+ ReturnMPCallOOM
|
||||
bge ReturnMPCallOOM
|
||||
|
||||
_Lock PSA.HTABLock, scratch1=r17, scratch2=r18
|
||||
|
||||
bl GetPARPageInfo
|
||||
bge- cr4, MPCall_0_0xd8
|
||||
bgt- cr5, MPCall_0_0xd8
|
||||
bns- cr7, MPCall_0_0xd8
|
||||
bgt- cr7, MPCall_0_0xd8
|
||||
bltl+ cr5, RemovePageFromTLB
|
||||
bgel+ cr5, VMSecondLastExportedFunc
|
||||
bge cr4, MPCall_0_0xd8
|
||||
bgt cr5, MPCall_0_0xd8
|
||||
bns cr7, MPCall_0_0xd8
|
||||
bgt cr7, MPCall_0_0xd8
|
||||
bltl cr5, RemovePageFromTLB
|
||||
bgel cr5, VMSecondLastExportedFunc
|
||||
ori r16, r16, 0x404
|
||||
li r31, 0x03
|
||||
rlwimi r9, r31, 0, 30, 31
|
||||
@ -376,17 +376,17 @@ MPRegisterCpuPlugin
|
||||
; Check that address of CPU plugin is page-aligned,
|
||||
; and that CPU plugin size if page-aligned and nonzero.
|
||||
andi. r8, r4, 0xfff
|
||||
bne+ ReturnMPCallOOM
|
||||
bne ReturnMPCallOOM
|
||||
andi. r8, r5, 0xfff
|
||||
cmpwi cr1, r5, 0
|
||||
bne+ ReturnMPCallOOM
|
||||
beq+ cr1, ReturnMPCallOOM
|
||||
bne ReturnMPCallOOM
|
||||
beq cr1, ReturnMPCallOOM
|
||||
|
||||
_Lock PSA.SchLock, scratch1=r18, scratch2=r19
|
||||
|
||||
; r14 = coherence group ptr (motherpboard CGRP if not specified in first argument)
|
||||
mr. r8, r3
|
||||
bne- @use_specified_cgrp
|
||||
bne @use_specified_cgrp
|
||||
mfsprg r15, 0
|
||||
lwz r14, EWA.CPUBase + CPU.LLL + LLL.Freeform(r15)
|
||||
b @cgrp_done
|
||||
@ -394,12 +394,12 @@ MPRegisterCpuPlugin
|
||||
bl LookupID
|
||||
cmpwi r9, CoherenceGroup.kIDClass
|
||||
mr r14, r8
|
||||
bne+ ReturnMPCallInvalidIDErr
|
||||
bne ReturnMPCallInvalidIDErr
|
||||
@cgrp_done
|
||||
|
||||
; Fail if no CPU plugin descriptor is passed in fourth argument
|
||||
cmpwi r16, 0
|
||||
bne- @no_table_ptr
|
||||
bne @no_table_ptr
|
||||
stw r16, CoherenceGroup.PA_CpuPluginDesc(r14)
|
||||
stw r16, CoherenceGroup.LA_CpuPluginDesc(r14)
|
||||
b ReleaseAndReturnMPCallInvalidIDErr
|
||||
@ -409,19 +409,19 @@ MPRegisterCpuPlugin
|
||||
add r17, r4, r5
|
||||
cmplw r16, r4
|
||||
cmplw cr1, r16, r17
|
||||
blt+ ReleaseAndReturnMPCallOOM
|
||||
bge+ cr1, ReleaseAndReturnMPCallOOM
|
||||
blt ReleaseAndReturnMPCallOOM
|
||||
bge cr1, ReleaseAndReturnMPCallOOM
|
||||
|
||||
; What the hell? Wouldn't this always fail?
|
||||
lwz r19, CoherenceGroup.PA_CpuPluginDesc(r14)
|
||||
mr. r19, r19
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
|
||||
; r18 = physical address of plugin (assumes page-aligned)
|
||||
mr r27, r4
|
||||
addi r29, r1, KDP.BATs + 0xa0
|
||||
bl PagingFunc3
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
rlwinm r18, r31, 0, 0, 19
|
||||
|
||||
; r18 = physical address of descriptor (does not assume page-aligned)
|
||||
@ -429,7 +429,7 @@ MPRegisterCpuPlugin
|
||||
mr r19, r16
|
||||
addi r29, r1, KDP.BATs + 0xa0
|
||||
bl PagingFunc3
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
rlwimi r19, r31, 0, 0, 19
|
||||
|
||||
; Populate the coherence group structure.
|
||||
@ -449,7 +449,7 @@ MPRegisterCpuPlugin
|
||||
lwz r27, 0(r19)
|
||||
addi r29, r1, KDP.BATs + 0xa0
|
||||
bl PagingFunc3
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
stw r27, CoherenceGroup.PA_CpuPluginStackPtrs(r14)
|
||||
|
||||
@ -468,19 +468,19 @@ MPRegisterCpuPlugin
|
||||
lwz r17, 0x1c(r19)
|
||||
cmplwi r17, 64
|
||||
stw r17, CoherenceGroup.CpuPluginSelectorCount(r14)
|
||||
bgt+ ReleaseAndReturnMPCallOOM
|
||||
bgt ReleaseAndReturnMPCallOOM
|
||||
|
||||
; Convert those entries to physical addresses
|
||||
@table_convert_loop
|
||||
lwzu r27, 4(r16)
|
||||
addi r29, r1, KDP.BATs + 0xa0
|
||||
bl PagingFunc3
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
subi r17, r17, 1
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
cmpwi r17, 0
|
||||
stw r27, 0(r16)
|
||||
bgt+ @table_convert_loop
|
||||
bgt @table_convert_loop
|
||||
|
||||
|
||||
|
||||
@ -505,7 +505,7 @@ MPProcessors
|
||||
mr. r8, r3
|
||||
|
||||
lwz r3, CoherenceGroup.CpuCount(r14)
|
||||
beq+ CommonMPCallReturnPath
|
||||
beq CommonMPCallReturnPath
|
||||
|
||||
lwz r3, CoherenceGroup.ScheduledCpuCount(r14)
|
||||
b CommonMPCallReturnPath
|
||||
@ -522,7 +522,7 @@ MPCreateProcess
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
mr. r8, r3
|
||||
bne- @spac_id_supplied
|
||||
bne @spac_id_supplied
|
||||
lwz r3, PSA.SystemAddressSpaceID(r1)
|
||||
mr r8, r3
|
||||
@spac_id_supplied
|
||||
@ -533,19 +533,19 @@ MPCreateProcess
|
||||
|
||||
cmpwi r9, AddressSpace.kIDClass
|
||||
mr r30, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
|
||||
li r8, 0x20 ;Process.Size
|
||||
bl PoolAllocClear
|
||||
|
||||
mr. r31, r8
|
||||
beq+ ReleaseAndScrambleMPCall
|
||||
beq ReleaseAndScrambleMPCall
|
||||
|
||||
li r9, Process.kIDClass
|
||||
bl MakeID
|
||||
|
||||
cmpwi r8, 0x00
|
||||
bne- @did_not_fail
|
||||
bne @did_not_fail
|
||||
mr r8, r31
|
||||
bl PoolFree
|
||||
b ReleaseAndScrambleMPCall
|
||||
@ -582,11 +582,11 @@ MPTerminateProcess
|
||||
bl LookupID
|
||||
cmpwi r9, Process.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
lwz r16, 0x0008(r31)
|
||||
rlwinm. r17, r16, 0, 30, 30
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
ori r16, r16, 0x02
|
||||
stw r16, 0x0008(r31)
|
||||
mr r8, r3
|
||||
@ -608,15 +608,15 @@ MPDeleteProcess
|
||||
mr r8, r3
|
||||
bl LookupID
|
||||
cmpwi r9, Process.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
|
||||
lwz r16, Process.Flags(r31)
|
||||
lwz r17, Process.TaskCount(r31)
|
||||
rlwinm. r8, r16, 0, Process.kFlag30, Process.kFlag30
|
||||
cmpwi cr1, r17, 0
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
bne+ cr1, ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
bne cr1, ReleaseAndReturnMPCallOOM
|
||||
|
||||
mr r8, r3
|
||||
bl DeleteID
|
||||
@ -639,7 +639,7 @@ MPCall_6_0x78 ; OUTSIDE REFERER
|
||||
lwz r17, KDP.PA_ECB(r1)
|
||||
lwz r31, EWA.PA_CurTask(r16)
|
||||
|
||||
beq- MPCall_6_0xb4
|
||||
beq MPCall_6_0xb4
|
||||
lwz r8, ContextBlock.PriorityShifty(r17)
|
||||
rlwinm r8, r8, 0, 24, 21
|
||||
oris r8, r8, 0x8000
|
||||
@ -679,19 +679,19 @@ MPYieldWithHint
|
||||
rlwinm. r8, r7, 0, 10, 10
|
||||
lwz r17, KDP.PA_ECB(r1)
|
||||
lwz r31, EWA.PA_CurTask(r16)
|
||||
beq- @i_am_important ; not 68k mode?
|
||||
beq @i_am_important ; not 68k mode?
|
||||
|
||||
clrlwi. r8, r3, 31
|
||||
lwz r8, ContextBlock.PriorityShifty(r17)
|
||||
rlwinm r8, r8, 0, 24, 21
|
||||
oris r8, r8, 0x8000
|
||||
stw r8, ContextBlock.PriorityShifty(r17)
|
||||
beq- @i_am_important ; MPYield call
|
||||
beq @i_am_important ; MPYield call
|
||||
|
||||
; If this task is
|
||||
lbz r16, Task.Priority(r31)
|
||||
cmpwi r16, Task.kNominalPriority
|
||||
bge- @return
|
||||
bge @return
|
||||
mr r8, r31
|
||||
bl SchTaskUnrdy
|
||||
li r16, Task.kNominalPriority
|
||||
@ -722,7 +722,7 @@ MPYieldWithHint
|
||||
MPDelayUntil
|
||||
|
||||
rlwinm. r8, r7, 0, EWA.kFlagBlue, EWA.kFlagBlue
|
||||
bne+ ReturnMPCallBlueBlocking
|
||||
bne ReturnMPCallBlueBlocking
|
||||
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
b _MPDelayUntilCommon
|
||||
@ -740,14 +740,14 @@ MPDelayUntilSys
|
||||
|
||||
rlwinm. r8, r7, 0, EWA.kFlagBlue, EWA.kFlagBlue
|
||||
lwz r16, KDP.NanoKernelInfo + NKNanoKernelInfo.ExternalIntCount(r1)
|
||||
beq- _MPDelayUntilCommon
|
||||
beq _MPDelayUntilCommon
|
||||
|
||||
; Why the hell are we counting interrupts?
|
||||
lwz r17, PSA.OtherSystemContextPtr(r1)
|
||||
lwz r18, KDP.PA_ECB(r1)
|
||||
cmpw r16, r17
|
||||
stw r16, PSA.OtherSystemContextPtr(r1)
|
||||
bne+ ReturnZeroFromMPCall
|
||||
bne ReturnZeroFromMPCall
|
||||
|
||||
lwz r8, ContextBlock.PriorityShifty(r18)
|
||||
rlwinm r8, r8, 0, 24, 21
|
||||
@ -759,7 +759,7 @@ MPDelayUntilSys
|
||||
lwz r16, PSA.BlueSpinningOn(r1)
|
||||
cmpwi r16, -1
|
||||
li r16, 0
|
||||
bne- _MPDelayUntilCommon
|
||||
bne _MPDelayUntilCommon
|
||||
stw r16, PSA.BlueSpinningOn(r1)
|
||||
b ReleaseAndReturnZeroFromMPCall
|
||||
|
||||
@ -809,7 +809,7 @@ MPCall_34 ; OUTSIDE REFERER
|
||||
; r9 = kind
|
||||
bl MakeID
|
||||
cmpwi r8, 0x00
|
||||
beq+ ScrambleMPCall
|
||||
beq ScrambleMPCall
|
||||
mr r5, r8
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@ -821,7 +821,7 @@ MPCall_35 ; OUTSIDE REFERER
|
||||
mr r8, r3
|
||||
bl DeleteID
|
||||
cmpwi r8, 0x01
|
||||
beq+ ReturnZeroFromMPCall
|
||||
beq ReturnZeroFromMPCall
|
||||
b ReturnMPCallInvalidIDErr
|
||||
|
||||
|
||||
@ -837,7 +837,7 @@ MPCall_36 ; OUTSIDE REFERER
|
||||
|
||||
mr r4, r9
|
||||
mr r5, r8
|
||||
bne+ ReturnZeroFromMPCall
|
||||
bne ReturnZeroFromMPCall
|
||||
b ReturnMPCallInvalidIDErr
|
||||
|
||||
|
||||
@ -868,7 +868,7 @@ KCGetNextID ; OUTSIDE REFERER
|
||||
bl GetNextIDOfClass
|
||||
cmpwi r8, 0x00
|
||||
mr r4, r8
|
||||
bne+ ReturnZeroFromMPCall
|
||||
bne ReturnZeroFromMPCall
|
||||
b ReturnMPCallInvalidIDErr
|
||||
|
||||
|
||||
@ -895,7 +895,7 @@ KCGetNextIDOwnedByProcess ; OUTSIDE REFERER
|
||||
mr r8, r3
|
||||
bl LookupID
|
||||
cmpwi r9, Process.kIDClass
|
||||
bne+ ReturnMPCallInvalidIDErr
|
||||
bne ReturnMPCallInvalidIDErr
|
||||
|
||||
|
||||
; Loop over IDs (and resolve them) until one is owned by the Process
|
||||
@ -909,7 +909,7 @@ KCGetNextIDOwnedByProcess ; OUTSIDE REFERER
|
||||
; RET ID r8
|
||||
|
||||
mr. r5, r8
|
||||
beq+ ReturnMPCallInvalidIDErr
|
||||
beq ReturnMPCallInvalidIDErr
|
||||
|
||||
; ARG ID r8
|
||||
bl LookupID
|
||||
@ -917,28 +917,28 @@ KCGetNextIDOwnedByProcess ; OUTSIDE REFERER
|
||||
|
||||
cmpwi r4, Task.kIDClass
|
||||
cmpwi cr1, r4, Timer.kIDClass
|
||||
beq- @task
|
||||
beq- cr1, @timer
|
||||
beq @task
|
||||
beq cr1, @timer
|
||||
|
||||
cmpwi r4, Queue.kIDClass
|
||||
cmpwi cr1, r4, Semaphore.kIDClass
|
||||
beq- @queue
|
||||
beq- cr1, @semaphore
|
||||
beq @queue
|
||||
beq cr1, @semaphore
|
||||
|
||||
cmpwi r4, CriticalRegion.kIDClass
|
||||
cmpwi cr1, r4, AddressSpace.kIDClass
|
||||
beq- @critical_region
|
||||
beq- cr1, @address_space
|
||||
beq @critical_region
|
||||
beq cr1, @address_space
|
||||
|
||||
cmpwi r4, EventGroup.kIDClass
|
||||
cmpwi cr1, r4, Area.kIDClass
|
||||
beq- @event_group
|
||||
beq- cr1, @area
|
||||
beq @event_group
|
||||
beq cr1, @area
|
||||
|
||||
cmpwi r4, Notification.kIDClass
|
||||
cmpwi cr1, r4, ConsoleLog.kIDClass
|
||||
beq- @notification
|
||||
beq- cr1, @console_log
|
||||
beq @notification
|
||||
beq cr1, @console_log
|
||||
|
||||
b ReturnParamErrFromMPCall
|
||||
|
||||
@ -947,67 +947,67 @@ KCGetNextIDOwnedByProcess ; OUTSIDE REFERER
|
||||
lwz r9, Task.ProcessID(r8)
|
||||
|
||||
rlwinm. r17, r17, 0, 15, 15
|
||||
beq- @not_owned_by_blue_process
|
||||
beq @not_owned_by_blue_process
|
||||
lwz r9, PSA.blueProcessPtr(r1)
|
||||
lwz r9, Task.ID(r9)
|
||||
@not_owned_by_blue_process
|
||||
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@timer
|
||||
lwz r9, Timer.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@queue
|
||||
lwz r9, Queue.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@semaphore
|
||||
lwz r9, Semaphore.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@critical_region
|
||||
lwz r9, CriticalRegion.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@address_space
|
||||
lwz r9, AddressSpace.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@event_group
|
||||
lwz r9, EventGroup.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@area
|
||||
lwz r9, Area.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@notification
|
||||
lwz r9, Notification.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
@console_log
|
||||
lwz r9, ConsoleLog.ProcessID(r8)
|
||||
cmpw r9, r3
|
||||
bne+ @try_another_id
|
||||
bne @try_another_id
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
|
||||
@ -1021,7 +1021,7 @@ MPCall_38 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Process.kIDClass
|
||||
|
||||
bne+ ReturnMPCallInvalidIDErr
|
||||
bne ReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
|
||||
MPCall_38_0x14
|
||||
@ -1029,7 +1029,7 @@ MPCall_38_0x14
|
||||
li r9, 0x02
|
||||
bl GetNextIDOfClass
|
||||
cmpwi r8, 0x00
|
||||
beq+ ReturnMPCallInvalidIDErr
|
||||
beq ReturnMPCallInvalidIDErr
|
||||
mr r4, r8
|
||||
|
||||
; r8 = id
|
||||
@ -1040,13 +1040,13 @@ MPCall_38_0x14
|
||||
lwz r17, 0x0064(r8)
|
||||
lwz r16, 0x0060(r8)
|
||||
rlwinm. r17, r17, 0, 15, 15
|
||||
beq- MPCall_38_0x48
|
||||
beq MPCall_38_0x48
|
||||
lwz r16, -0x041c(r1)
|
||||
lwz r16, 0x0000(r16)
|
||||
|
||||
MPCall_38_0x48
|
||||
cmpw r16, r3
|
||||
beq+ ReturnZeroFromMPCall
|
||||
beq ReturnZeroFromMPCall
|
||||
b MPCall_38_0x14
|
||||
|
||||
|
||||
@ -1055,7 +1055,7 @@ MPCall_38_0x48
|
||||
|
||||
MPCall_62 ; OUTSIDE REFERER
|
||||
mr. r8, r3
|
||||
bne- MPCall_62_0x18
|
||||
bne MPCall_62_0x18
|
||||
mfsprg r15, 0
|
||||
lwz r31, EWA.CPUBase + CPU.LLL + LLL.Freeform(r15)
|
||||
lwz r3, 0x0000(r31)
|
||||
@ -1066,14 +1066,14 @@ MPCall_62_0x18
|
||||
bl LookupID
|
||||
cmpwi r9, CoherenceGroup.kIDClass
|
||||
|
||||
bne+ ReturnMPCallInvalidIDErr
|
||||
bne ReturnMPCallInvalidIDErr
|
||||
|
||||
MPCall_62_0x24
|
||||
mr r8, r4
|
||||
li r9, 0x07
|
||||
bl GetNextIDOfClass
|
||||
cmpwi r8, 0x00
|
||||
beq+ ReturnMPCallInvalidIDErr
|
||||
beq ReturnMPCallInvalidIDErr
|
||||
mr r4, r8
|
||||
|
||||
; r8 = id
|
||||
@ -1084,7 +1084,7 @@ MPCall_62_0x24
|
||||
lwz r16, 0x0008(r8)
|
||||
lwz r17, 0x0000(r16)
|
||||
cmpw r17, r3
|
||||
bne+ MPCall_62_0x24
|
||||
bne MPCall_62_0x24
|
||||
b ReturnZeroFromMPCall
|
||||
|
||||
|
||||
@ -1093,7 +1093,7 @@ MPCall_62_0x24
|
||||
|
||||
KCCreateCpuStruct ; OUTSIDE REFERER
|
||||
mr. r8, r3
|
||||
bne- KCCreateCpuStruct_0x14
|
||||
bne KCCreateCpuStruct_0x14
|
||||
mfsprg r15, 0
|
||||
lwz r30, EWA.CPUBase + CPU.LLL + LLL.Freeform(r15)
|
||||
b KCCreateCpuStruct_0x24
|
||||
@ -1104,7 +1104,7 @@ KCCreateCpuStruct_0x14
|
||||
cmpwi r9, CoherenceGroup.kIDClass
|
||||
|
||||
mr r30, r8
|
||||
bne+ ReturnMPCallInvalidIDErr
|
||||
bne ReturnMPCallInvalidIDErr
|
||||
|
||||
KCCreateCpuStruct_0x24
|
||||
li r8, 960
|
||||
@ -1115,7 +1115,7 @@ KCCreateCpuStruct_0x24
|
||||
; r8 = ptr
|
||||
|
||||
mr. r31, r8
|
||||
beq+ ScrambleMPCall
|
||||
beq ScrambleMPCall
|
||||
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
@ -1210,12 +1210,12 @@ MPDeleteProcessor
|
||||
bl LookupID
|
||||
cmpwi r9, CPU.kIDClass
|
||||
mr r31, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
|
||||
lwz r16, CPU.Flags(r31)
|
||||
lisori r17, 9
|
||||
and. r17, r17, r16
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
|
||||
mfsprg r15, 0
|
||||
|
||||
@ -1253,12 +1253,12 @@ KCStartCPU ; OUTSIDE REFERER
|
||||
mr r8, r3
|
||||
bl LookupID
|
||||
cmpwi r9, CPU.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
|
||||
mr r30, r8
|
||||
lwz r16, CPU.Flags(r30)
|
||||
rlwinm. r8, r16, 0, 28, 28
|
||||
bne+ ReleaseAndReturnZeroFromMPCall
|
||||
bne ReleaseAndReturnZeroFromMPCall
|
||||
|
||||
mfsprg r15, 0
|
||||
li r16, kResetProcessor
|
||||
@ -1274,8 +1274,8 @@ KCStartCPU ; OUTSIDE REFERER
|
||||
bl SIGP
|
||||
cmpwi r8, -0x7264
|
||||
cmpwi cr1, r8, 0
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
bne+ cr1, ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
bne cr1, ReleaseAndReturnMPCallOOM
|
||||
|
||||
|
||||
; Every CPU gets an idle task
|
||||
@ -1291,7 +1291,7 @@ KCStartCPU ; OUTSIDE REFERER
|
||||
|
||||
mr r7, r31
|
||||
mr. r31, r8
|
||||
beq+ ReleaseAndScrambleMPCall
|
||||
beq ReleaseAndScrambleMPCall
|
||||
|
||||
stw r31, CPU.IdleTaskPtr(r30)
|
||||
|
||||
@ -1344,10 +1344,10 @@ MPCall_44_0x15c
|
||||
bl SIGP
|
||||
cmpwi r8, -0x7264
|
||||
cmpwi cr1, r8, 0x00
|
||||
beq+ MPCall_44_0x15c
|
||||
beq MPCall_44_0x15c
|
||||
|
||||
|
||||
bne- cr1, MPCall_Panic
|
||||
bne cr1, MPCall_Panic
|
||||
|
||||
mfsprg r15, 0
|
||||
|
||||
@ -1371,8 +1371,8 @@ MPCall_44_0x15c
|
||||
|
||||
cmpwi r8, -0x7264
|
||||
cmpwi cr1, r8, 0
|
||||
beq+ @retry
|
||||
bne- cr1, MPCall_Panic
|
||||
beq @retry
|
||||
bne cr1, MPCall_Panic
|
||||
|
||||
_log 'Processor scheduled^n'
|
||||
|
||||
@ -1395,19 +1395,19 @@ KCStopScheduling ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, CPU.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r30, r8
|
||||
lwz r16, 0x0018(r30)
|
||||
rlwinm. r8, r16, 0, 28, 28
|
||||
|
||||
; r1 = kdp
|
||||
beq+ ReleaseAndReturnZeroFromMPCall
|
||||
beq ReleaseAndReturnZeroFromMPCall
|
||||
lwz r31, 0x001c(r30)
|
||||
clrlwi. r8, r16, 0x1f
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lbz r17, 0x0019(r31)
|
||||
cmpwi r17, 0x00
|
||||
beq- KCStopScheduling_0x94
|
||||
beq KCStopScheduling_0x94
|
||||
lwz r17, 0x0064(r31)
|
||||
oris r17, r17, 0x80
|
||||
stw r17, 0x0064(r31)
|
||||
@ -1458,10 +1458,10 @@ MPCpuPlugin
|
||||
MPCall_47 ; OUTSIDE REFERER
|
||||
rlwinm. r8, r7, 0, 12, 12
|
||||
lwz r15, 0x00d8(r6)
|
||||
beq+ ReturnMPCallOOM
|
||||
beq ReturnMPCallOOM
|
||||
cmpwi r15, 0x00
|
||||
mr r16, r2
|
||||
beq+ ReturnMPCallOOM
|
||||
beq ReturnMPCallOOM
|
||||
mr r17, r3
|
||||
mr r18, r4
|
||||
mr r19, r5
|
||||
@ -1492,10 +1492,10 @@ MPCall_48_Bad ; OUTSIDE REFERER
|
||||
NKxprintf ; OUTSIDE REFERER
|
||||
rlwinm. r9, r11, 0, 27, 27
|
||||
mr r8, r3
|
||||
beq- NKxprintf_0x1c
|
||||
beq NKxprintf_0x1c
|
||||
li r9, 0x00
|
||||
bl V2P
|
||||
beq- NKxprintf_0x24
|
||||
beq NKxprintf_0x24
|
||||
rlwimi r8, r17, 0, 0, 19
|
||||
|
||||
NKxprintf_0x1c
|
||||
@ -1518,8 +1518,8 @@ NKPrintHex
|
||||
cmpwi r4, 1
|
||||
cmpwi cr1, r4, 2
|
||||
|
||||
beq- @byte
|
||||
beq- cr1, @half
|
||||
beq @byte
|
||||
beq cr1, @half
|
||||
|
||||
|
||||
bl Printw
|
||||
@ -1553,7 +1553,7 @@ KCSetBlueProcessID ; OUTSIDE REFERER
|
||||
mfsprg r16, 0
|
||||
rlwinm. r8, r7, 0, 10, 10
|
||||
lwz r31, EWA.PA_CurTask(r16)
|
||||
beq+ ReturnMPCallOOM
|
||||
beq ReturnMPCallOOM
|
||||
mr r8, r3
|
||||
|
||||
; r8 = id
|
||||
@ -1562,7 +1562,7 @@ KCSetBlueProcessID ; OUTSIDE REFERER
|
||||
; r9 = 0:inval, 1:proc, 2:task, 3:timer, 4:q, 5:sema, 6:cr, 7:cpu, 8:addrspc, 9:evtg, 10:cohg, 11:area, 12:not, 13:log
|
||||
|
||||
cmpwi r9, Process.kIDClass
|
||||
bne+ ReturnMPCallInvalidIDErr
|
||||
bne ReturnMPCallInvalidIDErr
|
||||
stw r3, Task.ProcessID(r31)
|
||||
stw r4, 0x00ec(r31)
|
||||
b ReturnZeroFromMPCall
|
||||
@ -1579,10 +1579,10 @@ KCRegisterThermalHandler ; OUTSIDE REFERER
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
mr. r8, r3
|
||||
beq- @is_zero
|
||||
beq @is_zero
|
||||
bl LookupID
|
||||
cmpwi r9, Notification.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
@is_zero
|
||||
|
||||
stw r3, PSA.ThermalHandlerID(r1)
|
||||
@ -1601,10 +1601,10 @@ KCRegisterPMFHandler ; OUTSIDE REFERER
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
mr. r8, r3
|
||||
beq- @is_zero
|
||||
beq @is_zero
|
||||
bl LookupID
|
||||
cmpwi r9, Notification.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
@is_zero
|
||||
|
||||
stw r3, PSA.PMFHandlerID(r1)
|
||||
@ -1626,11 +1626,11 @@ KCMarkPMFTask ; OUTSIDE REFERER
|
||||
mr. r8, r3
|
||||
lwz r31, EWA.PA_CurTask(r30)
|
||||
|
||||
beq- @use_blue_task_instead
|
||||
beq @use_blue_task_instead
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
mr r31, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
@use_blue_task_instead
|
||||
|
||||
; Insert bit 31 of r4 into bit 21 of these flags
|
||||
@ -1663,18 +1663,18 @@ NKLocateInfoRecord
|
||||
|
||||
cmpwi r3, 5
|
||||
cmpwi cr1, r3, 2
|
||||
beq- @ProcessorInfo
|
||||
beq- cr1, @SystemInfo
|
||||
beq @ProcessorInfo
|
||||
beq cr1, @SystemInfo
|
||||
|
||||
cmpwi r3, 3
|
||||
cmpwi cr1, r3, 4
|
||||
beq- @DiagInfo
|
||||
beq- cr1, @NanoKernelInfo
|
||||
beq @DiagInfo
|
||||
beq cr1, @NanoKernelInfo
|
||||
|
||||
cmpwi r3, 7
|
||||
cmpwi cr1, r3, 6
|
||||
beq- @ProcessorState
|
||||
bne+ cr1, ReturnParamErrFromMPCall
|
||||
beq @ProcessorState
|
||||
bne cr1, ReturnParamErrFromMPCall
|
||||
|
||||
lwz r4, KDP.InfoRecord + InfoRecord.NKHWInfoPtr(r1)
|
||||
lhz r16, KDP.InfoRecord + InfoRecord.NKHWInfoLen(r1)
|
||||
@ -1730,7 +1730,7 @@ NKLocateInfoRecord
|
||||
NKSetPrInfoClockRates
|
||||
|
||||
cmplwi r3, 2
|
||||
bge+ ReturnParamErrFromMPCall
|
||||
bge ReturnParamErrFromMPCall
|
||||
|
||||
mulli r17, r3, 16
|
||||
addi r18, r1, KDP.ProcessorInfo + NKProcessorInfo.ClockRates
|
||||
@ -1773,7 +1773,7 @@ NKSetClockStep ; OUTSIDE REFERER
|
||||
lwz r8, EWA.CPUBase + CPU.LLL + LLL.Freeform(r9)
|
||||
lwz r9, 0x0024(r8)
|
||||
cmpwi r9, 0x01
|
||||
bgt+ ReturnMPCallOOM
|
||||
bgt ReturnMPCallOOM
|
||||
lhz r19, 0x0f7e(r1)
|
||||
_log 'NKSetClockStep - current '
|
||||
mr r8, r19
|
||||
@ -1784,8 +1784,8 @@ NKSetClockStep ; OUTSIDE REFERER
|
||||
_log '^n'
|
||||
cmplwi r3, 0x02
|
||||
cmpw cr1, r3, r19
|
||||
bge+ ReturnParamErrFromMPCall
|
||||
beq+ cr1, ReturnMPCallOOM
|
||||
bge ReturnParamErrFromMPCall
|
||||
beq cr1, ReturnMPCallOOM
|
||||
mulli r17, r3, 0x10
|
||||
addi r18, r1, 0xf80
|
||||
sth r17, 0x0f7e(r1)
|
||||
@ -1801,13 +1801,13 @@ NKSetClockStep ; OUTSIDE REFERER
|
||||
|
||||
lwz r16, 0x0008(r18)
|
||||
stw r16, -0x0438(r1)
|
||||
bgt- cr1, NKSetClockStep_0xec
|
||||
bgt cr1, NKSetClockStep_0xec
|
||||
lwz r31, -0x0434(r1)
|
||||
lbz r18, 0x0017(r31)
|
||||
cmpwi r18, 0x00
|
||||
|
||||
; r1 = kdp
|
||||
beq+ ReleaseAndReturnZeroFromMPCall
|
||||
beq ReleaseAndReturnZeroFromMPCall
|
||||
mr r8, r31
|
||||
bl DequeueTimer
|
||||
|
||||
@ -1820,7 +1820,7 @@ NKSetClockStep_0xec
|
||||
cmpwi r18, 0x01
|
||||
|
||||
; r1 = kdp
|
||||
beq+ ReleaseAndReturnZeroFromMPCall
|
||||
beq ReleaseAndReturnZeroFromMPCall
|
||||
bl GetTime
|
||||
stw r8, 0x0038(r31)
|
||||
stw r9, 0x003c(r31)
|
||||
@ -1847,24 +1847,24 @@ NKSetClockDriftCorrection ; OUTSIDE REFERER
|
||||
lwz r31, -0x0364(r1)
|
||||
mfsprg r9, 0
|
||||
cmpwi r31, 0x00
|
||||
beq+ ReturnMPCallOOM
|
||||
beq ReturnMPCallOOM
|
||||
lwz r8, EWA.CPUBase + CPU.LLL + LLL.Freeform(r9)
|
||||
lwz r9, 0x0024(r8)
|
||||
cmpwi r9, 0x01
|
||||
bgt+ ReturnMPCallOOM
|
||||
bgt ReturnMPCallOOM
|
||||
lwz r19, 0x0fa0(r1)
|
||||
cmpwi r3, 0x00
|
||||
cmpw cr1, r3, r19
|
||||
stw r3, 0x0fa0(r1)
|
||||
beq- NKSetClockDriftCorrection_0x12c
|
||||
beq+ cr1, ReturnZeroFromMPCall
|
||||
beq NKSetClockDriftCorrection_0x12c
|
||||
beq cr1, ReturnZeroFromMPCall
|
||||
lis r16, 0x3b9a
|
||||
ori r16, r16, 0xca00
|
||||
lwz r17, 0x0f88(r1)
|
||||
srwi r17, r17, 7
|
||||
divw r18, r16, r3
|
||||
cmpw r18, r17
|
||||
bge- NKSetClockDriftCorrection_0x64
|
||||
bge NKSetClockDriftCorrection_0x64
|
||||
divw r16, r16, r17
|
||||
mr r18, r17
|
||||
divw r17, r3, r16
|
||||
@ -1895,7 +1895,7 @@ NKSetClockDriftCorrection_0x6c
|
||||
cmpwi r18, 0x01
|
||||
|
||||
; r1 = kdp
|
||||
beq+ ReleaseAndReturnZeroFromMPCall
|
||||
beq ReleaseAndReturnZeroFromMPCall
|
||||
bl GetTime
|
||||
stw r8, 0x0038(r31)
|
||||
stw r9, 0x003c(r31)
|
||||
@ -1917,7 +1917,7 @@ NKSetClockDriftCorrection_0x12c
|
||||
cmpwi r18, 0x00
|
||||
|
||||
; r1 = kdp
|
||||
beq+ ReleaseAndReturnZeroFromMPCall
|
||||
beq ReleaseAndReturnZeroFromMPCall
|
||||
mr r8, r31
|
||||
bl DequeueTimer
|
||||
|
||||
@ -1939,10 +1939,10 @@ MPCall_115 ; OUTSIDE REFERER
|
||||
cmpwi r9, ConsoleLog.kIDClass
|
||||
|
||||
mr r31, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
lwz r30, 0x000c(r31)
|
||||
cmpwi r30, 0x00
|
||||
bne- MPCall_115_0x94
|
||||
bne MPCall_115_0x94
|
||||
|
||||
_Lock PSA.DbugLock, scratch1=r16, scratch2=r17
|
||||
|
||||
@ -1951,32 +1951,32 @@ MPCall_115 ; OUTSIDE REFERER
|
||||
MPCall_115_0x54
|
||||
addi r30, r30, 0x01
|
||||
andi. r29, r30, 0xfff
|
||||
bne- MPCall_115_0x64
|
||||
bne MPCall_115_0x64
|
||||
lwz r30, -0x1000(r30)
|
||||
|
||||
MPCall_115_0x64
|
||||
lbz r16, 0x0000(r30)
|
||||
cmpwi r16, 0x00
|
||||
beq+ MPCall_115_0x54
|
||||
beq MPCall_115_0x54
|
||||
stw r30, 0x000c(r31)
|
||||
_AssertAndRelease PSA.DbugLock, scratch=r16
|
||||
|
||||
MPCall_115_0x94
|
||||
cmpwi r5, 0x00
|
||||
ble+ ReleaseAndReturnMPCallOOM
|
||||
ble ReleaseAndReturnMPCallOOM
|
||||
rlwinm. r9, r11, 0, 27, 27
|
||||
mr r8, r4
|
||||
crmove 30, 2
|
||||
beq- MPCall_115_0xd0
|
||||
beq MPCall_115_0xd0
|
||||
li r9, 0x00
|
||||
bl MPCall_95_0x45c
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
add r8, r4, r5
|
||||
li r9, 0x00
|
||||
addi r8, r8, -0x01
|
||||
mr r30, r8
|
||||
bl MPCall_95_0x45c
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
|
||||
MPCall_115_0xd0
|
||||
lwz r28, -0x0404(r1)
|
||||
@ -1987,18 +1987,18 @@ MPCall_115_0xd0
|
||||
MPCall_115_0xe0
|
||||
cmpw r28, r29
|
||||
cmplw cr1, r4, r30
|
||||
beq- MPCall_115_0x144
|
||||
bgt- cr1, MPCall_115_0x144
|
||||
beq MPCall_115_0x144
|
||||
bgt cr1, MPCall_115_0x144
|
||||
rlwinm r16, r4, 0, 0, 19
|
||||
mr r8, r4
|
||||
beq- cr7, MPCall_115_0x11c
|
||||
beq cr7, MPCall_115_0x11c
|
||||
cmpw r16, r27
|
||||
mr r17, r26
|
||||
beq- MPCall_115_0x11c
|
||||
beq MPCall_115_0x11c
|
||||
mr r27, r16
|
||||
li r9, 0x00
|
||||
bl MPCall_95_0x45c
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
mr r26, r17
|
||||
|
||||
MPCall_115_0x11c
|
||||
@ -2035,10 +2035,10 @@ KCRegisterExternalHandler
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
mr. r8, r3
|
||||
beq- @zero
|
||||
beq @zero
|
||||
bl LookupID
|
||||
cmpwi r9, Notification.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
@zero
|
||||
|
||||
stw r3, PSA.ExternalHandlerID(r1)
|
||||
@ -2056,7 +2056,7 @@ MPCall_133 ; OUTSIDE REFERER
|
||||
cmpw r3, r0
|
||||
lwz r16, 0x0edc(r1)
|
||||
li r17, 0x0b
|
||||
blt- MPCall_133_0x34
|
||||
blt MPCall_133_0x34
|
||||
and r3, r3, r17
|
||||
or r16, r16, r3
|
||||
b MPCall_133_0x3c
|
||||
@ -2071,16 +2071,16 @@ MPCall_133_0x3c
|
||||
extsh r17, r4
|
||||
cmpwi r16, -0x01
|
||||
cmpwi cr1, r17, -0x01
|
||||
beq- MPCall_133_0x60
|
||||
bgt- MPCall_133_0x5c
|
||||
beq MPCall_133_0x60
|
||||
bgt MPCall_133_0x5c
|
||||
li r16, 0x00
|
||||
|
||||
MPCall_133_0x5c
|
||||
sth r16, -0x0360(r1)
|
||||
|
||||
MPCall_133_0x60
|
||||
beq- cr1, MPCall_133_0x70
|
||||
bgt- cr1, MPCall_133_0x6c
|
||||
beq cr1, MPCall_133_0x70
|
||||
bgt cr1, MPCall_133_0x6c
|
||||
li r17, 0x00
|
||||
|
||||
MPCall_133_0x6c
|
||||
@ -2091,16 +2091,16 @@ MPCall_133_0x70
|
||||
extsh r17, r5
|
||||
cmpwi r16, -0x01
|
||||
cmpwi cr1, r17, -0x01
|
||||
beq- MPCall_133_0x90
|
||||
bgt- MPCall_133_0x8c
|
||||
beq MPCall_133_0x90
|
||||
bgt MPCall_133_0x8c
|
||||
li r16, 0x00
|
||||
|
||||
MPCall_133_0x8c
|
||||
sth r16, -0x035c(r1)
|
||||
|
||||
MPCall_133_0x90
|
||||
beq- cr1, MPCall_133_0xa0
|
||||
bgt- cr1, MPCall_133_0x9c
|
||||
beq cr1, MPCall_133_0xa0
|
||||
bgt cr1, MPCall_133_0x9c
|
||||
li r17, 0x00
|
||||
|
||||
MPCall_133_0x9c
|
||||
|
@ -55,22 +55,22 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
lwz r17, 0x0020(r31)
|
||||
cmplw r16, r27
|
||||
lwz r18, 0x007c(r31)
|
||||
bgt- @_1a0
|
||||
bgt+ @_44
|
||||
bgt @_1a0
|
||||
bgt @_44
|
||||
and r28, r27, r18
|
||||
rlwinm. r26, r17, 0, 16, 16
|
||||
lwz r17, 0x0038(r31)
|
||||
beq- @_fc
|
||||
beq @_fc
|
||||
lwz r18, 0x0070(r31)
|
||||
subf r19, r16, r28
|
||||
clrlwi r31, r18, 0x1e
|
||||
cmpwi cr7, r17, -0x01
|
||||
cmpwi cr6, r31, 0x00
|
||||
beq- cr7, @_1a0
|
||||
beq+ cr6, @_44
|
||||
beq cr7, @_1a0
|
||||
beq cr6, @_44
|
||||
cmpwi r17, 0x01
|
||||
add r31, r18, r19
|
||||
blt+ @_44
|
||||
blt @_44
|
||||
li r26, 0x00
|
||||
b @_208
|
||||
|
||||
@ -81,10 +81,10 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
mr r26, r30
|
||||
mr r8, r27
|
||||
bl MPCall_95_0x254
|
||||
beq- @_12c
|
||||
beq @_12c
|
||||
lhz r16, 0x0000(r30)
|
||||
rlwinm. r8, r16, 0, 16, 16
|
||||
bne- @_12c
|
||||
bne @_12c
|
||||
srwi r16, r16, 1
|
||||
sth r16, 0x0000(r30)
|
||||
|
||||
@ -95,8 +95,8 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
cmpwi cr6, r9, 0x00
|
||||
li r8, 0x801
|
||||
li r9, 0x01
|
||||
bne- @_154
|
||||
beq- cr6, @_154
|
||||
bne @_154
|
||||
beq cr6, @_154
|
||||
li r8, 0x881
|
||||
li r9, 0x81
|
||||
|
||||
@ -106,7 +106,7 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
rlwimi r31, r28, 0, 0, 19
|
||||
cmplwi cr6, r30, 0x800
|
||||
cmplwi r30, 0x01
|
||||
bge- cr6, @_2ec
|
||||
bge cr6, @_2ec
|
||||
cmplw cr7, r30, r9
|
||||
ori r31, r31, 0x100
|
||||
rlwimi r31, r28, 28, 28, 28
|
||||
@ -117,8 +117,8 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
rlwimi r31, r28, 30, 31, 31
|
||||
rlwimi r31, r28, 0, 30, 30
|
||||
xori r31, r31, 0x02
|
||||
beq- @_208
|
||||
blt+ cr7, @_44
|
||||
beq @_208
|
||||
blt cr7, @_44
|
||||
bl Local_Panic
|
||||
|
||||
@_1a0
|
||||
@ -136,17 +136,17 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
lhz r31, 0x0002(r29)
|
||||
subf r30, r30, r28
|
||||
cmplw cr7, r30, r31
|
||||
bgt+ cr7, @_1b8
|
||||
bgt cr7, @_1b8
|
||||
lwz r28, 0x0690(r1)
|
||||
lwz r31, 0x0004(r29)
|
||||
cmpwi cr7, r28, 0x00
|
||||
bnel- cr7, @_314
|
||||
bnel cr7, @_314
|
||||
rlwinm. r26, r31, 23, 29, 30
|
||||
cmplwi cr7, r26, 0x06
|
||||
beq- @_200
|
||||
beq @_200
|
||||
cmplwi cr6, r26, 0x02
|
||||
beq- cr7, @_368
|
||||
beq- cr6, @_3b8
|
||||
beq cr7, @_368
|
||||
beq cr6, @_3b8
|
||||
b @_44
|
||||
dc.l 0x41800168
|
||||
dc.l 0x418101bc
|
||||
@ -172,28 +172,28 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
lwz r30, 0x0010(r29)
|
||||
cmpwi cr7, r28, 0x00
|
||||
lwzu r28, 0x0018(r29)
|
||||
bge- cr6, @_298
|
||||
bge cr6, @_298
|
||||
cmpwi cr6, r30, 0x00
|
||||
lwzu r30, 0x0008(r29)
|
||||
bge- cr7, @_298
|
||||
bge cr7, @_298
|
||||
cmpwi cr7, r28, 0x00
|
||||
lwzu r28, 0x0008(r29)
|
||||
bge- cr6, @_298
|
||||
bge cr6, @_298
|
||||
cmpwi cr6, r30, 0x00
|
||||
lwzu r30, 0x0008(r29)
|
||||
bge- cr7, @_298
|
||||
bge cr7, @_298
|
||||
cmpwi cr7, r28, 0x00
|
||||
lwzu r28, 0x0008(r29)
|
||||
bge- cr6, @_298
|
||||
bge cr6, @_298
|
||||
cmpwi cr6, r30, 0x00
|
||||
addi r29, r29, 0x08
|
||||
bge- cr7, @_298
|
||||
bge cr7, @_298
|
||||
cmpwi cr7, r28, 0x00
|
||||
addi r29, r29, 0x08
|
||||
bge- cr6, @_298
|
||||
bge cr6, @_298
|
||||
rlwinm r28, r31, 0, 26, 26
|
||||
addi r29, r29, 0x08
|
||||
blt- cr7, @_3e0
|
||||
blt cr7, @_3e0
|
||||
|
||||
@_298
|
||||
cmpwi r26, 0x00
|
||||
@ -213,9 +213,9 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
stw r29, 0x0698(r1)
|
||||
addi r28, r28, 0x01
|
||||
stw r28, 0x0e94(r1)
|
||||
beq+ @_44
|
||||
beq @_44
|
||||
cmpwi r26, 0x5a5a
|
||||
bne- @_2f4
|
||||
bne @_2f4
|
||||
stw r29, 0x0690(r1)
|
||||
|
||||
@_2ec
|
||||
@ -246,7 +246,7 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
rlwinm. r28, r28, 0, 0, 14
|
||||
sync
|
||||
tlbie r29
|
||||
beq- @_354
|
||||
beq @_354
|
||||
sync
|
||||
tlbsync
|
||||
|
||||
@ -267,7 +267,7 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
cmplwi cr6, r30, 0x800
|
||||
cmplwi cr7, r30, 0x81
|
||||
cmplwi r30, 0x01
|
||||
bge+ cr6, @_2ec
|
||||
bge cr6, @_2ec
|
||||
cmplwi cr7, r30, 0x81
|
||||
ori r31, r31, 0x100
|
||||
rlwimi r31, r28, 3, 24, 24
|
||||
@ -275,8 +275,8 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
rlwimi r31, r28, 1, 25, 25
|
||||
xori r31, r31, 0x40
|
||||
rlwimi r31, r28, 30, 31, 31
|
||||
beq+ @_208
|
||||
blt+ cr7, @_44
|
||||
beq @_208
|
||||
blt cr7, @_44
|
||||
bl Local_Panic
|
||||
|
||||
@_3b8
|
||||
@ -294,12 +294,12 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
@_3e0
|
||||
cmplw cr6, r28, r26
|
||||
addi r29, r29, -0x50
|
||||
ble- cr6, @_400
|
||||
ble cr6, @_400
|
||||
crnot 2, 2
|
||||
lwz r30, KDP.PTEGMask(r1)
|
||||
xori r31, r31, 0x800
|
||||
xor r29, r29, r30
|
||||
beq+ @_228
|
||||
beq @_228
|
||||
|
||||
@_400
|
||||
lwz r26, 0x069c(r1)
|
||||
@ -319,16 +319,16 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
rlwimi r29, r26, 0, 0, 25
|
||||
lwz r31, 0x0004(r29)
|
||||
lwz r30, 0x0000(r29)
|
||||
beq- cr6, @_444
|
||||
beq cr6, @_444
|
||||
rlwinm r28, r31, 30, 25, 25
|
||||
andc. r28, r28, r30
|
||||
bne+ @_420
|
||||
bne @_420
|
||||
|
||||
@_444
|
||||
addi r9, r9, -0x01
|
||||
cmpwi cr7, r9, 0x00
|
||||
rlwinm r31, r30, 0, 25, 25
|
||||
blel+ cr7, Local_Panic
|
||||
blel cr7, Local_Panic
|
||||
rlwinm r28, r30, 1, 0, 3
|
||||
neg r31, r31
|
||||
rlwimi r28, r30, 22, 4, 9
|
||||
@ -349,7 +349,7 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
mfspr r31, pvr
|
||||
rlwinm. r31, r31, 0, 0, 14
|
||||
tlbie r28
|
||||
beq- @_4b0
|
||||
beq @_4b0
|
||||
sync
|
||||
tlbsync
|
||||
|
||||
@ -369,11 +369,11 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
mr r31, r8
|
||||
cmplw r16, r28
|
||||
mr r8, r28
|
||||
bgt- @_600
|
||||
bgt+ Local_Panic
|
||||
bgt @_600
|
||||
bgt Local_Panic
|
||||
bl MPCall_95_0x1e4
|
||||
mr r26, r30
|
||||
beql+ @_88
|
||||
beql @_88
|
||||
|
||||
@_500
|
||||
lwz r28, 0x0000(r26)
|
||||
@ -381,10 +381,10 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
andi. r30, r28, 0x800
|
||||
rlwinm r30, r28, 23, 9, 28
|
||||
xor r30, r30, r29
|
||||
beq+ Local_Panic
|
||||
beq Local_Panic
|
||||
andi. r30, r30, 0xffff
|
||||
xori r28, r28, 0x800
|
||||
bne+ Local_Panic
|
||||
bne Local_Panic
|
||||
rlwimi r28, r31, 0, 0, 19
|
||||
rlwimi r28, r31, 29, 27, 27
|
||||
rlwimi r28, r31, 27, 28, 28
|
||||
@ -431,15 +431,15 @@ PagingFunc1 ; OUTSIDE REFERER
|
||||
lwz r31, -0x0004(r26)
|
||||
andi. r31, r31, 0xe01
|
||||
cmpwi r31, 0xa01
|
||||
bgt+ cr7, @_60c
|
||||
beq+ @_60c
|
||||
bgt cr7, @_60c
|
||||
beq @_60c
|
||||
lwz r26, -0x0004(r26)
|
||||
slwi r30, r30, 2
|
||||
rlwinm r31, r26, 22, 30, 31
|
||||
cmpwi cr7, r31, 0x03
|
||||
rlwinm r26, r26, 22, 0, 29
|
||||
add r26, r26, r30
|
||||
bnel+ cr7, @_88
|
||||
bnel cr7, @_88
|
||||
b @_500
|
||||
|
||||
|
||||
@ -457,7 +457,7 @@ PagingFunc2 ; OUTSIDE REFERER
|
||||
addis r31, r31, -0x1000
|
||||
mr. r31, r31
|
||||
mtsrin r30, r31
|
||||
bne+ @_18
|
||||
bne @_18
|
||||
isync
|
||||
|
||||
PagingFunc2AndAHalf
|
||||
@ -466,7 +466,7 @@ PagingFunc2AndAHalf
|
||||
rlwinm. r31, r31, 0, 0, 14
|
||||
addi r29, r1, 0x00
|
||||
stw r28, 0x05ec(r1)
|
||||
beq- @_168
|
||||
beq @_168
|
||||
li r30, 0x00
|
||||
mtspr ibat0u, r30
|
||||
mtspr ibat1u, r30
|
||||
@ -604,22 +604,22 @@ PagingFunc3 ; OUTSIDE REFERER
|
||||
rlwimi r28, r30, 15, 0, 14
|
||||
xor r31, r27, r30
|
||||
andc. r31, r31, r28
|
||||
beq- @_54
|
||||
beq @_54
|
||||
lwzu r30, 0x0008(r29)
|
||||
rlwimi r28, r30, 15, 0, 14
|
||||
xor r31, r27, r30
|
||||
andc. r31, r31, r28
|
||||
beq- @_54
|
||||
beq @_54
|
||||
lwzu r30, 0x0008(r29)
|
||||
rlwimi r28, r30, 15, 0, 14
|
||||
xor r31, r27, r30
|
||||
andc. r31, r31, r28
|
||||
beq- @_54
|
||||
beq @_54
|
||||
lwzu r30, 0x0008(r29)
|
||||
rlwimi r28, r30, 15, 0, 14
|
||||
xor r31, r27, r30
|
||||
andc. r31, r31, r28
|
||||
bne- PagingFunc4
|
||||
bne PagingFunc4
|
||||
|
||||
@_54
|
||||
andi. r31, r30, 0x01
|
||||
@ -627,7 +627,7 @@ PagingFunc3 ; OUTSIDE REFERER
|
||||
lwzu r31, 0x0004(r29)
|
||||
and r28, r27, r28
|
||||
or r31, r31, r28
|
||||
bnelr-
|
||||
bnelr
|
||||
|
||||
|
||||
|
||||
@ -651,7 +651,7 @@ PagingFunc4 ; OUTSIDE REFERER
|
||||
lwz r31, 0x0010(r29)
|
||||
cmpw cr7, r30, r28
|
||||
lwzu r28, 0x0018(r29)
|
||||
bne- cr6, @_50
|
||||
bne cr6, @_50
|
||||
|
||||
@_48
|
||||
lwzu r31, -0x0014(r29)
|
||||
@ -660,30 +660,30 @@ PagingFunc4 ; OUTSIDE REFERER
|
||||
@_50
|
||||
cmpw cr6, r30, r31
|
||||
lwzu r31, 0x0008(r29)
|
||||
beq+ cr7, @_48
|
||||
beq cr7, @_48
|
||||
cmpw cr7, r30, r28
|
||||
lwzu r28, 0x0008(r29)
|
||||
beq+ cr6, @_48
|
||||
beq cr6, @_48
|
||||
cmpw cr6, r30, r31
|
||||
lwzu r31, 0x0008(r29)
|
||||
beq+ cr7, @_48
|
||||
beq cr7, @_48
|
||||
cmpw cr7, r30, r28
|
||||
lwzu r28, 0x0008(r29)
|
||||
beq+ cr6, @_48
|
||||
beq cr6, @_48
|
||||
cmpw cr6, r30, r31
|
||||
lwzu r31, -0x000c(r29)
|
||||
beqlr- cr7
|
||||
beqlr cr7
|
||||
cmpw cr7, r30, r28
|
||||
lwzu r31, 0x0008(r29)
|
||||
beqlr- cr6
|
||||
beqlr cr6
|
||||
lwzu r31, 0x0008(r29)
|
||||
beqlr- cr7
|
||||
beqlr cr7
|
||||
lwz r31, KDP.PTEGMask(r1)
|
||||
xori r30, r30, 0x40
|
||||
andi. r28, r30, 0x40
|
||||
addi r29, r29, -0x3c
|
||||
xor r29, r29, r31
|
||||
bne+ @_2c
|
||||
bne @_2c
|
||||
blr
|
||||
|
||||
|
||||
@ -698,14 +698,14 @@ PagingFlushTLB ; OUTSIDE REFERER
|
||||
subi r29, r29, 1 << pb
|
||||
cmpwi r29, 0
|
||||
tlbie r29
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
|
||||
mfspr r29, pvr
|
||||
rlwinm. r29, r29, 0, 0, 14
|
||||
|
||||
; All cpus
|
||||
sync
|
||||
beqlr-
|
||||
beqlr
|
||||
|
||||
; Non-601 stuff
|
||||
tlbsync
|
||||
|
@ -173,8 +173,8 @@ _PoolAllocCommon
|
||||
|
||||
cmpwi r8, 0
|
||||
cmpwi cr1, r8, 0xfd8
|
||||
ble+ _PoolPanic
|
||||
bgt- cr1, @request_too_large
|
||||
ble _PoolPanic
|
||||
bgt cr1, @request_too_large
|
||||
|
||||
|
||||
; Up-align to 32b boundary and snatch an extra 8b
|
||||
@ -203,7 +203,7 @@ _PoolAllocCommon
|
||||
lwz r17, PSA.UnheldFreePageCount(r1)
|
||||
subf. r16, r9, r16
|
||||
subf r17, r9, r17
|
||||
blt- _PoolReturn
|
||||
blt _PoolReturn
|
||||
|
||||
stw r16, PSA.FreePageCount(r1)
|
||||
stw r17, PSA.UnheldFreePageCount(r1)
|
||||
@ -239,8 +239,8 @@ _PoolAllocCommon
|
||||
cmplw r16, r8
|
||||
|
||||
lis r20, 'fr'
|
||||
bgt- @decide_whether_to_split
|
||||
beq- @do_not_split
|
||||
bgt @decide_whether_to_split
|
||||
beq @do_not_split
|
||||
ori r20, r20, 'ee'
|
||||
|
||||
|
||||
@ -253,8 +253,8 @@ _PoolAllocCommon
|
||||
lwz r19, Block.Signature(r18)
|
||||
cmplw cr1, r18, r15
|
||||
cmpw r19, r20
|
||||
ble+ cr1, _PoolPanic
|
||||
bne- @physically_adjacent_block_is_not_free
|
||||
ble cr1, _PoolPanic
|
||||
bne @physically_adjacent_block_is_not_free
|
||||
|
||||
lwz r17, Block.OffsetToNext(r18)
|
||||
rotlwi r19, r19, 8
|
||||
@ -279,7 +279,7 @@ _PoolAllocCommon
|
||||
|
||||
subf r16, r8, r16
|
||||
cmpwi r16, 40
|
||||
blt- @do_not_split
|
||||
blt @do_not_split
|
||||
|
||||
|
||||
; Use the rightmost part of the block, leaving ptr in r15
|
||||
@ -323,7 +323,7 @@ _PoolAllocCommon
|
||||
@clrloop
|
||||
stwu r14, 4(r15)
|
||||
cmpw r15, r16
|
||||
ble+ @clrloop
|
||||
ble @clrloop
|
||||
|
||||
b _PoolReturn
|
||||
|
||||
@ -378,7 +378,7 @@ _PoolAddBlockToFreeList
|
||||
lhz r16, Block.Signature(r15)
|
||||
_lfinish
|
||||
cmplwi r16, 0x876c ; Block.kAllocSig >> 16
|
||||
bne+ _PoolPanic
|
||||
bne _PoolPanic
|
||||
stw r20, Block.Signature(r15)
|
||||
|
||||
; Insert into the global free block list
|
||||
@ -404,8 +404,8 @@ _PoolMergeAdjacentFreeBlocks
|
||||
lwz r19, Block.Signature(r18) ; r19 = signature of that block
|
||||
cmplw cr1, r18, r15
|
||||
cmpw r19, r20
|
||||
ble+ cr1, _PoolPanic ; die if block was of non-positive size!
|
||||
bnelr- ; return if block to right is not free
|
||||
ble cr1, _PoolPanic ; die if block was of non-positive size!
|
||||
bnelr ; return if block to right is not free
|
||||
|
||||
lwz r17, Block.OffsetToNext(r18)
|
||||
rotlwi r19, r19, 8 ; scramble old signature to clarify mem dumps
|
||||
@ -466,7 +466,7 @@ _pool_page_seg equ 0x1000
|
||||
subi r16, r16, 32
|
||||
cmpwi r16, 0
|
||||
dcbz r16, r17
|
||||
bgt+ @zeroloop
|
||||
bgt @zeroloop
|
||||
|
||||
|
||||
; Begin block
|
||||
@ -552,7 +552,7 @@ PoolCheck
|
||||
lwz r18, Block.OffsetToNext(r17)
|
||||
cmpwi r18, 0
|
||||
add r20, r18, r17
|
||||
bne+ @next_segment
|
||||
bne @next_segment
|
||||
|
||||
|
||||
; If there are no more Begins, we are done
|
||||
@ -578,27 +578,27 @@ _PoolCheckBlocks
|
||||
lisori r18, Block.kEndSig
|
||||
cmpw r17, r18
|
||||
li r9, 0
|
||||
beq- @return
|
||||
beq @return
|
||||
|
||||
lisori r18, Block.kAllocSig
|
||||
cmpw r17, r18
|
||||
beq- @block_is_allocated
|
||||
beq @block_is_allocated
|
||||
|
||||
lisori r18, Block.kFreeSig
|
||||
li r9, 4
|
||||
cmpw r17, r18
|
||||
bne- @block_corrupt
|
||||
bne @block_corrupt
|
||||
|
||||
; From now we assume Free
|
||||
lwz r17, Block.FreePrev(r16)
|
||||
cmpwi r17, 0
|
||||
li r9, 5
|
||||
beq- @block_corrupt
|
||||
beq @block_corrupt
|
||||
|
||||
lwz r17, Block.FreeNext(r16)
|
||||
cmpwi r17, 0
|
||||
li r9, 6
|
||||
beq- @block_corrupt
|
||||
beq @block_corrupt
|
||||
|
||||
@block_is_allocated
|
||||
;or block is free (fallthru)
|
||||
@ -606,7 +606,7 @@ _PoolCheckBlocks
|
||||
add r16, r16, r17
|
||||
cmpwi r17, 0
|
||||
li r9, 7
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
|
||||
|
||||
; 4: neither Allocated nor Free
|
||||
@ -655,19 +655,19 @@ _PoolCheckBlocks
|
||||
lbzu r8, 1(r16)
|
||||
|
||||
cmpwi r8, ' '
|
||||
bgt- @dont_use_space
|
||||
bgt @dont_use_space
|
||||
li r8, ' '
|
||||
@dont_use_space
|
||||
|
||||
bl Printc
|
||||
bdnz+ @dump_next_char
|
||||
bdnz @dump_next_char
|
||||
|
||||
_log '*^n'
|
||||
|
||||
subi r17, r17, 1
|
||||
addi r16, r16, 1
|
||||
cmpwi r17, 0x00
|
||||
bne+ @dump_next_line
|
||||
bne @dump_next_line
|
||||
|
||||
|
||||
mr r8, r18
|
||||
|
@ -55,17 +55,17 @@ kcPowerDispatch
|
||||
@use_provided_mcr
|
||||
|
||||
and. r8, r4, r9
|
||||
bgt- cr7, PowerEarlyReturnError ; invalid selector
|
||||
bne- PowerEarlyReturnSuccess
|
||||
bgt cr7, PowerEarlyReturnError ; invalid selector
|
||||
bne PowerEarlyReturnSuccess
|
||||
|
||||
cmplwi cr7, r3, 11
|
||||
beq- cr7, PwrInfiniteLoop
|
||||
beq cr7, PwrInfiniteLoop
|
||||
|
||||
cmplwi cr7, r3, 8
|
||||
beq- cr7, PwrSuspendSystem
|
||||
beq cr7, PwrSuspendSystem
|
||||
|
||||
cmplwi cr7, r3, 9
|
||||
beq- cr7, PwrSetICTC
|
||||
beq cr7, PwrSetICTC
|
||||
|
||||
; Fall through to 0-7: PwrIdle
|
||||
|
||||
@ -130,7 +130,7 @@ PwrIdle
|
||||
addi r3, r3, 26
|
||||
rlwnm r3, r8, r3, 30, 31
|
||||
cmpwi r3, 0
|
||||
beq- PowerEarlyRestoreReturnError
|
||||
beq PowerEarlyRestoreReturnError
|
||||
|
||||
|
||||
; Depending on pre-programmed flags, set:
|
||||
@ -139,12 +139,12 @@ PwrIdle
|
||||
|
||||
lbz r9, KDP.CpuSpecificByte2(r1)
|
||||
cmpwi r9, 0
|
||||
beq- @set_neither
|
||||
beq @set_neither
|
||||
|
||||
mfspr r27, hid0 ; will restore r27 => HID0 when system wakes below
|
||||
mr r8, r27
|
||||
cmpwi r9, 1
|
||||
beq- @set_only_nhr
|
||||
beq @set_only_nhr
|
||||
|
||||
oris r9, r3, 0x0100 ; set bit 7
|
||||
srw r9, r9, r9 ; shift right by 0-3
|
||||
@ -159,7 +159,7 @@ PwrIdle
|
||||
; Flush L1 and L2 caches if argument & 4
|
||||
|
||||
cmplwi r26, 4
|
||||
beql- FlushCaches
|
||||
beql FlushCaches
|
||||
|
||||
|
||||
; Set MSR bits to enter the selected pwrmgt state
|
||||
@ -167,7 +167,7 @@ PwrIdle
|
||||
mfmsr r8
|
||||
ori r8, r8, 0x8002 ; Always set MSR[EE] and MSR[RI] so we can wake!
|
||||
cmplwi r3, 0 ; If using HID0[pwrmgt state], set MSR[POW] so it takes effect
|
||||
beq- @no_pow
|
||||
beq @no_pow
|
||||
oris r8, r8, 4
|
||||
@no_pow
|
||||
sync ; Apply MSR!
|
||||
@ -185,7 +185,7 @@ IntReturnToFullOn
|
||||
|
||||
lbz r8, KDP.CpuSpecificByte2(r1)
|
||||
cmpwi r8, 0
|
||||
beq- @hid_was_not_changed
|
||||
beq @hid_was_not_changed
|
||||
mtspr hid0, r27
|
||||
@hid_was_not_changed
|
||||
|
||||
@ -252,7 +252,7 @@ PwrSuspendSystem
|
||||
lwz r9, CoherenceGroup.ScheduledCpuCount(r8)
|
||||
cmpwi r9, 1
|
||||
li r3, -0x7267
|
||||
bgt+ IntReturn
|
||||
bgt IntReturn
|
||||
|
||||
|
||||
; Some breathing room
|
||||
@ -277,7 +277,7 @@ PwrSuspendSystem
|
||||
|
||||
lwz r26, KDP.ProcessorInfo + NKProcessorInfo.ProcessorFlags(r1)
|
||||
andi. r26, r26, 1 << NKProcessorInfo.hasL2CR
|
||||
beq- @no_need_to_deactivate_l2
|
||||
beq @no_need_to_deactivate_l2
|
||||
mfspr r9, l2cr
|
||||
clrlwi r9, r9, 1 ; unset L2CR[L2E]
|
||||
mtspr l2cr, r9
|
||||
@ -299,7 +299,7 @@ PwrSuspendSystem
|
||||
; Save floats
|
||||
|
||||
andi. r8, r11, 0x2000 ; MSR[FP]
|
||||
beq- @no_save_float
|
||||
beq @no_save_float
|
||||
mfmsr r8
|
||||
ori r8, r8, 0x2000 ; ensure that MSR bit is set?
|
||||
mtmsr r8
|
||||
@ -335,7 +335,7 @@ PwrSuspendSystem
|
||||
mftbu r8
|
||||
lwz r9, NKProcessorState.saveTBU(r16)
|
||||
cmpw r8, r9
|
||||
bne+ @tb_retry
|
||||
bne @tb_retry
|
||||
|
||||
|
||||
; Save MSR
|
||||
@ -421,7 +421,7 @@ PwrSuspendSystem
|
||||
addis r8, r8, -0x10
|
||||
mr. r9, r9
|
||||
mtsrin r8, r9
|
||||
bne+ @srin_loop
|
||||
bne @srin_loop
|
||||
isync
|
||||
|
||||
|
||||
@ -446,10 +446,10 @@ PwrSuspendSystem
|
||||
|
||||
lwz r26, KDP.ProcessorInfo + NKProcessorInfo.ProcessorFlags(r1)
|
||||
andi. r26, r26, 1 << NKProcessorInfo.hasL2CR
|
||||
beq- @no_need_to_reactivate_l2
|
||||
beq @no_need_to_reactivate_l2
|
||||
lwz r8, KDP.ProcessorInfo + NKProcessorInfo.ProcessorL2DSize(r1)
|
||||
mr. r8, r8
|
||||
beq- @no_need_to_reactivate_l2
|
||||
beq @no_need_to_reactivate_l2
|
||||
|
||||
mfspr r9, hid0
|
||||
rlwinm r9, r9, 0, 12, 10
|
||||
@ -470,7 +470,7 @@ PwrSuspendSystem
|
||||
@l2_reactivate_loop
|
||||
mfspr r8, l2cr
|
||||
rlwinm. r8, r8, 31, 0, 0
|
||||
bne+ @l2_reactivate_loop
|
||||
bne @l2_reactivate_loop
|
||||
|
||||
|
||||
mfspr r8, l2cr
|
||||
@ -518,7 +518,7 @@ PwrSuspendSystem
|
||||
; Load floats
|
||||
|
||||
andi. r8, r11, 0x2000 ; MSR[FP]
|
||||
beq- @no_restore_float
|
||||
beq @no_restore_float
|
||||
mfmsr r8
|
||||
ori r8, r8, 0x2000 ; ensure that MSR bit is set?
|
||||
mtmsr r8
|
||||
@ -677,7 +677,7 @@ ActuallySuspend
|
||||
mtmsr r8 ; sleep now
|
||||
isync
|
||||
cmpwi r1, 0
|
||||
beq+ @evil_aligned_sleep_loop ; re-sleep until the world is sane?
|
||||
beq @evil_aligned_sleep_loop ; re-sleep until the world is sane?
|
||||
lwz r0, 0(r9)
|
||||
andi. r1, r1, 0
|
||||
b @evil_aligned_sleep_loop ; actually, there is no escape
|
||||
|
@ -65,9 +65,9 @@ CommonPIHPath ; OUTSIDE REFERER
|
||||
CommonPIHPath_0xc ; OUTSIDE REFERER
|
||||
cmpwi cr7, r28, 0
|
||||
li r31, 0
|
||||
blt- cr7, @negative
|
||||
blt cr7, @negative
|
||||
|
||||
beq- cr7, @zero_rupt
|
||||
beq cr7, @zero_rupt
|
||||
ori r28, r28, 0x8000
|
||||
lwz r31, KDP.PostIntMaskInit(r1)
|
||||
@zero_rupt
|
||||
@ -76,16 +76,16 @@ CommonPIHPath_0xc ; OUTSIDE REFERER
|
||||
cmpwi cr1, r27, 0
|
||||
lwz r29, KDP.ClearIntMaskInit(r1)
|
||||
|
||||
bne- @noperf
|
||||
bne- cr1, @CommonPIHPath_0x78
|
||||
bne @noperf
|
||||
bne cr1, @CommonPIHPath_0x78
|
||||
@noperf
|
||||
|
||||
rlwinm. r8, r7, 0, 10, 10
|
||||
beq- @actual_meat
|
||||
beq @actual_meat
|
||||
|
||||
sth r28, 0x0000(r23)
|
||||
or r13, r13, r31
|
||||
bgt- cr7, @negative
|
||||
bgt cr7, @negative
|
||||
and r13, r13, r29
|
||||
|
||||
@negative
|
||||
@ -103,7 +103,7 @@ CommonPIHPath_0xc ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Notification.kIDClass
|
||||
mr r30, r8
|
||||
bne- @no_handler_notification
|
||||
bne @no_handler_notification
|
||||
|
||||
clrlwi r9, r28, 17
|
||||
stw r9, Notification.MsgWord1(r30)
|
||||
@ -152,12 +152,12 @@ CommonPIHPath_0xc ; OUTSIDE REFERER
|
||||
|
||||
cmpwi r29, 0
|
||||
lhz r16, Task.CPUIndex(r31)
|
||||
beq- @task_not_running
|
||||
beq @task_not_running
|
||||
lhz r17, EWA.CPUIndex(r30)
|
||||
cmpw cr1, r16, r17
|
||||
rlwinm. r8, r28, 0, Task.kFlag26, Task.kFlag26
|
||||
beq- cr1, @running_on_this_cpu
|
||||
bne- @flag_and_run
|
||||
beq cr1, @running_on_this_cpu
|
||||
bne @flag_and_run
|
||||
|
||||
@running_on_this_cpu
|
||||
mr r8, r31
|
||||
@ -169,7 +169,7 @@ CommonPIHPath_0xc ; OUTSIDE REFERER
|
||||
RemoveFromList r16, scratch1=r17, scratch2=r18
|
||||
lbz r17, Task.Timer + Timer.Byte3(r31)
|
||||
cmpwi r17, 1
|
||||
bne- @task_timer_not_in_use
|
||||
bne @task_timer_not_in_use
|
||||
addi r8, r31, Task.Timer
|
||||
bl DequeueTimer
|
||||
@task_timer_not_in_use
|
||||
@ -202,8 +202,8 @@ CommonPIHPath_0xc ; OUTSIDE REFERER
|
||||
KCPropogateExternalInterrupt ; OUTSIDE REFERER
|
||||
rlwinm. r8, r7, 0, 10, 10
|
||||
cmplwi cr1, r3, 7
|
||||
bne- @notthegumdropbuttons
|
||||
bgt- cr1, @too_high
|
||||
bne @notthegumdropbuttons
|
||||
bgt cr1, @too_high
|
||||
|
||||
_Lock PSA.PIHLock, scratch1=r8, scratch2=r9
|
||||
|
||||
@ -213,7 +213,7 @@ KCPropogateExternalInterrupt ; OUTSIDE REFERER
|
||||
|
||||
; r28 = max(current level, desired level)
|
||||
cmpw r3, r28
|
||||
ble- @desired_is_lower
|
||||
ble @desired_is_lower
|
||||
mr r28, r3
|
||||
@desired_is_lower
|
||||
|
||||
@ -300,7 +300,7 @@ PDM_PIH
|
||||
|
||||
mfsprg r30, 3
|
||||
|
||||
bne- @nocount
|
||||
bne @nocount
|
||||
lwz r21, KDP.NanoKernelInfo + NKNanoKernelInfo.ExternalIntCount(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, KDP.NanoKernelInfo + NKNanoKernelInfo.ExternalIntCount(r1)
|
||||
@ -377,7 +377,7 @@ PBX_PIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- PBX_PIH_0x38
|
||||
bne PBX_PIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -441,7 +441,7 @@ GazellePIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- GazellePIH_0x38
|
||||
bne GazellePIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -485,18 +485,18 @@ GazellePIH_0x38
|
||||
isync
|
||||
andis. r28, r23, 0x10
|
||||
li r28, 0x07
|
||||
bne- GazellePIH_0x104
|
||||
bne GazellePIH_0x104
|
||||
rlwinm r28, r23, 0, 15, 16
|
||||
rlwimi. r28, r23, 0, 22, 31
|
||||
li r28, 0x04
|
||||
bne- GazellePIH_0x104
|
||||
bne GazellePIH_0x104
|
||||
andis. r28, r23, 0x5fca
|
||||
rlwimi. r28, r23, 0, 17, 20
|
||||
li r28, 0x02
|
||||
bne- GazellePIH_0x104
|
||||
bne GazellePIH_0x104
|
||||
andis. r28, r23, 0x04
|
||||
li r28, 0x01
|
||||
bne- GazellePIH_0x104
|
||||
bne GazellePIH_0x104
|
||||
li r28, 0x00
|
||||
|
||||
GazellePIH_0x104
|
||||
@ -529,7 +529,7 @@ TNT_PIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- TNT_PIH_0x38
|
||||
bne TNT_PIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -562,18 +562,18 @@ TNT_PIH_0x38
|
||||
isync
|
||||
rlwinm. r28, r23, 0, 11, 11
|
||||
li r28, 0x07
|
||||
bne- TNT_PIH_0xd8
|
||||
bne TNT_PIH_0xd8
|
||||
rlwinm r28, r23, 0, 15, 16
|
||||
rlwimi. r28, r23, 0, 21, 31
|
||||
li r28, 0x04
|
||||
bne- TNT_PIH_0xd8
|
||||
bne TNT_PIH_0xd8
|
||||
rlwinm. r28, r23, 0, 17, 17
|
||||
li r28, 0x03
|
||||
bne- TNT_PIH_0xd8
|
||||
bne TNT_PIH_0xd8
|
||||
andis. r28, r23, 0x7fea
|
||||
rlwimi. r28, r23, 0, 18, 19
|
||||
li r28, 0x02
|
||||
bne- TNT_PIH_0xd8
|
||||
bne TNT_PIH_0xd8
|
||||
rlwinm. r28, r23, 14, 31, 31
|
||||
|
||||
TNT_PIH_0xd8
|
||||
@ -605,7 +605,7 @@ GossamerPIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- GossamerPIH_0x38
|
||||
bne GossamerPIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -648,24 +648,24 @@ GossamerPIH_0x38
|
||||
isync
|
||||
rlwinm. r28, r23, 0, 11, 11
|
||||
li r28, 0x07
|
||||
bne- GossamerPIH_0x118
|
||||
bne GossamerPIH_0x118
|
||||
rlwinm r28, r23, 0, 15, 16
|
||||
rlwimi. r28, r23, 0, 22, 31
|
||||
li r28, 0x04
|
||||
bne- GossamerPIH_0x118
|
||||
bne GossamerPIH_0x118
|
||||
clrlwi. r28, r24, 0x1e
|
||||
li r28, 0x04
|
||||
bne- GossamerPIH_0x118
|
||||
bne GossamerPIH_0x118
|
||||
rlwinm. r28, r24, 0, 21, 21
|
||||
li r28, 0x03
|
||||
bne- GossamerPIH_0x118
|
||||
bne GossamerPIH_0x118
|
||||
andis. r28, r23, 0x3fea
|
||||
rlwimi. r28, r23, 0, 17, 20
|
||||
li r28, 0x02
|
||||
bne- GossamerPIH_0x118
|
||||
bne GossamerPIH_0x118
|
||||
rlwinm. r28, r24, 0, 20, 20
|
||||
li r28, 0x01
|
||||
bne- GossamerPIH_0x118
|
||||
bne GossamerPIH_0x118
|
||||
rlwinm. r28, r23, 14, 31, 31
|
||||
|
||||
GossamerPIH_0x118
|
||||
@ -698,7 +698,7 @@ NewWorldPowerBookPIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- NewWorldPowerBookPIH_0x38
|
||||
bne NewWorldPowerBookPIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -738,13 +738,13 @@ NewWorldPowerBookPIH_0x38
|
||||
NewWorldPowerBookPIH_0xb0
|
||||
lwz r26, 0x001c(r25)
|
||||
and. r26, r24, r26
|
||||
bne- NewWorldPowerBookPIH_0xd4
|
||||
bne NewWorldPowerBookPIH_0xd4
|
||||
lwzu r26, -0x0004(r25)
|
||||
and. r26, r23, r26
|
||||
bne- NewWorldPowerBookPIH_0xd4
|
||||
bne NewWorldPowerBookPIH_0xd4
|
||||
addi r28, r28, -0x01
|
||||
cmplwi r28, 0x00
|
||||
bne+ NewWorldPowerBookPIH_0xb0
|
||||
bne NewWorldPowerBookPIH_0xb0
|
||||
|
||||
NewWorldPowerBookPIH_0xd4
|
||||
mtsrin r21, r22
|
||||
@ -775,7 +775,7 @@ CordycepsPIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- CordycepsPIH_0x38
|
||||
bne CordycepsPIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -839,7 +839,7 @@ NewWorldPIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- NewWorldPIH_0x38
|
||||
bne NewWorldPIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -860,8 +860,8 @@ NewWorldPIH_0x38
|
||||
isync
|
||||
cmpwi cr1, r27, 0x00
|
||||
andis. r26, r11, 0x02
|
||||
beq- cr1, NewWorldPIH_0x23c
|
||||
beq- NewWorldPIH_0x150
|
||||
beq cr1, NewWorldPIH_0x23c
|
||||
beq NewWorldPIH_0x150
|
||||
lbz r29, 0x0f93(r20)
|
||||
stb r28, 0x0f93(r20)
|
||||
addi r26, r1, 0x912
|
||||
@ -869,7 +869,7 @@ NewWorldPIH_0x38
|
||||
cmplwi r27, 0x01
|
||||
bne+ cr1, NewWorldPIH_0xa8
|
||||
addi r27, r27, -0x01
|
||||
ble- NewWorldPIH_0x1fc
|
||||
ble NewWorldPIH_0x1fc
|
||||
lbzx r26, r26, r27
|
||||
lbz r28, 0x3f00(r26)
|
||||
b NewWorldPIH_0x1fc
|
||||
@ -877,7 +877,7 @@ NewWorldPIH_0x38
|
||||
NewWorldPIH_0xa8
|
||||
cmplwi r27, 0x01
|
||||
addi r27, r27, -0x01
|
||||
ble- NewWorldPIH_0x1fc
|
||||
ble NewWorldPIH_0x1fc
|
||||
add r26, r26, r27
|
||||
addi r27, r20, 0xf93
|
||||
lbz r24, 0x0000(r26)
|
||||
@ -886,8 +886,8 @@ NewWorldPIH_0xc0
|
||||
lbzu r28, -0x0001(r27)
|
||||
cmpw r24, r28
|
||||
cmpwi cr1, r28, 0xfe
|
||||
beq- NewWorldPIH_0xdc
|
||||
bne+ cr1, NewWorldPIH_0xc0
|
||||
beq NewWorldPIH_0xdc
|
||||
bne cr1, NewWorldPIH_0xc0
|
||||
li r28, -0x01
|
||||
b NewWorldPIH_0x1fc
|
||||
|
||||
@ -936,8 +936,8 @@ NewWorldPIH_0x150
|
||||
cmplwi r26, 0x40
|
||||
cmplwi cr1, r26, 0x41
|
||||
li r29, 0x00
|
||||
beq- NewWorldPIH_0x208
|
||||
bge- cr1, NewWorldPIH_0x218
|
||||
beq NewWorldPIH_0x208
|
||||
bge cr1, NewWorldPIH_0x218
|
||||
cmplw r26, r27
|
||||
lis r27, 0x02
|
||||
ori r27, r27, 0xb0
|
||||
@ -1027,7 +1027,7 @@ UnknownPIH
|
||||
addi r9, r1, -0x750
|
||||
andis. r8, r11, 0x02
|
||||
mfsprg r30, 3
|
||||
bne- UnknownPIH_0x38
|
||||
bne UnknownPIH_0x38
|
||||
lwz r21, 0x0e80(r1)
|
||||
addi r21, r21, 0x01
|
||||
stw r21, 0x0e80(r1)
|
||||
@ -1048,10 +1048,10 @@ UnknownPIH_0x38
|
||||
isync
|
||||
cmpwi cr1, r27, 0x00
|
||||
andis. r26, r11, 0x02
|
||||
beq- cr1, UnknownPIH_0x23c
|
||||
beq- UnknownPIH_0x170
|
||||
beq cr1, UnknownPIH_0x23c
|
||||
beq UnknownPIH_0x170
|
||||
cmplwi r27, 0x01
|
||||
ble- UnknownPIH_0x1f8
|
||||
ble UnknownPIH_0x1f8
|
||||
addi r27, r27, -0x01
|
||||
addi r26, r1, 0x912
|
||||
add r26, r26, r27
|
||||
@ -1068,7 +1068,7 @@ UnknownPIH_0xac
|
||||
lis r28, -0x8000
|
||||
srw r28, r28, r24
|
||||
and. r27, r27, r28
|
||||
bne- UnknownPIH_0xc8
|
||||
bne UnknownPIH_0xc8
|
||||
li r28, -0x01
|
||||
b UnknownPIH_0x1f8
|
||||
|
||||
@ -1094,7 +1094,7 @@ UnknownPIH_0xf4
|
||||
addi r26, r26, -0x01
|
||||
lbz r26, 0x0000(r26)
|
||||
cmpwi r26, 0xff
|
||||
beq- UnknownPIH_0x114
|
||||
beq UnknownPIH_0x114
|
||||
b UnknownPIH_0x118
|
||||
|
||||
UnknownPIH_0x114
|
||||
@ -1110,7 +1110,7 @@ UnknownPIH_0x118
|
||||
stwx r28, r22, r27
|
||||
eieio
|
||||
cmpwi r26, 0x800
|
||||
beq- UnknownPIH_0x158
|
||||
beq UnknownPIH_0x158
|
||||
lis r28, 0x01
|
||||
ori r28, r28, 0x00
|
||||
rlwinm r27, r26, 5, 16, 31
|
||||
@ -1138,8 +1138,8 @@ UnknownPIH_0x170
|
||||
clrlwi r26, r26, 0x14
|
||||
cmplwi r26, 0x31
|
||||
cmplwi cr1, r26, 0x28
|
||||
beq- UnknownPIH_0x204
|
||||
bge- cr1, UnknownPIH_0x214
|
||||
beq UnknownPIH_0x204
|
||||
bge cr1, UnknownPIH_0x214
|
||||
rlwinm r27, r26, 5, 16, 31
|
||||
add r28, r28, r27
|
||||
lwbrx r28, r22, r28
|
||||
|
@ -49,4 +49,4 @@ OverrideProcessorInfo
|
||||
subic. r9, r9, 4
|
||||
lwzx r12, r11, r9
|
||||
stwx r12, r10, r9
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
|
@ -17,7 +17,7 @@ Local_Panic set *
|
||||
kcRTASDispatch ; OUTSIDE REFERER
|
||||
lwz r8, 0x0908(r1)
|
||||
cmpwi r8, 0x00
|
||||
bne- rtas_is_available
|
||||
bne rtas_is_available
|
||||
li r3, -0x01
|
||||
b IntReturn
|
||||
|
||||
@ -30,7 +30,7 @@ rtas_is_available
|
||||
lwz r8, EWA.Enables(r1)
|
||||
stw r7, 0x0000(r6)
|
||||
stw r8, 0x0004(r6)
|
||||
bns- cr6, kcRTASDispatch_0x5c
|
||||
bns cr6, kcRTASDispatch_0x5c
|
||||
stw r17, 0x0024(r6)
|
||||
stw r20, 0x0028(r6)
|
||||
stw r21, 0x002c(r6)
|
||||
@ -46,7 +46,7 @@ kcRTASDispatch_0x5c
|
||||
mfctr r8
|
||||
stw r10, 0x00fc(r6)
|
||||
stw r8, 0x00f4(r6)
|
||||
ble- cr3, kcRTASDispatch_0x8c
|
||||
ble cr3, kcRTASDispatch_0x8c
|
||||
lwz r8, 0x00c4(r9)
|
||||
mfspr r12, mq
|
||||
mtspr mq, r8
|
||||
@ -80,21 +80,21 @@ kcRTASDispatch_0x8c
|
||||
stw r29, 0x01ec(r6)
|
||||
stw r30, 0x01f4(r6)
|
||||
stw r31, 0x01fc(r6)
|
||||
bnel+ major_0x03e18_0xb4
|
||||
bnel major_0x03e18_0xb4
|
||||
stw r11, 0x00a4(r6)
|
||||
mr r27, r3
|
||||
addi r29, r1, 800
|
||||
bl PagingFunc3
|
||||
beql+ Local_Panic
|
||||
beql Local_Panic
|
||||
rlwimi r3, r31, 0, 0, 19
|
||||
lhz r8, 0x0004(r3)
|
||||
cmpwi r8, 0x00
|
||||
beq- kcRTASDispatch_0x14c
|
||||
beq kcRTASDispatch_0x14c
|
||||
slwi r8, r8, 2
|
||||
lwzx r27, r8, r3
|
||||
addi r29, r1, 800
|
||||
bl PagingFunc3
|
||||
beql+ Local_Panic
|
||||
beql Local_Panic
|
||||
lwzx r9, r8, r3
|
||||
rlwimi r9, r31, 0, 0, 19
|
||||
stwx r9, r8, r3
|
||||
@ -126,7 +126,7 @@ kcRTASDispatch_0x190
|
||||
dcbf r29, r28
|
||||
sync
|
||||
icbi r29, r28
|
||||
bge+ kcRTASDispatch_0x190
|
||||
bge kcRTASDispatch_0x190
|
||||
sync
|
||||
isync
|
||||
lwz r8, 0x0000(r6)
|
||||
@ -142,7 +142,7 @@ kcRTASDispatch_0x190
|
||||
lwz r8, 0x00f4(r6)
|
||||
lwz r10, 0x00fc(r6)
|
||||
mtctr r8
|
||||
bnel+ major_0x03e18_0x8
|
||||
bnel major_0x03e18_0x8
|
||||
lwz r8, 0x010c(r6)
|
||||
stw r8, 0x0004(r1)
|
||||
lwz r2, 0x0114(r6)
|
||||
|
@ -25,7 +25,7 @@ InitReplacement
|
||||
@wipeloop
|
||||
subic. r12, r12, 4
|
||||
stwx r0, r13, r12
|
||||
bgt+ @wipeloop
|
||||
bgt @wipeloop
|
||||
|
||||
|
||||
; Copy the old KDP to r4 + 10 pages.
|
||||
@ -40,7 +40,7 @@ InitReplacement
|
||||
subic. r12, r12, 4
|
||||
lwzx r10, r11, r12
|
||||
stwx r10, r1, r12
|
||||
bgt+ @kdp_copyloop
|
||||
bgt @kdp_copyloop
|
||||
|
||||
|
||||
; IRP goes at the base of the area we were given.
|
||||
@ -69,7 +69,7 @@ InitReplacement
|
||||
|
||||
; discarded
|
||||
|
||||
bne- @emulatordata_ptr_provided
|
||||
bne @emulatordata_ptr_provided
|
||||
addi r6, r1, 0x1000
|
||||
@emulatordata_ptr_provided
|
||||
|
||||
@ -150,7 +150,7 @@ InitReplacement
|
||||
lhz r12, KDP.InfoRecord + InfoRecord.NKNanoKernelInfoVer(r11)
|
||||
cmpwi r12, 0x0101
|
||||
|
||||
bgt- @replaces_later_than_0101
|
||||
bgt @replaces_later_than_0101
|
||||
|
||||
;
|
||||
lwz r12, KDP.PA_ECB_Old(r1)
|
||||
@ -168,7 +168,7 @@ InitReplacement
|
||||
|
||||
; Obviously cannot replace a v2 NanoKernel like myself
|
||||
cmpwi r12, 0x0200
|
||||
bge- CancelReplacement
|
||||
bge CancelReplacement
|
||||
|
||||
lwz r12, EWA.PA_ContextBlock(r11)
|
||||
stw r12, EWA.PA_ContextBlock(r1)
|
||||
@ -188,7 +188,7 @@ InitReplacement
|
||||
lwz r10, 0x05b4(r11)
|
||||
cmpw r12, r10
|
||||
|
||||
beq- replace_old_kernel_0x198
|
||||
beq replace_old_kernel_0x198
|
||||
stw r12, 0x05b4(r1)
|
||||
stw r0, 0x06b4(r1)
|
||||
lwz r10, 0x05b0(r11)
|
||||
@ -242,7 +242,7 @@ replace_old_kernel_0x198
|
||||
@wipeloop
|
||||
subic. r12, r12, 4
|
||||
stwx r0, r10, r12
|
||||
bgt+ @wipeloop
|
||||
bgt @wipeloop
|
||||
|
||||
|
||||
|
||||
@ -292,7 +292,7 @@ replace_old_kernel_0x198
|
||||
|
||||
lhz r10, KDP.InfoRecord + InfoRecord.NKProcessorInfoVer(r1)
|
||||
cmplwi r10, 0x0112
|
||||
bge- @ProcessorInfo_version_already_current
|
||||
bge @ProcessorInfo_version_already_current
|
||||
|
||||
li r12, 160
|
||||
li r10, 0x0112
|
||||
@ -359,7 +359,7 @@ replace_old_kernel_0x198
|
||||
endif
|
||||
|
||||
cmplwi r23, 0x27f3 ; set bit 27 on ROM 2.7f3 or later
|
||||
blt- @oldrom ; means later than PDM and Cordyceps
|
||||
blt @oldrom ; means later than PDM and Cordyceps
|
||||
_bset r8, r8, 27
|
||||
@oldrom
|
||||
|
||||
@ -429,7 +429,7 @@ MoveRecord ; OUTSIDE REFERER
|
||||
|
||||
subf r9, r22, r9 ; r9 = offset of old address in irp
|
||||
cmplwi r9, 0x1000
|
||||
bge- @kdp
|
||||
bge @kdp
|
||||
|
||||
add r21, r9, r11 ; r21 = the old address if it had been in KDP instead?
|
||||
|
||||
@ -444,10 +444,10 @@ MoveRecord ; OUTSIDE REFERER
|
||||
;
|
||||
@loop
|
||||
subic. r12, r12, 4
|
||||
blt- @exit_loop
|
||||
blt @exit_loop
|
||||
lwzx r9, r21, r12
|
||||
stwx r9, r10, r12
|
||||
bgt+ @loop
|
||||
bgt @loop
|
||||
@exit_loop
|
||||
|
||||
lwz r22, KDP.PA_ConfigInfo(r1)
|
||||
@ -456,7 +456,7 @@ MoveRecord ; OUTSIDE REFERER
|
||||
subf r10, r1, r10
|
||||
lisori r21, -9 * 4096
|
||||
cmpw r10, r21 ; if dest is nearer than 9 pages below kdp...
|
||||
blt- @0x50
|
||||
blt @0x50
|
||||
add r10, r10, r22
|
||||
blr
|
||||
@0x50
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -29,7 +29,7 @@ InitScreenConsole ; OUTSIDE REFERER
|
||||
InitScreenConsole_0x18
|
||||
cmplw r30, r31
|
||||
addi r29, r31, 0x04
|
||||
bge- InitScreenConsole_0x2c
|
||||
bge InitScreenConsole_0x2c
|
||||
stwu r29, -0x1000(r31)
|
||||
b InitScreenConsole_0x18
|
||||
|
||||
@ -63,7 +63,7 @@ ScreenConsole_putchar ; OUTSIDE REFERER
|
||||
addi r30, r30, 0x01
|
||||
andi. r29, r30, 0xfff
|
||||
stw r30, -0x0404(r1)
|
||||
bnelr-
|
||||
bnelr
|
||||
lwz r30, -0x1000(r30)
|
||||
stw r30, -0x0404(r1)
|
||||
blr
|
||||
@ -83,11 +83,11 @@ ScreenConsole_redraw ; OUTSIDE REFERER
|
||||
mtsprg 3, r26
|
||||
lwz r26, 0x0edc(r1)
|
||||
andi. r26, r26, 0x08
|
||||
beq- major_0x18bec
|
||||
beq major_0x18bec
|
||||
lwz r14, -0x0404(r1)
|
||||
lwz r15, -0x0400(r1)
|
||||
cmpw r14, r15
|
||||
beq- major_0x18bec
|
||||
beq major_0x18bec
|
||||
bl major_0x18c18
|
||||
|
||||
ScreenConsole_redraw_0x40
|
||||
@ -107,7 +107,7 @@ ScreenConsole_redraw_0x40
|
||||
|
||||
ScreenConsole_redraw_0x74
|
||||
cmpw r14, r15
|
||||
beq- ScreenConsole_redraw_0x118
|
||||
beq ScreenConsole_redraw_0x118
|
||||
lbz r25, 0x0000(r15)
|
||||
addi r15, r15, 0x01
|
||||
andi. r17, r15, 0xfff
|
||||
@ -117,27 +117,27 @@ ScreenConsole_redraw_0x74
|
||||
ScreenConsole_redraw_0x90
|
||||
cmplwi r25, 0x0d
|
||||
cmplwi cr1, r25, 0x0a
|
||||
beq+ ScreenConsole_redraw_0x74
|
||||
beq- cr1, ScreenConsole_redraw_0xc0
|
||||
beq ScreenConsole_redraw_0x74
|
||||
beq cr1, ScreenConsole_redraw_0xc0
|
||||
cmpwi r25, 0x00
|
||||
cmpwi cr1, r25, 0x07
|
||||
beq+ ScreenConsole_redraw_0x74
|
||||
beq- cr1, ScreenConsole_redraw_0xe4
|
||||
beq ScreenConsole_redraw_0x74
|
||||
beq cr1, ScreenConsole_redraw_0xe4
|
||||
bl major_0x18e54
|
||||
lhz r17, -0x0358(r1)
|
||||
cmpw r9, r17
|
||||
blt+ ScreenConsole_redraw_0x74
|
||||
blt ScreenConsole_redraw_0x74
|
||||
|
||||
ScreenConsole_redraw_0xc0
|
||||
cmpwi r16, 0x00
|
||||
bne- ScreenConsole_redraw_0xcc
|
||||
bne ScreenConsole_redraw_0xcc
|
||||
mr r16, r15
|
||||
|
||||
ScreenConsole_redraw_0xcc
|
||||
bl funny_thing
|
||||
lhz r17, -0x0356(r1)
|
||||
cmpw r10, r17
|
||||
blt+ ScreenConsole_redraw_0x74
|
||||
blt ScreenConsole_redraw_0x74
|
||||
stw r16, -0x0400(r1)
|
||||
b ScreenConsole_redraw_0x40
|
||||
|
||||
@ -145,7 +145,7 @@ ScreenConsole_redraw_0xe4
|
||||
lhz r17, -0x0356(r1)
|
||||
addi r17, r17, -0x01
|
||||
cmpw r10, r17
|
||||
blt+ ScreenConsole_redraw_0x74
|
||||
blt ScreenConsole_redraw_0x74
|
||||
lwz r17, -0x0438(r1)
|
||||
slwi r25, r17, 2
|
||||
add r25, r25, r17
|
||||
@ -155,7 +155,7 @@ ScreenConsole_redraw_0xe4
|
||||
ScreenConsole_redraw_0x108
|
||||
mfspr r25, dec
|
||||
subf. r25, r17, r25
|
||||
bge+ ScreenConsole_redraw_0x108
|
||||
bge ScreenConsole_redraw_0x108
|
||||
b ScreenConsole_redraw_0x74
|
||||
|
||||
ScreenConsole_redraw_0x118
|
||||
@ -163,7 +163,7 @@ ScreenConsole_redraw_0x118
|
||||
mfspr r31, pvr
|
||||
rlwinm. r31, r31, 0, 0, 14
|
||||
li r31, 0x00
|
||||
bne- ScreenConsole_redraw_0x140
|
||||
bne ScreenConsole_redraw_0x140
|
||||
mtspr ibat3l, r31
|
||||
isync
|
||||
mtspr ibat3u, r18
|
||||
@ -195,7 +195,7 @@ major_0x18bec ; OUTSIDE REFERER
|
||||
major_0x18c08 ; OUTSIDE REFERER
|
||||
mfsrin r31, r27
|
||||
cmpwi r31, 0x00
|
||||
beqlr-
|
||||
beqlr
|
||||
b PagingFunc4
|
||||
|
||||
|
||||
@ -204,14 +204,14 @@ major_0x18c18 ; OUTSIDE REFERER
|
||||
mflr r13
|
||||
lwz r27, -0x08f8(r1)
|
||||
cmpwi r27, 0x00
|
||||
bne- major_0x18c18_0x40
|
||||
bne major_0x18c18_0x40
|
||||
lwz r27, 0x0630(r1)
|
||||
lhz r31, 0x0378(r27)
|
||||
cmpwi r31, 0x00
|
||||
beq- major_0x18c18_0x40
|
||||
beq major_0x18c18_0x40
|
||||
lwz r31, 0x037c(r27)
|
||||
cmpwi r31, 0x00
|
||||
beq- major_0x18c18_0x40
|
||||
beq major_0x18c18_0x40
|
||||
stw r31, -0x08f8(r1)
|
||||
lhz r31, 0x0384(r27)
|
||||
sth r31, -0x08f4(r1)
|
||||
@ -221,33 +221,33 @@ major_0x18c18 ; OUTSIDE REFERER
|
||||
major_0x18c18_0x40
|
||||
li r27, 0x8a4
|
||||
bl major_0x18c08
|
||||
beq- major_0x18c18_0xe0
|
||||
beq major_0x18c18_0xe0
|
||||
rlwimi. r27, r31, 0, 0, 19
|
||||
ble- major_0x18c18_0xe0
|
||||
ble major_0x18c18_0xe0
|
||||
lwz r27, 0x0000(r27)
|
||||
cmpwi r27, 0x00
|
||||
ble- major_0x18c18_0xe0
|
||||
ble major_0x18c18_0xe0
|
||||
bl major_0x18c08
|
||||
beq- major_0x18c18_0xe0
|
||||
beq major_0x18c18_0xe0
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
lwz r27, 0x0000(r27)
|
||||
cmpwi r27, 0x00
|
||||
ble- major_0x18c18_0xe0
|
||||
ble major_0x18c18_0xe0
|
||||
addi r27, r27, 0x16
|
||||
bl major_0x18c08
|
||||
beq- major_0x18c18_0xe0
|
||||
beq major_0x18c18_0xe0
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
lwz r27, 0x0000(r27)
|
||||
cmpwi r27, 0x00
|
||||
ble- major_0x18c18_0xe0
|
||||
ble major_0x18c18_0xe0
|
||||
bl major_0x18c08
|
||||
beq- major_0x18c18_0xe0
|
||||
beq major_0x18c18_0xe0
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
lwz r27, 0x0000(r27)
|
||||
cmpwi r27, 0x00
|
||||
ble- major_0x18c18_0xe0
|
||||
ble major_0x18c18_0xe0
|
||||
bl major_0x18c08
|
||||
beq- major_0x18c18_0xe0
|
||||
beq major_0x18c18_0xe0
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
lwz r3, 0x0000(r27)
|
||||
lhz r5, 0x0004(r27)
|
||||
@ -255,7 +255,7 @@ major_0x18c18_0x40
|
||||
lhz r6, 0x0020(r27)
|
||||
srwi r6, r6, 3
|
||||
cmplwi r6, 0x08
|
||||
bgt- major_0x18c18_0xe0
|
||||
bgt major_0x18c18_0xe0
|
||||
stw r3, -0x08f8(r1)
|
||||
sth r5, -0x08f4(r1)
|
||||
sth r6, -0x08f2(r1)
|
||||
@ -265,7 +265,7 @@ major_0x18c18_0xe0
|
||||
lhz r5, -0x08f4(r1)
|
||||
lhz r6, -0x08f2(r1)
|
||||
cmpwi r3, 0x00
|
||||
bne- major_0x18d5c
|
||||
bne major_0x18d5c
|
||||
b major_0x18bec
|
||||
|
||||
|
||||
@ -297,9 +297,9 @@ major_0x18c18_0xe0
|
||||
major_0x18d5c ; OUTSIDE REFERER
|
||||
cmpwi cr4, r6, 0x02
|
||||
bl major_0x19ab0
|
||||
blt- cr4, major_0x18d5c_0x18
|
||||
blt cr4, major_0x18d5c_0x18
|
||||
bl major_0x19b00
|
||||
beq- cr4, major_0x18d5c_0x18
|
||||
beq cr4, major_0x18d5c_0x18
|
||||
bl load_log_colours
|
||||
|
||||
major_0x18d5c_0x18
|
||||
@ -307,7 +307,7 @@ major_0x18d5c_0x18
|
||||
mfspr r31, pvr
|
||||
rlwinm. r31, r31, 0, 0, 14
|
||||
li r31, 0x00
|
||||
bne- major_0x18d5c_0x3c
|
||||
bne major_0x18d5c_0x3c
|
||||
mfspr r19, ibat3l
|
||||
mfspr r18, ibat3u
|
||||
mtspr ibat3l, r31
|
||||
@ -321,7 +321,7 @@ major_0x18d5c_0x3c
|
||||
major_0x18d5c_0x48
|
||||
isync
|
||||
rlwinm r29, r3, 0, 0, 7
|
||||
beq- major_0x18d5c_0x70
|
||||
beq major_0x18d5c_0x70
|
||||
li r30, 0x7e
|
||||
or r30, r30, r29
|
||||
li r31, 0x32
|
||||
@ -367,8 +367,8 @@ major_0x18e24_0x4
|
||||
lbz r25, 0x0000(r21)
|
||||
cmplwi r25, 0x00
|
||||
addi r21, r21, 0x01
|
||||
beq- major_0x18e24_0x28
|
||||
bge+ cr1, major_0x18e24_0x4
|
||||
beq major_0x18e24_0x28
|
||||
bge cr1, major_0x18e24_0x4
|
||||
bl major_0x18e54
|
||||
b major_0x18e24_0x4
|
||||
|
||||
@ -397,12 +397,12 @@ major_0x18e54 ; OUTSIDE REFERER
|
||||
add r7, r7, r27
|
||||
add r7, r7, r28
|
||||
subf. r27, r3, r7
|
||||
blt- major_0x18e54_0x174
|
||||
blt major_0x18e54_0x174
|
||||
li r8, 0x00
|
||||
|
||||
major_0x18e54_0x50
|
||||
beq- cr4, major_0x18e54_0x9c
|
||||
bgt- cr4, major_0x18e54_0xe0
|
||||
beq cr4, major_0x18e54_0x9c
|
||||
bgt cr4, major_0x18e54_0xe0
|
||||
lbz r27, 0x0000(r23)
|
||||
rlwinm r27, r27, 28, 28, 29
|
||||
lwzx r28, r24, r27
|
||||
@ -479,7 +479,7 @@ major_0x18e54_0x160
|
||||
cmplwi r8, 0x0a
|
||||
add r7, r7, r5
|
||||
addi r23, r23, 0x100
|
||||
blt+ major_0x18e54_0x50
|
||||
blt major_0x18e54_0x50
|
||||
|
||||
major_0x18e54_0x174
|
||||
addi r9, r9, 0x01
|
||||
@ -501,13 +501,13 @@ funny_thing_0xc
|
||||
funny_thing_0x10
|
||||
lhz r25, -0x0358(r1)
|
||||
cmpw r9, r25
|
||||
bge- funny_thing_0x28
|
||||
bge funny_thing_0x28
|
||||
li r25, 0x20
|
||||
bl major_0x18e54
|
||||
b funny_thing_0x10
|
||||
|
||||
funny_thing_0x28
|
||||
beq- cr2, funny_thing_0x3c
|
||||
beq cr2, funny_thing_0x3c
|
||||
li r9, 0x00
|
||||
addi r10, r10, 0x01
|
||||
li r25, 0x20
|
||||
|
@ -28,7 +28,7 @@ MPGetKernelStateSize
|
||||
lwz r8, EWA.CPUBase + CPU.LLL + LLL.Freeform(r9)
|
||||
lwz r9, CoherenceGroup.ScheduledCpuCount(r8)
|
||||
cmpwi r9, 1
|
||||
bgt+ Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
bgt Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
|
||||
bl KernelStateSize
|
||||
|
||||
@ -50,16 +50,16 @@ MPGetKernelState
|
||||
lwz r8, EWA.CPUBase + CPU.LLL + LLL.Freeform(r9)
|
||||
lwz r9, CoherenceGroup.ScheduledCpuCount(r8)
|
||||
cmpwi r9, 1
|
||||
bgt+ Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
bgt Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
|
||||
clrlwi. r8, r5, 20
|
||||
bne+ Local_ReturnParamErrFromMPCall
|
||||
bne Local_ReturnParamErrFromMPCall
|
||||
|
||||
bl KernelStateSize
|
||||
cmpw r3, r8
|
||||
blt+ Local_ReturnParamErrFromMPCall
|
||||
blt Local_ReturnParamErrFromMPCall
|
||||
cmpw r4, r9
|
||||
blt+ Local_ReturnParamErrFromMPCall
|
||||
blt Local_ReturnParamErrFromMPCall
|
||||
|
||||
bl PagingFlushTLB
|
||||
mfsprg r9, 0
|
||||
@ -73,7 +73,7 @@ MPGetKernelState
|
||||
|
||||
mfpvr r8
|
||||
rlwinm. r8, r8, 0, 0, 14
|
||||
bne- @not_601
|
||||
bne @not_601
|
||||
mfspr r8, mq
|
||||
stw r8, ContextBlock.MQ(r6)
|
||||
@not_601
|
||||
@ -87,9 +87,9 @@ MPGetKernelState
|
||||
lwz r8, EWA.r6(r9)
|
||||
stw r5, ContextBlock.r5(r6)
|
||||
stw r8, ContextBlock.r6(r6)
|
||||
bnel+ Save_f0_f31
|
||||
bnel Save_f0_f31
|
||||
rlwinm. r8, r7, 0, 12, 12 ; flags
|
||||
bnel+ Save_v0_v31
|
||||
bnel Save_v0_v31
|
||||
|
||||
lwz r3, ContextBlock.r3(r6)
|
||||
lwz r4, ContextBlock.r4(r6)
|
||||
@ -99,7 +99,7 @@ MPGetKernelState
|
||||
mr r27, r5
|
||||
addi r29, r1, 800
|
||||
bl PagingFunc3
|
||||
beq+ Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
beq Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
mr r17, r27
|
||||
addi r15, r17, 0x34
|
||||
@ -109,13 +109,13 @@ MPGetKernelState_0xc8
|
||||
mr r27, r5
|
||||
addi r29, r1, 800
|
||||
bl PagingFunc3
|
||||
beq+ Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
beq Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
rlwimi r27, r31, 0, 0, 19
|
||||
stwu r27, 0x0004(r15)
|
||||
addi r3, r3, -0x01
|
||||
addi r5, r5, 0x1000
|
||||
cmpwi r3, 0x00
|
||||
bge+ MPGetKernelState_0xc8
|
||||
bge MPGetKernelState_0xc8
|
||||
addi r15, r15, 0x04
|
||||
subf r15, r17, r15
|
||||
stw r15, 0x0034(r17)
|
||||
@ -174,7 +174,7 @@ MPGetKernelState_0x1a4
|
||||
andi. r19, r18, 0xe00
|
||||
lhz r16, 0x0002(r30)
|
||||
cmplwi r19, 0xc00
|
||||
bne- MPGetKernelState_0x1dc
|
||||
bne MPGetKernelState_0x1dc
|
||||
addi r16, r16, 0x01
|
||||
slwi r16, r16, 2
|
||||
stw r16, 0x0000(r29)
|
||||
@ -186,12 +186,12 @@ MPGetKernelState_0x1a4
|
||||
|
||||
MPGetKernelState_0x1dc
|
||||
cmpwi r15, 0x00
|
||||
bne- MPGetKernelState_0x1fc
|
||||
bne MPGetKernelState_0x1fc
|
||||
cmplwi r16, 0xffff
|
||||
bne- MPGetKernelState_0x1fc
|
||||
bne MPGetKernelState_0x1fc
|
||||
addis r31, r31, 0x1000
|
||||
cmpwi r31, 0x00
|
||||
bne+ MPGetKernelState_0x1a0
|
||||
bne MPGetKernelState_0x1a0
|
||||
b MPGetKernelState_0x204
|
||||
|
||||
MPGetKernelState_0x1fc
|
||||
@ -211,7 +211,7 @@ MPGetKernelState_0x208
|
||||
addi r29, r29, 0x0c
|
||||
addi r14, r14, 0x01
|
||||
cmpwi r19, 0x00
|
||||
beq- MPGetKernelState_0x238
|
||||
beq MPGetKernelState_0x238
|
||||
add r16, r19, r18
|
||||
b MPGetKernelState_0x208
|
||||
|
||||
@ -221,7 +221,7 @@ MPGetKernelState_0x238
|
||||
|
||||
MPGetKernelState_0x240
|
||||
cmpw r31, r19
|
||||
beq- MPGetKernelState_0x264
|
||||
beq MPGetKernelState_0x264
|
||||
li r18, 0x10
|
||||
stw r18, 0x0000(r29)
|
||||
stw r31, 0x0004(r29)
|
||||
@ -246,7 +246,7 @@ MPGetKernelState_0x270
|
||||
addi r30, r30, 0x0c
|
||||
addi r14, r14, -0x01
|
||||
cmpwi r14, 0x00
|
||||
bne+ MPGetKernelState_0x270
|
||||
bne MPGetKernelState_0x270
|
||||
subf r8, r17, r29
|
||||
stw r8, 0x0020(r17)
|
||||
lwz r24, 0x001c(r17)
|
||||
@ -308,7 +308,7 @@ RestoreKernelState_0x38
|
||||
addi r30, r30, 0x0c
|
||||
addi r14, r14, -0x01
|
||||
cmpwi r14, 0x00
|
||||
bne+ RestoreKernelState_0x38
|
||||
bne RestoreKernelState_0x38
|
||||
lwz r16, 0x0024(r17)
|
||||
mtsprg 0, r16
|
||||
lwz r8, 0x0028(r17)
|
||||
@ -340,7 +340,7 @@ RestoreKernelState_0x38
|
||||
|
||||
mfpvr r8
|
||||
rlwinm. r8, r8, 0, 0, 14
|
||||
bne- RestoreKernelState_0xf8
|
||||
bne RestoreKernelState_0xf8
|
||||
lwz r8, 0x00c4(r6)
|
||||
DIALECT POWER
|
||||
mtmq r8
|
||||
@ -364,7 +364,7 @@ RestoreKernelState_0xf8
|
||||
lwz r29, 0x00d8(r6)
|
||||
cmpwi r29, 0x00
|
||||
lwz r8, 0x0210(r29)
|
||||
beq- RestoreKernelState_0x144
|
||||
beq RestoreKernelState_0x144
|
||||
mtspr vrsave, r8
|
||||
|
||||
RestoreKernelState_0x144
|
||||
@ -436,7 +436,7 @@ KernelStateSize
|
||||
andi. r18, r18, PMDT.TopFieldMask ; r18 = 3b field at top of pageAttr
|
||||
lhz r16, PMDT.PageCount(r17) ; PageCountMinus1(16b)
|
||||
cmplwi r18, PMDT.DaddyFlag | PMDT.CountingFlag
|
||||
bne- @entry_seems_blank
|
||||
bne @entry_seems_blank
|
||||
|
||||
addi r16, r16, 1
|
||||
add r19, r19, r16
|
||||
@ -445,14 +445,14 @@ KernelStateSize
|
||||
@entry_seems_blank
|
||||
|
||||
cmpwi r15, 0 ; if not full-segment, might not be blank?
|
||||
bne- @continue_next_entry
|
||||
bne @continue_next_entry
|
||||
cmplwi r16, 0xffff
|
||||
bne- @continue_next_entry
|
||||
bne @continue_next_entry
|
||||
|
||||
; This is the "normal" way to loop to the next segment
|
||||
addis r31, r31, 0x1000
|
||||
cmpwi r31, 0
|
||||
bne+ @next_segment
|
||||
bne @next_segment
|
||||
b @exit
|
||||
|
||||
@continue_next_entry
|
||||
@ -467,7 +467,7 @@ KernelStateSize
|
||||
add r8, r8, r19
|
||||
|
||||
cmpwi r14, 0x00 ; no entries? fail!
|
||||
beq+ Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
beq Local_ReturnInsufficientResourcesErrFromMPCall
|
||||
mulli r9, r14, 12
|
||||
add r8, r8, r9 ; 12 bytes per SegMap entry
|
||||
|
||||
@ -492,7 +492,7 @@ KernelStateSize
|
||||
|
||||
cmpwi r19, 0 ; last segment?
|
||||
add r16, r19, r18
|
||||
beq- @exit_pool_counter
|
||||
beq @exit_pool_counter
|
||||
b @next_pool_segment ; odd... what happened here?
|
||||
@exit_pool_counter
|
||||
|
||||
@ -504,7 +504,7 @@ KernelStateSize
|
||||
|
||||
@next_page_in_freelist
|
||||
cmpw r18, r16
|
||||
beq- @exit_freelist_counter
|
||||
beq @exit_freelist_counter
|
||||
addi r9, r9, 16
|
||||
addi r14, r14, 1
|
||||
lwz r18, LLL.Next(r18)
|
||||
@ -544,7 +544,7 @@ CoherenceFunc_0x138 ; OUTSIDE REFERER
|
||||
|
||||
AnotherCoherenceFunc ; OUTSIDE REFERER
|
||||
cmpwi r26, 0x00
|
||||
beqlr-
|
||||
beqlr
|
||||
mflr r22
|
||||
addi r24, r24, -0x01
|
||||
mr r28, r25
|
||||
@ -554,7 +554,7 @@ AnotherCoherenceFunc_0x14
|
||||
clrlwi r25, r23, 0x14
|
||||
subfic r25, r25, 0x1000
|
||||
cmplw r25, r26
|
||||
blt- AnotherCoherenceFunc_0x2c
|
||||
blt AnotherCoherenceFunc_0x2c
|
||||
mr r25, r26
|
||||
|
||||
AnotherCoherenceFunc_0x2c
|
||||
@ -566,12 +566,12 @@ AnotherCoherenceFunc_0x2c
|
||||
AnotherCoherenceFunc_0x3c
|
||||
lbzu r27, 0x0001(r24)
|
||||
stbu r27, 0x0001(r23)
|
||||
bdnz+ AnotherCoherenceFunc_0x3c
|
||||
bdnz AnotherCoherenceFunc_0x3c
|
||||
bl YetAnotherCoherenceFunc_0x64
|
||||
subf r26, r25, r26
|
||||
add r28, r28, r25
|
||||
cmpwi r26, 0x00
|
||||
bne+ AnotherCoherenceFunc_0x14
|
||||
bne AnotherCoherenceFunc_0x14
|
||||
mtlr r22
|
||||
blr
|
||||
|
||||
@ -579,7 +579,7 @@ AnotherCoherenceFunc_0x3c
|
||||
|
||||
YetAnotherCoherenceFunc ; OUTSIDE REFERER
|
||||
cmpwi r26, 0x00
|
||||
beqlr-
|
||||
beqlr
|
||||
mr r19, r25
|
||||
mr r20, r26
|
||||
mflr r22
|
||||
@ -591,7 +591,7 @@ YetAnotherCoherenceFunc_0x1c
|
||||
clrlwi r24, r23, 0x14
|
||||
subfic r24, r24, 0x1000
|
||||
cmplw r24, r26
|
||||
blt- YetAnotherCoherenceFunc_0x34
|
||||
blt YetAnotherCoherenceFunc_0x34
|
||||
mr r24, r26
|
||||
|
||||
YetAnotherCoherenceFunc_0x34
|
||||
@ -601,11 +601,11 @@ YetAnotherCoherenceFunc_0x34
|
||||
YetAnotherCoherenceFunc_0x3c
|
||||
lbzu r27, 0x0001(r23)
|
||||
stbu r27, 0x0001(r25)
|
||||
bdnz+ YetAnotherCoherenceFunc_0x3c
|
||||
bdnz YetAnotherCoherenceFunc_0x3c
|
||||
add r28, r28, r24
|
||||
subf r26, r24, r26
|
||||
cmpwi r26, 0x00
|
||||
bne+ YetAnotherCoherenceFunc_0x1c
|
||||
bne YetAnotherCoherenceFunc_0x1c
|
||||
bl YetAnotherCoherenceFunc_0x64
|
||||
mtlr r22
|
||||
blr
|
||||
@ -627,7 +627,7 @@ YetAnotherCoherenceFunc_0x88
|
||||
icbi 0, r19
|
||||
add r19, r19, r21
|
||||
cmpw r19, r20
|
||||
blt+ YetAnotherCoherenceFunc_0x88
|
||||
blt YetAnotherCoherenceFunc_0x88
|
||||
sync
|
||||
isync
|
||||
blr
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -15,7 +15,7 @@ Local_Panic set *
|
||||
|
||||
MPCall_7 ; OUTSIDE REFERER
|
||||
rlwinm. r8, r5, 0, 31, 28
|
||||
bne+ ReturnMPCallOOM
|
||||
bne ReturnMPCallOOM
|
||||
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
@ -23,18 +23,18 @@ MPCall_7 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Process.kIDClass
|
||||
mr r30, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
|
||||
lwz r16, Process.Flags(r30)
|
||||
rlwinm. r17, r16, 0, 30, 30
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
|
||||
; ARG CPUFlags r7, Process *r8
|
||||
bl CreateTask
|
||||
; RET Task *r8
|
||||
|
||||
mr. r31, r8
|
||||
beq+ ReleaseAndScrambleMPCall
|
||||
beq ReleaseAndScrambleMPCall
|
||||
|
||||
|
||||
mfsprg r15, 0
|
||||
@ -66,12 +66,12 @@ MPCall_7 ; OUTSIDE REFERER
|
||||
lwz r16, Task.Flags(r28)
|
||||
|
||||
rlwinm. r8, r5, 0, 30, 30
|
||||
beq- @noflag
|
||||
beq @noflag
|
||||
oris r16, r16, 0x40 ; Task.kFlag9
|
||||
@noflag
|
||||
|
||||
rlwinm. r8, r5, 0, 29, 29
|
||||
beq- @noflag2
|
||||
beq @noflag2
|
||||
oris r16, r16, 0x02 ; Task.kFlag14
|
||||
@noflag2
|
||||
|
||||
@ -97,13 +97,13 @@ CreateTask
|
||||
li r8, 0x400 ;Task.Size
|
||||
bl PoolAllocClear
|
||||
mr. r28, r8
|
||||
beq- @fail_oom
|
||||
beq @fail_oom
|
||||
|
||||
; Allocate an opaque ID for it
|
||||
li r9, Task.kIDClass
|
||||
bl MakeID
|
||||
cmpwi r8, 0
|
||||
beq- @fail_no_id
|
||||
beq @fail_no_id
|
||||
|
||||
; ID and sign it
|
||||
stw r8, Task.ID(r28)
|
||||
@ -123,7 +123,7 @@ CreateTask
|
||||
bl PoolAllocClear
|
||||
cmpwi r8, 0
|
||||
stw r8, Task.NotificationPtr(r28)
|
||||
beq- @fail_note_oom
|
||||
beq @fail_note_oom
|
||||
|
||||
lisori r9, 'note'
|
||||
stw r9, 4(r8)
|
||||
@ -148,7 +148,7 @@ CreateTask
|
||||
li r9, Semaphore.kIDClass
|
||||
bl MakeID
|
||||
cmpwi r8, 0
|
||||
beq- @fail_semq_no_id
|
||||
beq @fail_semq_no_id
|
||||
stw r8, Task.Semaphore + Semaphore.BlockedTasks + LLL.Freeform(r28)
|
||||
|
||||
|
||||
@ -157,15 +157,15 @@ CreateTask
|
||||
|
||||
; Conditionally, that is
|
||||
rlwinm. r8, r7, 0, PSA.AVFeatureBit, PSA.AVFeatureBit
|
||||
beq- @non_altivec_task
|
||||
beq @non_altivec_task
|
||||
|
||||
; Allocate and check
|
||||
li r8, 0x214 ;VectorSaveArea.Size ; room for v registers plus 20 bytes
|
||||
bl PoolAllocClear
|
||||
andi. r9, r8, 16-1 ; Sanity check: aligned to size of vector register?
|
||||
cmpwi cr1, r8, 0
|
||||
bne+ Local_Panic
|
||||
beq- cr1, @fail_altivec_oom
|
||||
bne Local_Panic
|
||||
beq cr1, @fail_altivec_oom
|
||||
|
||||
; Point to it (from inside and outside the ECB-like area)
|
||||
stw r8, Task.VectorSaveArea(r28)
|
||||
@ -179,7 +179,7 @@ CreateTask
|
||||
subi r16, r16, 1
|
||||
stwu r17, 4(r8)
|
||||
cmpwi r16, 0
|
||||
bgt+ @vectorarea_copyloop
|
||||
bgt @vectorarea_copyloop
|
||||
@non_altivec_task
|
||||
|
||||
|
||||
@ -317,20 +317,20 @@ MPCall_8 ; OUTSIDE REFERER
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
mr r31, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
lbz r16, 0x0018(r31)
|
||||
cmpwi r16, 0x00
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lwz r8, 0x0060(r31)
|
||||
|
||||
; r8 = id
|
||||
bl LookupID
|
||||
cmpwi r9, Process.kIDClass
|
||||
|
||||
bne+ Local_Panic
|
||||
bne Local_Panic
|
||||
lwz r16, 0x0008(r8)
|
||||
rlwinm. r17, r16, 0, 30, 30
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lwz r30, 0x0088(r31)
|
||||
stw r4, 0x0074(r31)
|
||||
stw r5, 0x011c(r30)
|
||||
@ -371,18 +371,18 @@ MPCall_9 ; OUTSIDE REFERER
|
||||
|
||||
mr r31, r8
|
||||
cmpwi r9, 0x02
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
lwz r16, 0x0064(r31)
|
||||
lbz r17, 0x0018(r31)
|
||||
rlwinm. r18, r16, 0, 30, 30
|
||||
cmpwi cr1, r17, 0x00
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
beq- cr1, MPCall_9_0xb4
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
beq cr1, MPCall_9_0xb4
|
||||
mfsprg r15, 0
|
||||
lhz r18, 0x001a(r31)
|
||||
lhz r17, EWA.CPUIndex(r15)
|
||||
cmpw r18, r17
|
||||
beq- MPCall_9_0xe0
|
||||
beq MPCall_9_0xe0
|
||||
ori r16, r16, 0x400
|
||||
stw r16, 0x0064(r31)
|
||||
li r17, 0x01
|
||||
@ -427,7 +427,7 @@ MPCall_9_0xfc
|
||||
InsertAsPrev r17, r16, scratch=r18
|
||||
lbz r8, 0x0037(r31)
|
||||
cmpwi r8, 0x01
|
||||
bne- MPCall_9_0x130
|
||||
bne MPCall_9_0x130
|
||||
addi r8, r31, 0x20
|
||||
bl DequeueTimer
|
||||
|
||||
@ -441,7 +441,7 @@ MPCall_9_0x130
|
||||
li r18, 0x00
|
||||
lwz r17, 0x009c(r31)
|
||||
stw r18, 0x009c(r31)
|
||||
bne- MPCall_9_0x15c
|
||||
bne MPCall_9_0x15c
|
||||
mr r31, r8
|
||||
mr r8, r17
|
||||
bl EnqueueMessage ; Message *r8, Queue *r31
|
||||
@ -466,14 +466,14 @@ MPCall_10 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
lbz r16, 0x0018(r31)
|
||||
cmpwi r16, 0x00
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lwz r16, 0x0064(r31)
|
||||
rlwinm. r16, r16, 0, 30, 30
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
mr r8, r31
|
||||
bl TasksFuncThatIsNotAMPCall
|
||||
|
||||
@ -493,13 +493,13 @@ TasksFuncThatIsNotAMPCall
|
||||
bl DeleteID
|
||||
lwz r8, 0x009c(r26)
|
||||
cmpwi r8, 0x00
|
||||
beq- @_0x98
|
||||
beq @_0x98
|
||||
bl PoolFree
|
||||
|
||||
@_0x98
|
||||
lwz r8, 0x008c(r26)
|
||||
cmpwi r8, 0x00
|
||||
beq- @_0xa8
|
||||
beq @_0xa8
|
||||
bl PoolFree
|
||||
|
||||
@_0xa8
|
||||
@ -529,13 +529,13 @@ MPCall_11 ; OUTSIDE REFERER
|
||||
lwz r17, PSA.PA_BlueTask(r1)
|
||||
lwz r18, -0x0008(r16)
|
||||
lwz r19, 0x0000(r17)
|
||||
bne- MPCall_11_0x1c
|
||||
bne MPCall_11_0x1c
|
||||
lwz r3, 0x0000(r18)
|
||||
|
||||
MPCall_11_0x1c
|
||||
cmpw r3, r19
|
||||
li r3, 0x01
|
||||
beq+ CommonMPCallReturnPath
|
||||
beq CommonMPCallReturnPath
|
||||
li r3, 0x00
|
||||
b CommonMPCallReturnPath
|
||||
|
||||
@ -557,8 +557,8 @@ MPCall_12 ; OUTSIDE REFERER
|
||||
MPCall_14 ; OUTSIDE REFERER
|
||||
cmpwi r4, 0x01
|
||||
cmpwi cr1, r4, 10000
|
||||
blt+ ReturnMPCallInvalidIDErr
|
||||
bgt+ cr1, ReturnMPCallInvalidIDErr
|
||||
blt ReturnMPCallInvalidIDErr
|
||||
bgt cr1, ReturnMPCallInvalidIDErr
|
||||
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
@ -568,11 +568,11 @@ MPCall_14 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
lbz r16, 0x0018(r31)
|
||||
cmpwi r16, 0x01
|
||||
bne- MPCall_14_0x70
|
||||
bne MPCall_14_0x70
|
||||
lwz r16, 0x0008(r31)
|
||||
lwz r17, 0x001c(r31)
|
||||
lwz r18, 0x0014(r16)
|
||||
@ -580,7 +580,7 @@ MPCall_14 ; OUTSIDE REFERER
|
||||
add r18, r17, r18
|
||||
cmpwi r17, 0x00
|
||||
stw r18, 0x0014(r16)
|
||||
beq- MPCall_14_0x70
|
||||
beq MPCall_14_0x70
|
||||
mr r8, r31
|
||||
bl FlagSchEval
|
||||
|
||||
@ -611,7 +611,7 @@ MPSetExceptionHandler
|
||||
mr r8, r3
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
|
||||
mr r31, r8
|
||||
|
||||
@ -620,8 +620,8 @@ MPSetExceptionHandler
|
||||
|
||||
cmpwi r9, 0
|
||||
cmpwi cr1, r9, Queue.kIDClass
|
||||
beq- @isnil
|
||||
bne+ cr1, ReleaseAndReturnMPCallInvalidIDErr
|
||||
beq @isnil
|
||||
bne cr1, ReleaseAndReturnMPCallInvalidIDErr
|
||||
@isnil
|
||||
|
||||
mr r30, r8
|
||||
@ -648,7 +648,7 @@ MPThrowException
|
||||
mr r8, r3
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
|
||||
; This is gold!
|
||||
@ -677,7 +677,7 @@ MPThrowException
|
||||
KCThrowException_0x70
|
||||
lhz r19, EWA.CPUIndex(r15)
|
||||
cmpw r19, r18
|
||||
bne- KCThrowException_0xb8
|
||||
bne KCThrowException_0xb8
|
||||
ori r16, r16, 0x200
|
||||
stw r4, 0x00f8(r31)
|
||||
stw r16, 0x0064(r31)
|
||||
@ -716,7 +716,7 @@ MPCall_58 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
|
||||
lwz r29, Task.Flags(r31)
|
||||
@ -735,7 +735,7 @@ MPCall_58_0x44
|
||||
li r8, 0x1c
|
||||
bl PoolAlloc
|
||||
cmpwi r8, 0x00
|
||||
beq+ ReleaseAndScrambleMPCall
|
||||
beq ReleaseAndScrambleMPCall
|
||||
li r3, 0x00
|
||||
b MPCall_58_0x114
|
||||
|
||||
@ -744,11 +744,11 @@ MPCall_58_0x68
|
||||
rlwinm. r8, r29, 0, 18, 18
|
||||
andc r29, r29, r17
|
||||
li r17, 0x00
|
||||
bne- cr7, MPCall_58_0x80
|
||||
bne cr7, MPCall_58_0x80
|
||||
ori r17, r17, 0x400
|
||||
|
||||
MPCall_58_0x80
|
||||
ble- cr7, MPCall_58_0x88
|
||||
ble cr7, MPCall_58_0x88
|
||||
ori r17, r17, 0x200
|
||||
|
||||
MPCall_58_0x88
|
||||
@ -761,8 +761,8 @@ MPCall_58_0x88
|
||||
andc r29, r29, r19
|
||||
cmpw cr1, r17, r18
|
||||
stw r29, 0x0064(r31)
|
||||
bne- MPCall_58_0xb4
|
||||
bne- cr1, MPCall_58_0xe0
|
||||
bne MPCall_58_0xb4
|
||||
bne cr1, MPCall_58_0xe0
|
||||
|
||||
MPCall_58_0xb4
|
||||
addi r16, r31, 0x08
|
||||
@ -800,7 +800,7 @@ MPCall_58_0x114
|
||||
|
||||
mr r30, r8
|
||||
ori r29, r29, 0x800
|
||||
beq- MPCall_58_0x184
|
||||
beq MPCall_58_0x184
|
||||
|
||||
MPCall_58_0x13c
|
||||
bc BO_IF, 19, MPCall_58_0x158
|
||||
@ -812,11 +812,11 @@ MPCall_58_0x13c
|
||||
|
||||
mr r30, r8
|
||||
ori r29, r29, 0x1000
|
||||
beq- MPCall_58_0x184
|
||||
beq MPCall_58_0x184
|
||||
|
||||
MPCall_58_0x158
|
||||
mr. r8, r28
|
||||
bnel- PoolFree
|
||||
bnel PoolFree
|
||||
addi r16, r31, 0x08
|
||||
RemoveFromList r16, scratch1=r17, scratch2=r18
|
||||
b MPCall_9_0x98
|
||||
@ -824,10 +824,10 @@ MPCall_58_0x158
|
||||
MPCall_58_0x184
|
||||
mr. r8, r28
|
||||
stw r29, 0x0064(r31)
|
||||
bne- MPCall_58_0x1a4
|
||||
bne MPCall_58_0x1a4
|
||||
lwz r8, 0x0028(r30)
|
||||
cmpwi r8, 0x00
|
||||
beq+ MPCall_58_0x114
|
||||
beq MPCall_58_0x114
|
||||
lwz r17, 0x0008(r8)
|
||||
stw r17, 0x0028(r30)
|
||||
|
||||
@ -873,13 +873,13 @@ MPCall_59 ; OUTSIDE REFERER
|
||||
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
||||
|
||||
mr. r8, r3
|
||||
beq- MPCall_59_0x30
|
||||
beq MPCall_59_0x30
|
||||
|
||||
; r8 = id
|
||||
bl LookupID
|
||||
cmpwi r9, Queue.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
|
||||
MPCall_59_0x30
|
||||
@ -902,10 +902,10 @@ MPCall_60 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
cmpwi r4, 0x05
|
||||
beq- MPCall_60_0x288
|
||||
beq MPCall_60_0x288
|
||||
|
||||
lwz r16, Task.Flags(r31)
|
||||
mtcr r16
|
||||
@ -919,27 +919,27 @@ MPCall_60 ; OUTSIDE REFERER
|
||||
MPCall_60_0x4c
|
||||
lbz r16, 0x0018(r31)
|
||||
cmpwi r16, 0x00
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
cmpwi r4, 0x00
|
||||
cmpwi cr1, r4, 0x01
|
||||
beq- MPCall_60_0xf8
|
||||
beq- cr1, MPCall_60_0x10c
|
||||
beq MPCall_60_0xf8
|
||||
beq cr1, MPCall_60_0x10c
|
||||
cmpwi r4, 0x02
|
||||
cmpwi cr1, r4, 0x03
|
||||
beq- MPCall_60_0x150
|
||||
beq- cr1, MPCall_60_0x1c0
|
||||
beq MPCall_60_0x150
|
||||
beq cr1, MPCall_60_0x1c0
|
||||
cmpwi r4, 0x04
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lwz r16, 0x0088(r31)
|
||||
li r17, 0x00
|
||||
cmplwi r5, 0x00
|
||||
cmplwi cr1, r5, 0x04
|
||||
beq- MPCall_60_0xac
|
||||
beq- cr1, MPCall_60_0xc0
|
||||
beq MPCall_60_0xac
|
||||
beq cr1, MPCall_60_0xc0
|
||||
cmplwi r5, 0x08
|
||||
cmplwi cr1, r5, 0x0c
|
||||
beq- MPCall_60_0xc8
|
||||
beq- cr1, MPCall_60_0xd0
|
||||
beq MPCall_60_0xc8
|
||||
beq cr1, MPCall_60_0xd0
|
||||
b ReleaseAndReturnMPCallOOM
|
||||
|
||||
MPCall_60_0xac
|
||||
@ -962,10 +962,10 @@ MPCall_60_0xd0
|
||||
lwz r18, 0x0064(r16)
|
||||
rlwinm. r8, r17, 0, 27, 27
|
||||
li r17, 0x02
|
||||
beq- MPCall_60_0x36c
|
||||
beq MPCall_60_0x36c
|
||||
rlwinm. r8, r18, 0, 1, 1
|
||||
li r17, 0x01
|
||||
bne- MPCall_60_0x36c
|
||||
bne MPCall_60_0x36c
|
||||
li r17, 0x00
|
||||
b MPCall_60_0x36c
|
||||
|
||||
@ -980,14 +980,14 @@ MPCall_60_0x10c
|
||||
lwz r16, 0x0088(r31)
|
||||
cmplwi r5, 0x100
|
||||
cmplwi cr1, r5, 0xf8
|
||||
beq- MPCall_60_0x144
|
||||
beq MPCall_60_0x144
|
||||
andi. r17, r5, 0x07
|
||||
addi r16, r16, 0x1fc
|
||||
|
||||
MPCall_60_0x124
|
||||
add r16, r16, r5
|
||||
bgt+ cr1, ReleaseAndReturnMPCallOOM
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bgt cr1, ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lwzu r17, 0x0004(r16)
|
||||
lwzu r18, 0x0004(r16)
|
||||
lwzu r19, 0x0004(r16)
|
||||
@ -1003,19 +1003,19 @@ MPCall_60_0x150
|
||||
lwz r16, 0x0088(r31)
|
||||
rlwinm. r8, r7, 0, 12, 12
|
||||
lwz r16, 0x00d8(r16)
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
cmplwi cr3, r16, 0x00
|
||||
cmplwi r5, 0x200
|
||||
cmplwi cr2, r5, 0x210
|
||||
cmplwi cr1, r5, 0x1f0
|
||||
beql+ cr3, Local_Panic
|
||||
beq- MPCall_60_0x1a4
|
||||
beq- cr2, MPCall_60_0x1b8
|
||||
beql cr3, Local_Panic
|
||||
beq MPCall_60_0x1a4
|
||||
beq cr2, MPCall_60_0x1b8
|
||||
andi. r8, r5, 0x0f
|
||||
add r16, r16, r5
|
||||
subi r16, r16, 4
|
||||
bgt+ cr1, ReleaseAndReturnMPCallOOM
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bgt cr1, ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lwzu r17, 0x0004(r16)
|
||||
lwzu r18, 0x0004(r16)
|
||||
lwzu r19, 0x0004(r16)
|
||||
@ -1038,24 +1038,24 @@ MPCall_60_0x1c0
|
||||
li r17, 0x00
|
||||
cmplwi r5, 0x00
|
||||
cmplwi cr1, r5, 0x08
|
||||
beq- MPCall_60_0x21c
|
||||
beq- cr1, MPCall_60_0x228
|
||||
beq MPCall_60_0x21c
|
||||
beq cr1, MPCall_60_0x228
|
||||
cmplwi r5, 0x10
|
||||
cmplwi cr1, r5, 0x30
|
||||
beq- MPCall_60_0x234
|
||||
beq- cr1, MPCall_60_0x240
|
||||
beq MPCall_60_0x234
|
||||
beq cr1, MPCall_60_0x240
|
||||
cmplwi r5, 0x1c
|
||||
cmplwi cr1, r5, 0x20
|
||||
beq- MPCall_60_0x24c
|
||||
beq- cr1, MPCall_60_0x254
|
||||
beq MPCall_60_0x24c
|
||||
beq cr1, MPCall_60_0x254
|
||||
cmplwi r5, 0x24
|
||||
cmplwi cr1, r5, 0x28
|
||||
beq- MPCall_60_0x25c
|
||||
beq- cr1, MPCall_60_0x264
|
||||
beq MPCall_60_0x25c
|
||||
beq cr1, MPCall_60_0x264
|
||||
cmplwi r5, 0x2c
|
||||
cmplwi cr1, r5, 0x18
|
||||
beq- MPCall_60_0x278
|
||||
beq- cr1, MPCall_60_0x280
|
||||
beq MPCall_60_0x278
|
||||
beq cr1, MPCall_60_0x280
|
||||
b ReleaseAndReturnMPCallOOM
|
||||
|
||||
MPCall_60_0x21c
|
||||
@ -1108,18 +1108,18 @@ MPCall_60_0x280
|
||||
MPCall_60_0x288
|
||||
cmplwi cr1, r5, 0x04
|
||||
cmplwi r5, 0x14
|
||||
beq- cr1, MPCall_60_0x2c4
|
||||
beq- MPCall_60_0x2e4
|
||||
beq cr1, MPCall_60_0x2c4
|
||||
beq MPCall_60_0x2e4
|
||||
cmplwi cr1, r5, 0x20
|
||||
cmplwi r5, 0x30
|
||||
beq- cr1, MPCall_60_0x2f4
|
||||
beq- MPCall_60_0x308
|
||||
beq cr1, MPCall_60_0x2f4
|
||||
beq MPCall_60_0x308
|
||||
cmpwi cr1, r5, 0x40
|
||||
cmplwi r5, 0x3c
|
||||
beq- cr1, MPCall_60_0x320
|
||||
beq- MPCall_60_0x318
|
||||
beq cr1, MPCall_60_0x320
|
||||
beq MPCall_60_0x318
|
||||
cmpwi cr1, r5, 0x50
|
||||
beq- cr1, MPCall_60_0x34c
|
||||
beq cr1, MPCall_60_0x34c
|
||||
b ReleaseAndReturnMPCallOOM
|
||||
|
||||
MPCall_60_0x2c4
|
||||
@ -1164,7 +1164,7 @@ MPCall_60_0x320
|
||||
lwz r19, 0x0094(r31)
|
||||
lwz r20, 0x0090(r31)
|
||||
lwz r18, 0x0000(r18)
|
||||
bne- MPCall_60_0x3a8
|
||||
bne MPCall_60_0x3a8
|
||||
lwz r17, 0x0000(r16)
|
||||
b MPCall_60_0x3a8
|
||||
|
||||
@ -1174,7 +1174,7 @@ MPCall_60_0x34c
|
||||
lwz r19, -0x0008(r18)
|
||||
cmpw r19, r31
|
||||
lwz r17, 0x0004(r18)
|
||||
beq- MPCall_60_0x36c
|
||||
beq MPCall_60_0x36c
|
||||
lwz r17, 0x010c(r20)
|
||||
b MPCall_60_0x36c
|
||||
|
||||
@ -1230,7 +1230,7 @@ MPCall_61 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r31, r8
|
||||
|
||||
lwz r16, Task.Flags(r31)
|
||||
@ -1245,19 +1245,19 @@ MPCall_61 ; OUTSIDE REFERER
|
||||
MPCall_61_0x44
|
||||
lbz r16, 0x0018(r31)
|
||||
cmpwi r16, 0x00
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
lwz r17, 0x0134(r6)
|
||||
lwz r18, 0x013c(r6)
|
||||
lwz r19, 0x0144(r6)
|
||||
lwz r20, 0x014c(r6)
|
||||
cmpwi r4, 0x00
|
||||
cmpwi cr1, r4, 0x01
|
||||
beq- MPCall_61_0x84
|
||||
beq- cr1, MPCall_61_0x98
|
||||
beq MPCall_61_0x84
|
||||
beq cr1, MPCall_61_0x98
|
||||
cmpwi r4, 0x02
|
||||
cmpwi cr1, r4, 0x03
|
||||
beq- MPCall_61_0xe8
|
||||
beq- cr1, MPCall_61_0x170
|
||||
beq MPCall_61_0xe8
|
||||
beq cr1, MPCall_61_0x170
|
||||
b ReleaseAndReturnMPCallOOM
|
||||
|
||||
MPCall_61_0x84
|
||||
@ -1271,14 +1271,14 @@ MPCall_61_0x98
|
||||
lwz r16, 0x0088(r31)
|
||||
cmplwi r5, 0x100
|
||||
cmplwi cr1, r5, 0xf8
|
||||
beq- MPCall_61_0xd8
|
||||
beq MPCall_61_0xd8
|
||||
andi. r8, r5, 0x07
|
||||
addi r16, r16, 0x1fc
|
||||
|
||||
MPCall_61_0xb0
|
||||
add r16, r16, r5
|
||||
bgt+ cr1, ReleaseAndReturnMPCallOOM
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bgt cr1, ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
li r21, 0x10
|
||||
stwu r17, 0x0004(r16)
|
||||
stwu r18, 0x0004(r16)
|
||||
@ -1301,19 +1301,19 @@ MPCall_61_0xe8
|
||||
lwz r16, 0x0088(r31)
|
||||
rlwinm. r8, r7, 0, 12, 12
|
||||
lwz r16, 0x00d8(r16)
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
cmplwi cr3, r16, 0x00
|
||||
cmplwi r5, 0x200
|
||||
cmplwi cr2, r5, 0x210
|
||||
cmplwi cr1, r5, 0x1f0
|
||||
beql+ cr3, Local_Panic
|
||||
beq- MPCall_61_0x144
|
||||
beq- cr2, MPCall_61_0x160
|
||||
beql cr3, Local_Panic
|
||||
beq MPCall_61_0x144
|
||||
beq cr2, MPCall_61_0x160
|
||||
andi. r8, r5, 0x0f
|
||||
add r16, r16, r5
|
||||
subi r16, r16, 4
|
||||
bgt+ cr1, ReleaseAndReturnMPCallOOM
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bgt cr1, ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
li r21, 0x10
|
||||
stwu r17, 0x0004(r16)
|
||||
stwu r18, 0x0004(r16)
|
||||
@ -1347,18 +1347,18 @@ MPCall_61_0x170
|
||||
lwz r16, 0x0088(r31)
|
||||
cmplwi r5, 0x00
|
||||
cmplwi cr1, r5, 0x08
|
||||
beq- MPCall_61_0x1b0
|
||||
beq- cr1, MPCall_61_0x1c4
|
||||
beq MPCall_61_0x1b0
|
||||
beq cr1, MPCall_61_0x1c4
|
||||
cmplwi r5, 0x10
|
||||
beq- MPCall_61_0x1d8
|
||||
beq MPCall_61_0x1d8
|
||||
cmplwi r5, 0x1c
|
||||
cmplwi cr1, r5, 0x20
|
||||
beq- MPCall_61_0x1ec
|
||||
beq- cr1, MPCall_61_0x1fc
|
||||
beq MPCall_61_0x1ec
|
||||
beq cr1, MPCall_61_0x1fc
|
||||
cmplwi r5, 0x24
|
||||
cmplwi cr1, r5, 0x18
|
||||
beq- MPCall_61_0x218
|
||||
beq- cr1, MPCall_61_0x228
|
||||
beq MPCall_61_0x218
|
||||
beq cr1, MPCall_61_0x228
|
||||
b ReleaseAndReturnMPCallOOM
|
||||
|
||||
MPCall_61_0x1b0
|
||||
@ -1437,7 +1437,7 @@ MPCall_63 ; OUTSIDE REFERER
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
stw r4, 0x00ec(r8)
|
||||
|
||||
; r1 = kdp
|
||||
@ -1458,7 +1458,7 @@ MPCall_114 ; OUTSIDE REFERER
|
||||
cmpwi r9, Task.kIDClass
|
||||
|
||||
mr r31, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
mr r8, r4
|
||||
|
||||
; r8 = id
|
||||
@ -1466,17 +1466,17 @@ MPCall_114 ; OUTSIDE REFERER
|
||||
cmpwi r9, CPU.kIDClass
|
||||
|
||||
mr r30, r8
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
lwz r16, 0x0064(r31)
|
||||
lwz r17, 0x00e8(r31)
|
||||
rlwinm. r8, r16, 0, 30, 30
|
||||
cmplw cr1, r17, r5
|
||||
lwz r18, 0x0018(r30)
|
||||
bne+ ReleaseAndReturnMPCallOOM
|
||||
bne+ cr1, ReleaseAndReturnMPCallOOM
|
||||
bne ReleaseAndReturnMPCallOOM
|
||||
bne cr1, ReleaseAndReturnMPCallOOM
|
||||
rlwinm. r8, r18, 0, 28, 28
|
||||
cmplwi cr1, r17, 0x04
|
||||
beq+ ReleaseAndReturnMPCallOOM
|
||||
beq ReleaseAndReturnMPCallOOM
|
||||
lwz r16, 0x0064(r31)
|
||||
lhz r17, CPU.EWA + EWA.CPUIndex(r30)
|
||||
ori r16, r16, 0x40
|
||||
@ -1484,7 +1484,7 @@ MPCall_114 ; OUTSIDE REFERER
|
||||
sth r17, 0x001a(r31)
|
||||
rlwinm. r8, r16, 0, 26, 26
|
||||
mr r8, r31
|
||||
bne- MPCall_114_0x90
|
||||
bne MPCall_114_0x90
|
||||
bl SchTaskUnrdy
|
||||
bl SchRdyTaskNow
|
||||
|
||||
@ -1508,7 +1508,7 @@ KCSetTaskType
|
||||
mr r8, r3
|
||||
bl LookupID
|
||||
cmpwi r9, Task.kIDClass
|
||||
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
||||
bne ReleaseAndReturnMPCallInvalidIDErr
|
||||
|
||||
stw r4, Task.Name(r8)
|
||||
|
||||
|
@ -33,7 +33,7 @@ panic_common
|
||||
|
||||
mfspr r0, pvr
|
||||
rlwinm. r0, r0, 0, 0, 14
|
||||
bne- @no_mq
|
||||
bne @no_mq
|
||||
dialect POWER
|
||||
mfmq r0
|
||||
dialect PowerPC
|
||||
@ -58,7 +58,7 @@ panic_common
|
||||
|
||||
mfpvr r0
|
||||
rlwinm. r0, r0, 0, 0, 14
|
||||
bne- @not_601
|
||||
bne @not_601
|
||||
|
||||
@rtcloop
|
||||
dialect POWER
|
||||
@ -67,7 +67,7 @@ panic_common
|
||||
mfrtcu r3
|
||||
dialect PowerPC
|
||||
cmpw r0, r3
|
||||
bne+ @rtcloop
|
||||
bne @rtcloop
|
||||
|
||||
stw r0, KDP.ThudSavedTBU(r1)
|
||||
stw r2, KDP.ThudSavedTB(r1)
|
||||
@ -79,7 +79,7 @@ panic_common
|
||||
mftb r2
|
||||
mftbu r3
|
||||
cmpw r0, r3
|
||||
bne+ @tbloop
|
||||
bne @tbloop
|
||||
stw r0, KDP.ThudSavedTBU(r1)
|
||||
stw r2, KDP.ThudSavedTB(r1)
|
||||
@end_if_601
|
||||
@ -172,7 +172,7 @@ panic_common
|
||||
lwz r0, 0x08fc(r1)
|
||||
stfd f31, 0x08fc(r1)
|
||||
stw r0, 0x08fc(r1)
|
||||
bne- cr1, @0x260
|
||||
bne cr1, @0x260
|
||||
|
||||
if &TYPE('NKDebugShim') != 'UNDEFINED'
|
||||
b @go_here_to_use_saved_debug_command
|
||||
@ -190,7 +190,7 @@ panic_common
|
||||
|
||||
; gets kdp from print!!!
|
||||
cmpwi r8, -0x01
|
||||
bne- @0x260
|
||||
bne @0x260
|
||||
b @0x23c
|
||||
|
||||
@0x260
|
||||
@ -212,13 +212,13 @@ panic_common
|
||||
@input_busywait
|
||||
bl getchar
|
||||
cmpwi r8, -1
|
||||
beq+ @input_busywait
|
||||
beq @input_busywait
|
||||
|
||||
mr r16, r8
|
||||
cmpwi r16, 8 ; backspace
|
||||
cmpwi cr1, r17, 0
|
||||
bne- @not_backspace
|
||||
ble+ cr1, @input_busywait
|
||||
bne @not_backspace
|
||||
ble cr1, @input_busywait
|
||||
|
||||
|
||||
; Backspace, wipe position, then backspace again!
|
||||
@ -236,7 +236,7 @@ panic_common
|
||||
; If
|
||||
cmpwi cr2, r17, 95
|
||||
addi r18, r1, -0x960 ; prepare to copy the line!
|
||||
blt- cr2, @short_line
|
||||
blt cr2, @short_line
|
||||
_log '^b'
|
||||
b @input_busywait
|
||||
|
||||
@ -249,7 +249,7 @@ panic_common
|
||||
|
||||
cmpwi r16, 13
|
||||
stbx r16, r17, r18
|
||||
bne+ @0x30c
|
||||
bne @0x30c
|
||||
li r16, 0x00
|
||||
stbx r16, r17, r18
|
||||
_log '^n'
|
||||
@ -268,7 +268,7 @@ panic_common
|
||||
; r16 = char
|
||||
|
||||
cmpwi r16, 0x00
|
||||
beq+ @prompt
|
||||
beq @prompt
|
||||
bl @load_commands
|
||||
mflr r16
|
||||
bl @load_tbl
|
||||
@ -280,7 +280,7 @@ panic_common
|
||||
; cr0 = found
|
||||
; r17 = ptr to lut entry
|
||||
|
||||
bne- @bad_command
|
||||
bne @bad_command
|
||||
bl @load_tbl
|
||||
mflr r16
|
||||
lwz r17, 0x0000(r17)
|
||||
@ -339,9 +339,9 @@ panic_common
|
||||
; r16 = char
|
||||
|
||||
cmpwi r16, 0x00
|
||||
beq- @missing_physical_addr
|
||||
beq @missing_physical_addr
|
||||
bl major_0x187b0
|
||||
bne- @bad_length_1
|
||||
bne @bad_length_1
|
||||
mr r30, r16
|
||||
li r31, 0x10
|
||||
|
||||
@ -351,9 +351,9 @@ panic_common
|
||||
; r16 = char
|
||||
|
||||
cmpwi r16, 0x00
|
||||
beq- @0x5e0
|
||||
beq @0x5e0
|
||||
bl major_0x187b0
|
||||
bne- @bad_length_1
|
||||
bne @bad_length_1
|
||||
mr r31, r16
|
||||
|
||||
@0x5e0
|
||||
@ -381,9 +381,9 @@ panic_common
|
||||
; r16 = char
|
||||
|
||||
cmpwi r16, 0x00
|
||||
beq- @missing_logical_addr
|
||||
beq @missing_logical_addr
|
||||
bl major_0x187b0
|
||||
bne- @bad_length_2
|
||||
bne @bad_length_2
|
||||
mr r30, r16
|
||||
li r31, 0x10
|
||||
|
||||
@ -393,9 +393,9 @@ panic_common
|
||||
; r16 = char
|
||||
|
||||
cmpwi r16, 0x00
|
||||
beq- @0x6b0
|
||||
beq @0x6b0
|
||||
bl major_0x187b0
|
||||
bne- @bad_length_2
|
||||
bne @bad_length_2
|
||||
mr r31, r16
|
||||
|
||||
@0x6b0
|
||||
@ -422,9 +422,9 @@ panic_common
|
||||
|
||||
cmpwi r16, 0x00
|
||||
lwz r31, 0x0904(r1)
|
||||
beq- @0x748
|
||||
beq @0x748
|
||||
bl major_0x187b0
|
||||
bne- @bad_resume_address
|
||||
bne @bad_resume_address
|
||||
stw r16, 0x0904(r1)
|
||||
|
||||
@0x748
|
||||
@ -454,7 +454,7 @@ panic_common
|
||||
; r16 = char
|
||||
|
||||
cmpwi r16, 0x00
|
||||
beq- @missing_opaque_id
|
||||
beq @missing_opaque_id
|
||||
bl @load_id_args
|
||||
mflr r16
|
||||
li r17, 0x00
|
||||
@ -465,7 +465,7 @@ panic_common
|
||||
; cr0 = found
|
||||
; r17 = ptr to lut entry
|
||||
|
||||
bne- @0x884
|
||||
bne @0x884
|
||||
li r29, 0x00
|
||||
li r30, 0x00
|
||||
srwi r31, r17, 2
|
||||
@ -475,24 +475,24 @@ panic_common
|
||||
mr r9, r31
|
||||
bl GetNextIDOfClass
|
||||
mr. r30, r8
|
||||
beq- @0x868
|
||||
beq @0x868
|
||||
mr r8, r8
|
||||
bl Printw
|
||||
addi r29, r29, 0x01
|
||||
andi. r29, r29, 0x07
|
||||
bne+ @0x82c
|
||||
bne @0x82c
|
||||
_log '^n'
|
||||
b @0x82c
|
||||
|
||||
@0x868
|
||||
cmpwi r29, 0x00
|
||||
beq+ @prompt
|
||||
beq @prompt
|
||||
_log '^n'
|
||||
b @prompt
|
||||
|
||||
@0x884
|
||||
bl major_0x187b0
|
||||
bne- @bad_opaque_id
|
||||
bne @bad_opaque_id
|
||||
mr r30, r16
|
||||
mr r8, r16
|
||||
|
||||
@ -511,7 +511,7 @@ panic_common
|
||||
add r8, r17, r18
|
||||
bl PrintS
|
||||
cmpwi r9, 0x00
|
||||
beq- @0x978
|
||||
beq @0x978
|
||||
_log ' at '
|
||||
mr r8, r31
|
||||
bl Printw
|
||||
@ -684,12 +684,12 @@ panic_common
|
||||
lwz r17, 0x07b4(r1)
|
||||
rlwinm r17, r17, 16, 16, 27
|
||||
cmpwi r17, 0x6800
|
||||
bne- major_0x18040_0x100
|
||||
bne major_0x18040_0x100
|
||||
lwz r17, 0x071c(r1)
|
||||
srwi r17, r17, 16
|
||||
andi. r17, r17, 0xffa0
|
||||
cmpwi r17, 0x2a0
|
||||
bne- major_0x18040_0x64
|
||||
bne major_0x18040_0x64
|
||||
_log 'Caused by emulator termination request^n'
|
||||
b major_0x18040_0x9c
|
||||
|
||||
@ -702,8 +702,8 @@ major_0x18040_0x9c
|
||||
subf r17, r18, r17
|
||||
cmpwi r17, 0x100
|
||||
cmpwi cr1, r17, -0x100
|
||||
bgt- major_0x18040_0x100
|
||||
blt- cr1, major_0x18040_0x100
|
||||
bgt major_0x18040_0x100
|
||||
blt cr1, major_0x18040_0x100
|
||||
_log 'Looks like interrupt stack overflow by os or application^n'
|
||||
|
||||
major_0x18040_0x100
|
||||
@ -723,8 +723,8 @@ print_xpt_info ; OUTSIDE REFERER
|
||||
bl Printw
|
||||
subf. r21, r18, r20
|
||||
cmplw cr1, r20, r19
|
||||
blt- print_xpt_info_0x84
|
||||
bge- cr1, print_xpt_info_0x84
|
||||
blt print_xpt_info_0x84
|
||||
bge cr1, print_xpt_info_0x84
|
||||
_log '( NK+'
|
||||
mr r8, r21
|
||||
bl Printw
|
||||
@ -739,8 +739,8 @@ print_xpt_info_0x84
|
||||
mfspr r8, srr0
|
||||
subf. r21, r18, r8
|
||||
cmplw cr1, r8, r19
|
||||
blt- print_xpt_info_0xf8
|
||||
bge- cr1, print_xpt_info_0xf8
|
||||
blt print_xpt_info_0xf8
|
||||
bge cr1, print_xpt_info_0xf8
|
||||
_log '( NK+'
|
||||
mr r8, r21
|
||||
bl Printw
|
||||
@ -821,7 +821,7 @@ print_segment_registers_0x28
|
||||
mfsrin r8, r18
|
||||
addis r18, r18, 0x1000
|
||||
bl Printw
|
||||
bdnz+ print_segment_registers_0x28
|
||||
bdnz print_segment_registers_0x28
|
||||
_log '^n sr8-sr15 '
|
||||
li r17, 0x08
|
||||
mtctr r17
|
||||
@ -830,7 +830,7 @@ print_segment_registers_0x5c
|
||||
mfsrin r8, r18
|
||||
addis r18, r18, 0x1000
|
||||
bl Printw
|
||||
bdnz+ print_segment_registers_0x5c
|
||||
bdnz print_segment_registers_0x5c
|
||||
_log '^n'
|
||||
mtlr r16
|
||||
blr
|
||||
@ -847,7 +847,7 @@ print_gprs ; OUTSIDE REFERER
|
||||
print_gprs_0x28
|
||||
lwzu r8, 0x0004(r17)
|
||||
bl Printw
|
||||
bdnz+ print_gprs_0x28
|
||||
bdnz print_gprs_0x28
|
||||
_log '^n r8-r15 '
|
||||
li r18, 0x08
|
||||
mtctr r18
|
||||
@ -855,7 +855,7 @@ print_gprs_0x28
|
||||
print_gprs_0x58
|
||||
lwzu r8, 0x0004(r17)
|
||||
bl Printw
|
||||
bdnz+ print_gprs_0x58
|
||||
bdnz print_gprs_0x58
|
||||
_log '^n r16-r23 '
|
||||
li r18, 0x08
|
||||
mtctr r18
|
||||
@ -863,7 +863,7 @@ print_gprs_0x58
|
||||
print_gprs_0x88
|
||||
lwzu r8, 0x0004(r17)
|
||||
bl Printw
|
||||
bdnz+ print_gprs_0x88
|
||||
bdnz print_gprs_0x88
|
||||
_log '^n r24-r31 '
|
||||
li r18, 0x08
|
||||
mtctr r18
|
||||
@ -871,7 +871,7 @@ print_gprs_0x88
|
||||
print_gprs_0xb8
|
||||
lwzu r8, 0x0004(r17)
|
||||
bl Printw
|
||||
bdnz+ print_gprs_0xb8
|
||||
bdnz print_gprs_0xb8
|
||||
_log '^n'
|
||||
mtlr r16
|
||||
blr
|
||||
@ -902,24 +902,24 @@ print_memory_0x8
|
||||
print_memory_0x60
|
||||
lbzu r8, 0x0001(r16)
|
||||
cmpwi r8, 0xff
|
||||
beq- print_memory_0x74
|
||||
beq print_memory_0x74
|
||||
cmpwi r8, 0x20
|
||||
bgt- print_memory_0x78
|
||||
bgt print_memory_0x78
|
||||
|
||||
print_memory_0x74
|
||||
li r8, 0x20
|
||||
|
||||
print_memory_0x78
|
||||
bl Printc
|
||||
bdnz+ print_memory_0x60
|
||||
bdnz print_memory_0x60
|
||||
_log '*^n'
|
||||
addi r16, r16, 0x01
|
||||
addi r17, r17, -0x01
|
||||
bl getchar
|
||||
cmpwi r8, -0x01
|
||||
bne- print_memory_0xb0
|
||||
bne print_memory_0xb0
|
||||
cmpwi r17, 0x00
|
||||
bne+ print_memory_0x8
|
||||
bne print_memory_0x8
|
||||
|
||||
print_memory_0xb0
|
||||
_log '^n'
|
||||
@ -941,8 +941,8 @@ print_memory_logical_0x8
|
||||
print_memory_logical_0x24
|
||||
mr r27, r16
|
||||
bl PagingFunc1
|
||||
beq- print_memory_logical_0x5c
|
||||
blt- print_memory_logical_0x48
|
||||
beq print_memory_logical_0x5c
|
||||
blt print_memory_logical_0x48
|
||||
_log '..'
|
||||
b print_memory_logical_0x6c
|
||||
|
||||
@ -960,13 +960,13 @@ print_memory_logical_0x6c
|
||||
addi r16, r16, 0x01
|
||||
addi r19, r19, -0x01
|
||||
andi. r8, r19, 0x03
|
||||
bne- print_memory_logical_0x84
|
||||
bne print_memory_logical_0x84
|
||||
li r8, 0x20
|
||||
bl Printc
|
||||
|
||||
print_memory_logical_0x84
|
||||
cmpwi r19, 0x00
|
||||
bgt+ print_memory_logical_0x24
|
||||
bgt print_memory_logical_0x24
|
||||
_log ' *'
|
||||
li r8, 0x10
|
||||
addi r16, r16, -0x10
|
||||
@ -976,14 +976,14 @@ print_memory_logical_0xac
|
||||
mr r27, r16
|
||||
bl PagingFunc1
|
||||
li r8, 0x20
|
||||
bne- print_memory_logical_0xdc
|
||||
bne print_memory_logical_0xdc
|
||||
bl PagingFunc4
|
||||
rlwimi r31, r27, 0, 20, 31
|
||||
lbz r8, 0x0000(r31)
|
||||
cmpwi r8, 0xff
|
||||
beq- print_memory_logical_0xd8
|
||||
beq print_memory_logical_0xd8
|
||||
cmpwi r8, 0x20
|
||||
bgt- print_memory_logical_0xdc
|
||||
bgt print_memory_logical_0xdc
|
||||
|
||||
print_memory_logical_0xd8
|
||||
li r8, 0x20
|
||||
@ -991,14 +991,14 @@ print_memory_logical_0xd8
|
||||
print_memory_logical_0xdc
|
||||
bl Printc
|
||||
addi r16, r16, 0x01
|
||||
bdnz+ print_memory_logical_0xac
|
||||
bdnz print_memory_logical_0xac
|
||||
_log '*^n'
|
||||
addi r17, r17, -0x01
|
||||
bl getchar
|
||||
cmpwi r8, -0x01
|
||||
bne- print_memory_logical_0x114
|
||||
bne print_memory_logical_0x114
|
||||
cmpwi r17, 0x00
|
||||
bne+ print_memory_logical_0x8
|
||||
bne print_memory_logical_0x8
|
||||
|
||||
print_memory_logical_0x114
|
||||
_log '^n'
|
||||
@ -1023,15 +1023,15 @@ cmd_lookup_0xc
|
||||
lbzu r20, 0x0001(r15)
|
||||
cmpwi r21, 0xff
|
||||
cmpwi cr1, r21, 0x00
|
||||
beq- cmd_lookup_0x44
|
||||
beq- cr1, cmd_lookup_0x50
|
||||
beq cmd_lookup_0x44
|
||||
beq cr1, cmd_lookup_0x50
|
||||
cmpw r20, r21
|
||||
beq+ cmd_lookup_0xc
|
||||
beq cmd_lookup_0xc
|
||||
|
||||
cmd_lookup_0x2c
|
||||
lbzu r21, 0x0001(r16)
|
||||
cmpwi r21, 0x00
|
||||
bne+ cmd_lookup_0x2c
|
||||
bne cmd_lookup_0x2c
|
||||
|
||||
cmd_lookup_0x38
|
||||
addi r17, r17, 0x04
|
||||
@ -1045,9 +1045,9 @@ cmd_lookup_0x44
|
||||
|
||||
cmd_lookup_0x50
|
||||
cmpwi r20, 0x20
|
||||
beqlr-
|
||||
beqlr
|
||||
cmpwi r20, 0x00
|
||||
beqlr-
|
||||
beqlr
|
||||
b cmd_lookup_0x38
|
||||
|
||||
|
||||
@ -1063,7 +1063,7 @@ next_cmd_word ; OUTSIDE REFERER
|
||||
next_cmd_word_0x4
|
||||
lbzu r16, 0x0001(r15)
|
||||
cmpwi r16, 0x20
|
||||
beq+ next_cmd_word_0x4
|
||||
beq next_cmd_word_0x4
|
||||
blr
|
||||
|
||||
|
||||
@ -1076,8 +1076,8 @@ major_0x187b0_0x8
|
||||
lbzu r17, 0x0001(r15)
|
||||
cmplwi r17, 0x30
|
||||
cmplwi cr1, r17, 0x39
|
||||
blt- major_0x187b0_0x28
|
||||
bgt- cr1, major_0x187b0_0x28
|
||||
blt major_0x187b0_0x28
|
||||
bgt cr1, major_0x187b0_0x28
|
||||
slwi r16, r16, 4
|
||||
rlwimi r16, r17, 0, 28, 31
|
||||
b major_0x187b0_0x8
|
||||
@ -1085,8 +1085,8 @@ major_0x187b0_0x8
|
||||
major_0x187b0_0x28
|
||||
cmplwi r17, 0x61
|
||||
cmplwi cr1, r17, 0x66
|
||||
blt- major_0x187b0_0x48
|
||||
bgt- cr1, major_0x187b0_0x48
|
||||
blt major_0x187b0_0x48
|
||||
bgt cr1, major_0x187b0_0x48
|
||||
addi r17, r17, -0x57
|
||||
slwi r16, r16, 4
|
||||
rlwimi r16, r17, 0, 28, 31
|
||||
@ -1095,8 +1095,8 @@ major_0x187b0_0x28
|
||||
major_0x187b0_0x48
|
||||
cmplwi r17, 0x41
|
||||
cmplwi cr1, r17, 0x46
|
||||
blt- major_0x187b0_0x68
|
||||
bgt- cr1, major_0x187b0_0x68
|
||||
blt major_0x187b0_0x68
|
||||
bgt cr1, major_0x187b0_0x68
|
||||
addi r17, r17, -0x37
|
||||
slwi r16, r16, 4
|
||||
rlwimi r16, r17, 0, 28, 31
|
||||
@ -1104,7 +1104,7 @@ major_0x187b0_0x48
|
||||
|
||||
major_0x187b0_0x68
|
||||
cmpwi r17, 0x00
|
||||
beqlr-
|
||||
beqlr
|
||||
cmpwi r17, 0x20
|
||||
blr
|
||||
|
||||
@ -1199,7 +1199,7 @@ prereturn ; OUTSIDE REFERER
|
||||
mfpvr r0
|
||||
rlwinm. r0, r0, 0, 0, 14
|
||||
|
||||
bne- @not_601
|
||||
bne @not_601
|
||||
lwz r0, 0x0784(r1)
|
||||
mtspr mq, r0
|
||||
@not_601
|
||||
|
@ -23,7 +23,7 @@ InitTMRQs ; OUTSIDE REFERER
|
||||
stw r8, 0x003c(r9)
|
||||
mfspr r8, pvr
|
||||
rlwinm. r8, r8, 0, 0, 14
|
||||
beq- InitTMRQs_0x7c
|
||||
beq InitTMRQs_0x7c
|
||||
mflr r30
|
||||
li r8, 0x40
|
||||
|
||||
@ -33,7 +33,7 @@ InitTMRQs ; OUTSIDE REFERER
|
||||
; r8 = ptr
|
||||
|
||||
mr. r31, r8
|
||||
beq+ Local_Panic
|
||||
beq Local_Panic
|
||||
stw r31, -0x0434(r1)
|
||||
li r9, 0x07
|
||||
stb r9, 0x0014(r31)
|
||||
@ -44,7 +44,7 @@ InitTMRQs ; OUTSIDE REFERER
|
||||
InitTMRQs_0x7c
|
||||
mfspr r8, pvr
|
||||
rlwinm. r8, r8, 0, 0, 14
|
||||
beq- InitTMRQs_0xb4
|
||||
beq InitTMRQs_0xb4
|
||||
mflr r30
|
||||
li r8, 0x40
|
||||
|
||||
@ -54,7 +54,7 @@ InitTMRQs_0x7c
|
||||
; r8 = ptr
|
||||
|
||||
mr. r31, r8
|
||||
beq+ Local_Panic
|
||||
beq Local_Panic
|
||||
stw r31, -0x0364(r1)
|
||||
li r9, 0x08
|
||||
stb r9, 0x0014(r31)
|
||||
@ -70,11 +70,11 @@ InitTMRQs_0xb4
|
||||
lwz r30, KDP.PA_ConfigInfo(r1)
|
||||
lhz r31, NKConfigurationInfo.Debug(r30)
|
||||
cmplwi r31, NKConfigurationInfo.DebugThreshold
|
||||
blt- @nodebug
|
||||
blt @nodebug
|
||||
|
||||
lwz r31, NKConfigurationInfo.DebugFlags(r30)
|
||||
rlwinm. r8, r31, 0, NKConfigurationInfo.NanodbgrFlagBit, NKConfigurationInfo.NanodbgrFlagBit
|
||||
beq- @nodebug
|
||||
beq @nodebug
|
||||
|
||||
lwz r8, KDP.NanoKernelInfo + NKNanoKernelInfo.ConfigFlags(r1)
|
||||
_bset r8, r8, NKNanoKernelInfo.NanodbgrFlagBit
|
||||
@ -85,7 +85,7 @@ InitTMRQs_0xb4
|
||||
li r8, Timer.Size
|
||||
bl PoolAllocClear ; one of those weird queue structures
|
||||
mr. r31, r8
|
||||
beq+ Local_Panic
|
||||
beq Local_Panic
|
||||
|
||||
li r9, Timer.kKind6
|
||||
stb r9, Timer.Kind(r31)
|
||||
@ -128,7 +128,7 @@ TimerDispatch ; OUTSIDE REFERER
|
||||
TimerDispatch_0x30 ; OUTSIDE REFERER
|
||||
mfspr r8, pvr
|
||||
rlwinm. r8, r8, 0, 0, 14
|
||||
beq- @is_601
|
||||
beq @is_601
|
||||
|
||||
;not 601
|
||||
@gettime_loop_non_601
|
||||
@ -171,7 +171,7 @@ TimerDispatch_0x30 ; OUTSIDE REFERER
|
||||
addi r30, r18, EWA.Base
|
||||
cmpwi r19, 1
|
||||
lwz r16, EWA.GlobalTime - EWA.Base(r30)
|
||||
bne- timer_earlier_than_sometime
|
||||
bne timer_earlier_than_sometime
|
||||
lwz r17, EWA.GlobalTime + 4 - EWA.Base(r30)
|
||||
|
||||
_b_if_time_gt r16, r8, timer_earlier_than_sometime
|
||||
@ -196,7 +196,7 @@ timer_earlier_than_sometime
|
||||
llabel r20, TimerTable
|
||||
li r21, 0x00
|
||||
add r20, r20, r19
|
||||
bgel+ Local_Panic
|
||||
bgel Local_Panic
|
||||
stb r21, 0x0017(r30)
|
||||
lwz r20, 0x0000(r20)
|
||||
add r20, r20, r19
|
||||
@ -210,13 +210,13 @@ TimerDispatch_0x144
|
||||
lbz r19, 0x0016(r30)
|
||||
cmpwi r19, 0x01
|
||||
lwz r8, 0x0000(r30)
|
||||
beq+ TimerDispatch_0x30
|
||||
beq TimerDispatch_0x30
|
||||
bl DeleteID
|
||||
mr r8, r30
|
||||
bl PoolFree
|
||||
lwz r8, 0x001c(r30)
|
||||
cmpwi r8, 0x00
|
||||
beq- TimerDispatch_0x180
|
||||
beq TimerDispatch_0x180
|
||||
bl PoolFree
|
||||
li r8, 0x00
|
||||
stw r8, 0x001c(r30)
|
||||
@ -288,7 +288,7 @@ SetTimesliceFromCurTimeAndTripTime
|
||||
|
||||
; r16/r17 = soonest(last timer, global PSA time if available)
|
||||
|
||||
bne- global_time_invalid
|
||||
bne global_time_invalid
|
||||
lwz r18, EWA.GlobalTime(r19)
|
||||
lwz r19, EWA.GlobalTime+4(r19)
|
||||
|
||||
@ -304,10 +304,10 @@ global_time_invalid
|
||||
subfe. r16, r8, r16
|
||||
mtxer r20
|
||||
|
||||
blt- @that_time_has_passed ; hi bit of r16 = 1
|
||||
bne- @that_time_is_in_future ;
|
||||
blt @that_time_has_passed ; hi bit of r16 = 1
|
||||
bne @that_time_is_in_future ;
|
||||
cmplw r16, r21 ; typo? should be r17???
|
||||
bgt- @that_time_is_in_future ; will never be taken...
|
||||
bgt @that_time_is_in_future ; will never be taken...
|
||||
|
||||
; When the times are roughly equal?
|
||||
mtspr dec, r17
|
||||
@ -344,7 +344,7 @@ TimerFire1 ; OUTSIDE REFERER
|
||||
lwz r19, 0x0088(r8)
|
||||
cmpwi r17, 0x00
|
||||
stw r16, 0x011c(r19)
|
||||
bne- TimerFire1_0x64
|
||||
bne TimerFire1_0x64
|
||||
addi r16, r8, 0x08
|
||||
RemoveFromList r16, scratch1=r17, scratch2=r19
|
||||
li r17, 0x01
|
||||
@ -363,7 +363,7 @@ TimerFire1_0x64
|
||||
; TimerFire2
|
||||
|
||||
TimerFire2 ; OUTSIDE REFERER
|
||||
bne+ TimerDispatch_0x144
|
||||
bne TimerDispatch_0x144
|
||||
bl Local_Panic
|
||||
lwz r18, 0x0018(r30)
|
||||
stw r16, 0x0080(r18)
|
||||
@ -373,7 +373,7 @@ TimerFire2 ; OUTSIDE REFERER
|
||||
lbz r17, 0x0018(r8)
|
||||
lwz r18, 0x0088(r8)
|
||||
cmpwi r17, 0x00
|
||||
bne- TimerFire3_0x8
|
||||
bne TimerFire3_0x8
|
||||
stw r16, 0x011c(r18)
|
||||
lwz r8, 0x0008(r8)
|
||||
lwz r8, 0x0000(r8)
|
||||
@ -383,12 +383,12 @@ TimerFire2 ; OUTSIDE REFERER
|
||||
cmpwi r9, Queue.kIDClass
|
||||
|
||||
cmpwi cr1, r9, 0x05
|
||||
beq- TimerFire2_0x8c
|
||||
beq- cr1, TimerFire2_0x7c
|
||||
beq TimerFire2_0x8c
|
||||
beq cr1, TimerFire2_0x7c
|
||||
cmpwi r9, 0x09
|
||||
cmpwi cr1, r9, 0x06
|
||||
beq- TimerFire2_0x6c
|
||||
bne+ cr1, Local_Panic
|
||||
beq TimerFire2_0x6c
|
||||
bne cr1, Local_Panic
|
||||
lwz r16, 0x0020(r8)
|
||||
addi r16, r16, -0x01
|
||||
stw r16, 0x0020(r8)
|
||||
@ -441,21 +441,21 @@ TimerFire3_0x8 ; OUTSIDE REFERER
|
||||
cmpwi r9, Queue.kIDClass
|
||||
|
||||
mr r31, r8
|
||||
bne- major_0x13258_0x68
|
||||
bne major_0x13258_0x68
|
||||
lwz r16, 0x0024(r31)
|
||||
lwz r8, 0x001c(r30)
|
||||
cmpwi r16, 0x00
|
||||
cmpwi cr1, r8, 0x00
|
||||
beq- major_0x13258_0x40
|
||||
beq major_0x13258_0x40
|
||||
lwz r17, 0x0028(r31)
|
||||
mr. r8, r17
|
||||
lwz r17, 0x0008(r17)
|
||||
beq- major_0x13258_0x68
|
||||
beq major_0x13258_0x68
|
||||
stw r17, 0x0028(r31)
|
||||
b major_0x13258_0x4c
|
||||
|
||||
major_0x13258_0x40
|
||||
beq- cr1, major_0x13258_0x68
|
||||
beq cr1, major_0x13258_0x68
|
||||
li r16, 0x00
|
||||
stw r16, 0x001c(r30)
|
||||
|
||||
@ -476,7 +476,7 @@ major_0x13258_0x68
|
||||
cmpwi r9, Semaphore.kIDClass
|
||||
|
||||
mr r31, r8
|
||||
bne- major_0x13258_0x80
|
||||
bne major_0x13258_0x80
|
||||
bl SignalSemaphore
|
||||
|
||||
major_0x13258_0x80
|
||||
@ -493,7 +493,7 @@ major_0x13258_0x80
|
||||
; TimerFire4
|
||||
|
||||
TimerFire4 ; OUTSIDE REFERER
|
||||
bne- TimerFire4_0xc
|
||||
bne TimerFire4_0xc
|
||||
lwz r8, 0x0030(r30)
|
||||
bl SetEvent
|
||||
|
||||
@ -507,12 +507,12 @@ TimerFire4_0x10 ; OUTSIDE REFERER
|
||||
bl SchTaskUnrdy
|
||||
lbz r17, 0x0019(r29)
|
||||
cmpwi r17, 0x02
|
||||
bge- TimerFire4_0x64
|
||||
bge TimerFire4_0x64
|
||||
mr r8, r29
|
||||
lwz r16, 0x0038(r30)
|
||||
lwz r17, 0x003c(r30)
|
||||
bl clear_cr0_lt
|
||||
bge- TimerFire4_0x50
|
||||
bge TimerFire4_0x50
|
||||
mr r8, r29
|
||||
bl SchRdyTaskNow
|
||||
bl CalculateTimeslice
|
||||
@ -624,7 +624,7 @@ TimerFire7 ; OUTSIDE REFERER
|
||||
lwz r18, -0x0438(r1)
|
||||
lwz r19, 0x0f88(r1)
|
||||
subf. r19, r18, r19
|
||||
ble- TimerFire8_0x1c
|
||||
ble TimerFire8_0x1c
|
||||
srwi r19, r19, 11
|
||||
mfxer r20
|
||||
|
||||
@ -669,7 +669,7 @@ TimerFire8_0x1c ; OUTSIDE REFERER
|
||||
mfxer r20
|
||||
cmpwi cr1, r19, 0x00
|
||||
srawi r8, r19, 31
|
||||
beq- cr1, TimerFire6_0x4
|
||||
beq cr1, TimerFire6_0x4
|
||||
|
||||
major_0x13544_0x14
|
||||
mftbu r16
|
||||
@ -683,7 +683,7 @@ major_0x13544_0x14
|
||||
adde r18, r16, r8
|
||||
mttbu r18
|
||||
mttb r19
|
||||
bgt- cr1, major_0x13544_0x64
|
||||
bgt cr1, major_0x13544_0x64
|
||||
|
||||
major_0x13544_0x44
|
||||
mftbu r18
|
||||
@ -693,7 +693,7 @@ major_0x13544_0x44
|
||||
bne- major_0x13544_0x44
|
||||
subfc r19, r17, r19
|
||||
subfe. r18, r16, r18
|
||||
blt+ major_0x13544_0x44
|
||||
blt major_0x13544_0x44
|
||||
|
||||
major_0x13544_0x64
|
||||
lwz r18, -0x0368(r1)
|
||||
@ -710,7 +710,7 @@ TimerFire6 ; OUTSIDE REFERER
|
||||
|
||||
TimerFire6_0x4 ; OUTSIDE REFERER
|
||||
mtxer r20
|
||||
beq+ cr1, TimerDispatch_0x144
|
||||
beq cr1, TimerDispatch_0x144
|
||||
mr r8, r30
|
||||
bl EnqueueTimer
|
||||
b TimerDispatch_0x144
|
||||
@ -735,7 +735,7 @@ TimerFire6_0x4 ; OUTSIDE REFERER
|
||||
bl EnqueueTimer
|
||||
bl getchar
|
||||
cmpwi r8, -0x01
|
||||
beq+ TimerDispatch_0x144
|
||||
beq TimerDispatch_0x144
|
||||
bl panic_non_interactive
|
||||
b TimerDispatch_0x144
|
||||
|
||||
@ -759,9 +759,9 @@ EnqueueTimer ; OUTSIDE REFERER
|
||||
; First try to insert at head of global TMRQ
|
||||
cmpw r16, r18
|
||||
cmplw cr1, r17, r19
|
||||
bgt- @insert_further_ahead
|
||||
blt- @insert_at_tail
|
||||
bge- cr1, @insert_further_ahead
|
||||
bgt @insert_further_ahead
|
||||
blt @insert_at_tail
|
||||
bge cr1, @insert_further_ahead
|
||||
|
||||
@insert_at_tail
|
||||
addi r20, r1, PSA.TimerQueue + TimerQueueStruct.LLL
|
||||
@ -790,9 +790,9 @@ EnqueueTimer ; OUTSIDE REFERER
|
||||
lwz r19, Timer.Time+4(r20)
|
||||
cmpw r16, r18
|
||||
cmplw cr1, r17, r19
|
||||
bgt- @insert_after_this_one
|
||||
blt- @next
|
||||
bge- cr1, @insert_after_this_one
|
||||
bgt @insert_after_this_one
|
||||
blt @next
|
||||
bge cr1, @insert_after_this_one
|
||||
|
||||
@next
|
||||
lwz r20, LLL.Prev(r20)
|
||||
@ -826,7 +826,7 @@ DequeueTimer
|
||||
lwz r16, Timer.QueueLLL + LLL.FreeForm(r8)
|
||||
cmpwi r16, 0
|
||||
lwz r18, PSA.TimerQueue + TimerQueueStruct.LLL + LLL.Next(r1)
|
||||
beq+ Local_Panic
|
||||
beq Local_Panic
|
||||
|
||||
RemoveFromList r8, scratch1=r16, scratch2=r17
|
||||
|
||||
@ -834,7 +834,7 @@ DequeueTimer
|
||||
cmpw r18, r8
|
||||
stb r16, Timer.Byte3(r8)
|
||||
|
||||
beq+ SetTimeslice
|
||||
beq SetTimeslice
|
||||
|
||||
blr
|
||||
|
||||
@ -880,7 +880,7 @@ GetTime
|
||||
|
||||
mfpvr r8
|
||||
rlwinm. r8, r8, 0, 0, 14
|
||||
beq- @is_601
|
||||
beq @is_601
|
||||
|
||||
@retry_timebase:
|
||||
mftbu r8
|
||||
|
@ -2141,14 +2141,14 @@ ProbePerfMonitor ; OUTSIDE REFERER
|
||||
TestSPR r19, r18, r19, SIA
|
||||
or. r17, r17, r19
|
||||
|
||||
bne- @dont_set_bit_31
|
||||
bne @dont_set_bit_31
|
||||
_bset r23, r23, 31
|
||||
@dont_set_bit_31
|
||||
|
||||
; ONLY test for bits 28-30 if bit 31 was just set...
|
||||
|
||||
mr. r23, r23
|
||||
beq- @stop_testing_perf_monitor
|
||||
beq @stop_testing_perf_monitor
|
||||
|
||||
; SET BIT 30 if all the 750 perf monitor registers work
|
||||
|
||||
@ -2158,7 +2158,7 @@ ProbePerfMonitor ; OUTSIDE REFERER
|
||||
TestSPR r19, r18, r19, PMC4
|
||||
or. r17, r17, r19
|
||||
|
||||
bne- @dont_set_bit_30
|
||||
bne @dont_set_bit_30
|
||||
_bset r23, r23, 30
|
||||
@dont_set_bit_30
|
||||
|
||||
@ -2167,7 +2167,7 @@ ProbePerfMonitor ; OUTSIDE REFERER
|
||||
li r18, 0xaaa0
|
||||
TestSPR. r17, r18, r19, SDA
|
||||
|
||||
beq- @dont_set_bit_29
|
||||
beq @dont_set_bit_29
|
||||
_bset r23, r23, 29
|
||||
@dont_set_bit_29
|
||||
|
||||
@ -2181,7 +2181,7 @@ ProbePerfMonitor ; OUTSIDE REFERER
|
||||
|
||||
or. r17, r17, r19
|
||||
|
||||
bne- @dont_set_bit_28
|
||||
bne @dont_set_bit_28
|
||||
_bset r23, r23, 28
|
||||
@dont_set_bit_28
|
||||
|
||||
@ -2204,7 +2204,7 @@ ProbePerfMonitor ; OUTSIDE REFERER
|
||||
|
||||
|
||||
; SET BIT 18 if any perf monitor features present
|
||||
beq- * + 8
|
||||
beq * + 8
|
||||
_bset r23, r23, 18
|
||||
|
||||
|
||||
@ -2225,7 +2225,7 @@ ProbePerfMonitor ; OUTSIDE REFERER
|
||||
cmpw cr1, r20, r19
|
||||
addi r23, r23, 0x02
|
||||
xor. r24, r24, r24
|
||||
bge- cr1, ProbePerfMonitor_0x180
|
||||
bge cr1, ProbePerfMonitor_0x180
|
||||
addi r23, r23, -0x01
|
||||
|
||||
ProbePerfMonitor_0x160
|
||||
@ -2235,15 +2235,15 @@ ProbePerfMonitor_0x160
|
||||
cmplw cr2, r20, r19
|
||||
rlwinm. r24, r24, 1, 0, 30
|
||||
slwi r21, r21, 1
|
||||
blt- cr1, ProbePerfMonitor_0x180
|
||||
blt- cr2, ProbePerfMonitor_0x188
|
||||
blt cr1, ProbePerfMonitor_0x180
|
||||
blt cr2, ProbePerfMonitor_0x188
|
||||
|
||||
ProbePerfMonitor_0x180
|
||||
subf r20, r19, r20
|
||||
ori r24, r24, 0x01
|
||||
|
||||
ProbePerfMonitor_0x188
|
||||
bge+ ProbePerfMonitor_0x160
|
||||
bge ProbePerfMonitor_0x160
|
||||
stw r24, 0x05bc(r1)
|
||||
stb r23, 0x05b8(r1)
|
||||
li r21, 0x20
|
||||
@ -2309,11 +2309,11 @@ FDPEmulateInstruction
|
||||
mfsprg r1, 0
|
||||
rlwinm r17, r27, 13, 25, 29
|
||||
rlwinm r18, r27, 18, 25, 29
|
||||
beq- cr6, FDP_1214_0x2b4
|
||||
beq cr6, FDP_1214_0x2b4
|
||||
mtcrf 0x3f, r21
|
||||
rlwinm r19, r27, 23, 25, 29
|
||||
beq- FDP_1bd0
|
||||
bne- cr1, FDP_1324
|
||||
beq FDP_1bd0
|
||||
bne cr1, FDP_1324
|
||||
rlwinm r21, r27, 2, 24, 28
|
||||
add r21, r21, r25
|
||||
lwz r20, 0x1374(r21)
|
||||
@ -2322,25 +2322,25 @@ FDPEmulateInstruction
|
||||
rotlw. r20, r20, r23
|
||||
add r21, r21, r25
|
||||
mtlr r21
|
||||
bltlr-
|
||||
bltlr
|
||||
|
||||
FDP_1324
|
||||
ble- cr1, FDP_1338
|
||||
ble cr1, FDP_1338
|
||||
lis r20, 0x5556
|
||||
ori r20, r20, 0x5500
|
||||
rotlw. r20, r20, r23
|
||||
blt- FDP_1c18
|
||||
blt FDP_1c18
|
||||
|
||||
FDP_1338
|
||||
mtcrf 0x70, r11
|
||||
li r8, 0x04
|
||||
ble- cr3, FDP_1354
|
||||
ble cr3, FDP_1354
|
||||
|
||||
|
||||
FDP_1344
|
||||
mtcrf 0x0f, r11
|
||||
li r8, 0x04
|
||||
ble- cr4, FDP_1354
|
||||
ble cr4, FDP_1354
|
||||
li r8, 0x05
|
||||
|
||||
FDP_1354
|
||||
@ -2424,12 +2424,12 @@ FDP_14b0
|
||||
|
||||
FDP_1214_0x2b4
|
||||
mtcrf 0x3f, r21
|
||||
bns+ cr2, FDP_1338
|
||||
bns cr2, FDP_1338
|
||||
lwzx r18, r1, r18
|
||||
extsh r19, r27
|
||||
cmpw cr1, r19, r18
|
||||
subf r21, r21, r21
|
||||
blt+ cr1, FDP_1484
|
||||
blt cr1, FDP_1484
|
||||
subf r21, r18, r19
|
||||
b FDP_1484
|
||||
|
||||
@ -3061,7 +3061,7 @@ FDP_1b50
|
||||
|
||||
|
||||
FDP_1b54
|
||||
bns+ cr7, FDP_0da0
|
||||
bns cr7, FDP_0da0
|
||||
mfcr r23
|
||||
rlwimi r13, r23, 0, 0, 3
|
||||
b FDP_0da0
|
||||
@ -3104,7 +3104,7 @@ FDP_1bbc
|
||||
|
||||
|
||||
FDP_1bd0
|
||||
bns+ cr2, FDP_1338
|
||||
bns cr2, FDP_1338
|
||||
lwzx r17, r1, r17
|
||||
rlwinm r20, r27, 26, 27, 31
|
||||
lwzx r19, r1, r19
|
||||
@ -3128,7 +3128,7 @@ FDP_1c08
|
||||
|
||||
|
||||
FDP_1c18
|
||||
ble+ cr3, FDP_1338
|
||||
ble cr3, FDP_1338
|
||||
b major_0x03324
|
||||
bgt cr6, FDP_1C18
|
||||
bge cr4, FDP_1338
|
||||
@ -3267,9 +3267,9 @@ FDP_1c40 ; OUTSIDE REFERER
|
||||
rlwinm r17, r27, 15, 23, 27
|
||||
rlwinm r18, r27, 20, 23, 27
|
||||
rlwinm r19, r27, 25, 23, 27
|
||||
blt- FDP_1c40_0x398
|
||||
beq- cr2, FDP_1c40_0x43c
|
||||
bgt- cr1, FDP_1c40_0x278
|
||||
blt FDP_1c40_0x398
|
||||
beq cr2, FDP_1c40_0x43c
|
||||
bgt cr1, FDP_1c40_0x278
|
||||
lvx v3, r24, r19
|
||||
vspltisw v31, 0x00
|
||||
vspltisw v29, 0x01
|
||||
@ -3384,7 +3384,7 @@ FDP_1c40_0x278
|
||||
mfsprg r1, 0
|
||||
mtspr srr0, r10
|
||||
mtspr srr1, r11
|
||||
bne+ FDP_0E30
|
||||
bne FDP_0E30
|
||||
mtlr r12
|
||||
b FDP_0DC8
|
||||
|
||||
@ -3395,7 +3395,7 @@ FDP_1c40_0x398
|
||||
mtmsr r15
|
||||
isync
|
||||
rlwinm. r8, r11, 0, 18, 18
|
||||
beq- FDP_1c40_0x3cc
|
||||
beq FDP_1c40_0x3cc
|
||||
stfd f0, 0x0200(r6)
|
||||
mffs f0
|
||||
stfd f1, 0x0208(r6)
|
||||
@ -3415,22 +3415,22 @@ FDP_1c40_0x3e0
|
||||
addic. r8, r8, -0x01
|
||||
lfsx f1, r24, r19
|
||||
lfsx f2, r24, r22
|
||||
bne- cr6, FDP_1c40_0x408
|
||||
bne cr6, FDP_1c40_0x408
|
||||
fnmsubs f3, f0, f2, f1
|
||||
stfsx f3, r24, r17
|
||||
addi r24, r24, 0x04
|
||||
bge+ FDP_1c40_0x3e0
|
||||
bge FDP_1c40_0x3e0
|
||||
b FDP_1c40_0x418
|
||||
|
||||
FDP_1c40_0x408
|
||||
fmadds f3, f0, f2, f1
|
||||
stfsx f3, r24, r17
|
||||
addi r24, r24, 0x04
|
||||
bge+ FDP_1c40_0x3e0
|
||||
bge FDP_1c40_0x3e0
|
||||
|
||||
FDP_1c40_0x418
|
||||
addi r24, r24, -0x10
|
||||
beq+ cr7, FDP_1c40_0x278
|
||||
beq cr7, FDP_1c40_0x278
|
||||
lfd f0, 0x00e0(r6)
|
||||
mtfsf 0xff, f0
|
||||
lfd f0, 0x0200(r6)
|
||||
@ -3445,7 +3445,7 @@ FDP_1c40_0x43c
|
||||
mtmsr r15
|
||||
isync
|
||||
rlwinm. r8, r11, 0, 18, 18
|
||||
beq- FDP_1c40_0x468
|
||||
beq FDP_1c40_0x468
|
||||
stfd f0, 0x0200(r6)
|
||||
mffs f0
|
||||
stfd f1, 0x0208(r6)
|
||||
@ -3463,22 +3463,22 @@ FDP_1c40_0x47c
|
||||
lfsx f0, r24, r18
|
||||
addic. r8, r8, -0x01
|
||||
lfsx f1, r24, r19
|
||||
bne- cr6, FDP_1c40_0x4a0
|
||||
bne cr6, FDP_1c40_0x4a0
|
||||
fsubs f3, f0, f1
|
||||
stfsx f3, r24, r17
|
||||
addi r24, r24, 0x04
|
||||
bge+ FDP_1c40_0x47c
|
||||
bge FDP_1c40_0x47c
|
||||
b FDP_1c40_0x4b0
|
||||
|
||||
FDP_1c40_0x4a0
|
||||
fadds f3, f0, f1
|
||||
stfsx f3, r24, r17
|
||||
addi r24, r24, 0x04
|
||||
bge+ FDP_1c40_0x47c
|
||||
bge FDP_1c40_0x47c
|
||||
|
||||
FDP_1c40_0x4b0
|
||||
addi r24, r24, -0x10
|
||||
beq+ cr7, FDP_1c40_0x278
|
||||
beq cr7, FDP_1c40_0x278
|
||||
lfd f0, 0x00e0(r6)
|
||||
mtfsf 0xff, f0
|
||||
lfd f0, 0x0200(r6)
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user