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:
Elliot Nunn 2018-04-15 15:05:02 +08:00
parent e2e519b863
commit 4c0e5221f1
25 changed files with 2063 additions and 2063 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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?

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -49,4 +49,4 @@ OverrideProcessorInfo
subic. r9, r9, 4
lwzx r12, r11, r9
stwx r12, r10, r9
bgt+ @loop
bgt @loop

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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