2527 lines
42 KiB
ArmAsm
2527 lines
42 KiB
ArmAsm
DeclareMPCall 15, MPCall_15
|
|
|
|
MPCall_15 ; OUTSIDE REFERER
|
|
li r8, 0x34
|
|
bl PoolAlloc_with_crset
|
|
mr. r31, r8
|
|
beq+ major_0x0af60_0x20
|
|
lis r16, 'MS'
|
|
stw r8, 0x0008(r8)
|
|
ori r16, r16, 'GQ'
|
|
stw r8, 0x000c(r8)
|
|
stw r16, 0x0004(r8)
|
|
addi r9, r8, 0x10
|
|
lis r16, 'NO'
|
|
stw r9, 0x0008(r9)
|
|
ori r16, r16, 'TQ'
|
|
stw r9, 0x000c(r9)
|
|
stw r16, 0x0004(r9)
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
li r9, 0x04
|
|
|
|
; r1 = kdp
|
|
; r9 = kind
|
|
bl MakeID
|
|
cmpwi r8, 0x00
|
|
bne+ MPCall_15_0x70
|
|
mr r8, r31
|
|
bl PoolFree
|
|
b major_0x0af60
|
|
|
|
MPCall_15_0x70
|
|
mfsprg r30, 0
|
|
lwz r30, -0x0008(r30)
|
|
stw r8, 0x0000(r31)
|
|
lwz r17, 0x0060(r30)
|
|
stw r17, 0x0020(r31)
|
|
mr r4, r8
|
|
li r17, 0x00
|
|
stw r17, 0x0024(r31)
|
|
stw r17, 0x0028(r31)
|
|
stw r17, 0x002c(r31)
|
|
stw r17, 0x0030(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 16, MPCall_16
|
|
|
|
MPCall_16 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Queue.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
|
|
MPCall_16_0x2c
|
|
addi r30, r31, 0x10
|
|
lwz r8, 0x0018(r31)
|
|
cmpw r8, r30
|
|
beq- MPCall_16_0x60
|
|
lwz r16, 0x0008(r8)
|
|
lwz r17, 0x000c(r8)
|
|
stw r16, 0x0008(r17)
|
|
stw r17, 0x000c(r16)
|
|
li r16, 0x00
|
|
stw r16, 0x0008(r8)
|
|
stw r16, 0x000c(r8)
|
|
bl PoolFree
|
|
b MPCall_16_0x2c
|
|
|
|
MPCall_16_0x60
|
|
lwz r30, 0x0028(r31)
|
|
|
|
MPCall_16_0x64
|
|
mr. r8, r30
|
|
beq- MPCall_16_0x78
|
|
lwz r30, 0x0008(r30)
|
|
bl PoolFree
|
|
b MPCall_16_0x64
|
|
|
|
MPCall_16_0x78
|
|
mr r8, r3
|
|
bl major_0x0dce8
|
|
|
|
MPCall_16_0x80
|
|
addi r30, r31, 0x00
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r30
|
|
addi r8, r16, -0x08
|
|
beq- MPCall_16_0xe4
|
|
lwz r17, 0x0088(r8)
|
|
li r18, -0x726f
|
|
stw r18, 0x011c(r17)
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- MPCall_16_0xb4
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
MPCall_16_0xb4
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
addi r8, r16, -0x08
|
|
bl TaskReadyAsPrev
|
|
bl major_0x14af8
|
|
b MPCall_16_0x80
|
|
|
|
MPCall_16_0xe4
|
|
mr r8, r31
|
|
bl PoolFree
|
|
mr r8, r3
|
|
bl DeleteID
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 39, MPCall_39
|
|
|
|
MPCall_39 ; OUTSIDE REFERER
|
|
cmpwi r4, 0x00
|
|
blt+ ReturnMPCallOOM
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Queue.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
lwz r29, 0x0024(r31)
|
|
lwz r30, 0x0028(r31)
|
|
cmpw r29, r4
|
|
|
|
; r1 = kdp
|
|
beq+ ReleaseAndReturnZeroFromMPCall
|
|
blt- MPCall_39_0x7c
|
|
|
|
MPCall_39_0x48
|
|
mr. r8, r30
|
|
beq- MPCall_39_0x70
|
|
addi r29, r29, -0x01
|
|
lwz r30, 0x0008(r30)
|
|
bl PoolFree
|
|
cmpw r29, r4
|
|
bgt+ MPCall_39_0x48
|
|
stw r4, 0x0024(r31)
|
|
stw r30, 0x0028(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_39_0x70
|
|
stw r29, 0x0024(r31)
|
|
stw r30, 0x0028(r31)
|
|
b ReleaseAndReturnMPCallOOM
|
|
|
|
MPCall_39_0x7c
|
|
li r8, 0x1c
|
|
bl PoolAlloc_with_crset
|
|
cmpwi r8, 0x00
|
|
beq+ major_0x0af60
|
|
addi r29, r29, 0x01
|
|
lis r17, 0x6e6f
|
|
ori r17, r17, 0x7472
|
|
stw r17, 0x0004(r8)
|
|
stw r30, 0x0008(r8)
|
|
stw r29, 0x0024(r31)
|
|
cmpw r29, r4
|
|
stw r8, 0x0028(r31)
|
|
mr r30, r8
|
|
blt+ MPCall_39_0x7c
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 17, MPCall_17
|
|
|
|
MPCall_17 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Queue.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
lwz r16, 0x0024(r31)
|
|
li r8, 0x1c
|
|
cmpwi r16, 0x00
|
|
bne- MPCall_17_0x58
|
|
bl PoolAlloc_with_crset
|
|
cmpwi r8, 0x00
|
|
beq+ major_0x0af60
|
|
lis r17, 0x6e6f
|
|
ori r17, r17, 0x7465
|
|
stw r17, 0x0004(r8)
|
|
b MPCall_17_0x6c
|
|
|
|
MPCall_17_0x58
|
|
lwz r17, 0x0028(r31)
|
|
mr. r8, r17
|
|
beq+ ReleaseAndReturnMPCallOOM
|
|
lwz r17, 0x0008(r17)
|
|
stw r17, 0x0028(r31)
|
|
|
|
MPCall_17_0x6c
|
|
lwz r16, 0x0134(r6)
|
|
stw r4, 0x0010(r8)
|
|
stw r5, 0x0014(r8)
|
|
stw r16, 0x0018(r8)
|
|
bl major_0x0c8b4
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
; major_0x0c8b4
|
|
|
|
; Xrefs:
|
|
; major_0x02ccc
|
|
; MPCall_17
|
|
; major_0x0db04
|
|
; MPCall_9
|
|
; MPCall_58
|
|
|
|
major_0x0c8b4 ; OUTSIDE REFERER
|
|
addi r17, r31, 0x10
|
|
stw r17, 0x0000(r8)
|
|
stw r17, 0x0008(r8)
|
|
lwz r16, 0x000c(r17)
|
|
stw r16, 0x000c(r8)
|
|
stw r8, 0x0008(r16)
|
|
stw r8, 0x000c(r17)
|
|
lwz r18, 0x0030(r31)
|
|
addi r18, r18, 0x01
|
|
stw r18, 0x0030(r31)
|
|
mflr r27
|
|
lwz r8, 0x0000(r31)
|
|
bl major_0x0dce8
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r31
|
|
addi r8, r16, -0x08
|
|
beq- major_0x0c8b4_0xac
|
|
lwz r17, 0x0088(r8)
|
|
lwz r18, 0x00fc(r17)
|
|
subi r18, r18, 4
|
|
stw r18, 0x00fc(r17)
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- major_0x0c8b4_0x68
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
major_0x0c8b4_0x68
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x002c(r31)
|
|
addi r18, r18, -0x01
|
|
stw r18, 0x002c(r31)
|
|
addi r8, r16, -0x08
|
|
li r17, 0x01
|
|
stb r17, 0x0019(r8)
|
|
bl TaskReadyAsPrev
|
|
bl CalculateTimeslice
|
|
bl major_0x14af8
|
|
|
|
major_0x0c8b4_0xac
|
|
mtlr r27
|
|
blr
|
|
|
|
|
|
|
|
DeclareMPCall 18, MPCall_18
|
|
|
|
MPCall_18 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Queue.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
lwz r16, 0x0018(r31)
|
|
addi r17, r31, 0x10
|
|
cmpw r16, r17
|
|
beq- MPCall_18_0x9c
|
|
lwz r4, 0x0010(r16)
|
|
lwz r5, 0x0014(r16)
|
|
lwz r17, 0x0018(r16)
|
|
stw r17, 0x0134(r6)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x0030(r31)
|
|
addi r18, r18, -0x01
|
|
stw r18, 0x0030(r31)
|
|
lbz r17, 0x0007(r16)
|
|
mr r8, r16
|
|
cmpwi r17, 0x72
|
|
beq- MPCall_18_0x8c
|
|
bl PoolFree
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_18_0x8c
|
|
lwz r17, 0x0028(r31)
|
|
stw r16, 0x0028(r31)
|
|
stw r17, 0x0008(r16)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_18_0x9c
|
|
lwz r17, 0x013c(r6)
|
|
mfsprg r30, 0
|
|
cmpwi r17, 0x00
|
|
lwz r19, -0x0008(r30)
|
|
beq+ ReleaseAndTimeoutMPCall
|
|
lwz r16, 0x0064(r19)
|
|
rlwinm. r16, r16, 0, 15, 15
|
|
beq- MPCall_18_0xc4
|
|
stw r3, -0x0410(r1)
|
|
b ReleaseAndReturnMPCallBlueBlocking
|
|
|
|
MPCall_18_0xc4
|
|
mr r8, r19
|
|
bl major_0x13e4c
|
|
lwz r19, -0x0008(r30)
|
|
addi r16, r31, 0x00
|
|
addi r17, r19, 0x08
|
|
stw r16, 0x0000(r17)
|
|
stw r16, 0x0008(r17)
|
|
lwz r18, 0x000c(r16)
|
|
stw r18, 0x000c(r17)
|
|
stw r17, 0x0008(r18)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x002c(r31)
|
|
addi r18, r18, 0x01
|
|
stw r18, 0x002c(r31)
|
|
lis r16, 0x7fff
|
|
lwz r17, 0x013c(r6)
|
|
ori r16, r16, 0xffff
|
|
addi r30, r19, 0x20
|
|
cmpw r17, r16
|
|
li r16, 0x02
|
|
beq- MPCall_18_0x154
|
|
stb r16, 0x0014(r30)
|
|
stw r19, 0x0018(r30)
|
|
mr r8, r17
|
|
|
|
; r1 = kdp
|
|
; r8 = multiple (pos: /250; neg: /250000)
|
|
bl TimebaseTicksPerPeriod
|
|
; r8 = hi
|
|
; r9 = lo
|
|
|
|
mr r27, r8
|
|
mr r28, r9
|
|
bl GetTime
|
|
mfxer r16
|
|
addc r9, r9, r28
|
|
adde r8, r8, r27
|
|
mtxer r16
|
|
stw r8, 0x0038(r30)
|
|
stw r9, 0x003c(r30)
|
|
mr r8, r30
|
|
bl called_by_init_tmrqs
|
|
|
|
MPCall_18_0x154
|
|
b AlternateMPCallReturnPath
|
|
|
|
|
|
|
|
DeclareMPCall 19, MPCall_19
|
|
|
|
MPCall_19 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Queue.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
lwz r16, 0x0018(r31)
|
|
addi r17, r31, 0x10
|
|
cmpw r16, r17
|
|
beq+ ReleaseAndTimeoutMPCall
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 20, MPCall_20
|
|
|
|
MPCall_20 ; OUTSIDE REFERER
|
|
cmpw r4, r3
|
|
bgt+ ReturnMPCallOOM
|
|
li r8, 0x20
|
|
bl PoolAlloc_with_crset
|
|
mr. r31, r8
|
|
beq+ major_0x0af60_0x20
|
|
lis r16, 0x5345
|
|
stw r31, 0x0008(r31)
|
|
ori r16, r16, 0x4d41
|
|
stw r31, 0x000c(r31)
|
|
stw r16, 0x0004(r31)
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
li r9, 0x05
|
|
|
|
; r1 = kdp
|
|
; r9 = kind
|
|
bl MakeID
|
|
cmpwi r8, 0x00
|
|
bne+ MPCall_20_0x60
|
|
mr r8, r31
|
|
bl PoolFree
|
|
b major_0x0af60
|
|
|
|
MPCall_20_0x60
|
|
li r18, 0x00
|
|
stw r8, 0x0000(r31)
|
|
mfsprg r30, 0
|
|
lwz r30, -0x0008(r30)
|
|
stw r3, 0x0014(r31)
|
|
stw r4, 0x0010(r31)
|
|
lwz r17, 0x0060(r30)
|
|
stw r18, 0x001c(r31)
|
|
stw r17, 0x0018(r31)
|
|
mr r5, r8
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 23, MPCall_23
|
|
|
|
MPCall_23 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Semaphore.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
lwz r16, 0x0010(r31)
|
|
cmpwi r16, 0x00
|
|
addi r16, r16, -0x01
|
|
ble- MPCall_23_0x44
|
|
stw r16, 0x0010(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_23_0x44
|
|
cmpwi r4, 0x00
|
|
mfsprg r30, 0
|
|
beq+ ReleaseAndTimeoutMPCall
|
|
lwz r8, -0x0008(r30)
|
|
lwz r16, 0x0064(r8)
|
|
rlwinm. r16, r16, 0, 15, 15
|
|
beq- MPCall_23_0x68
|
|
stw r3, -0x0410(r1)
|
|
b ReleaseAndReturnMPCallBlueBlocking
|
|
|
|
MPCall_23_0x68
|
|
bl major_0x13e4c
|
|
addi r16, r31, 0x00
|
|
addi r17, r8, 0x08
|
|
stw r16, 0x0000(r17)
|
|
stw r16, 0x0008(r17)
|
|
lwz r18, 0x000c(r16)
|
|
stw r18, 0x000c(r17)
|
|
stw r17, 0x0008(r18)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x001c(r31)
|
|
addi r18, r18, 0x01
|
|
stw r18, 0x001c(r31)
|
|
lis r16, 0x7fff
|
|
addi r30, r8, 0x20
|
|
ori r16, r16, 0xffff
|
|
cmpw r4, r16
|
|
li r17, 0x02
|
|
beq- MPCall_23_0xec
|
|
stb r17, 0x0014(r30)
|
|
stw r8, 0x0018(r30)
|
|
mr r8, r4
|
|
|
|
; r1 = kdp
|
|
; r8 = multiple (pos: /250; neg: /250000)
|
|
bl TimebaseTicksPerPeriod
|
|
; r8 = hi
|
|
; r9 = lo
|
|
|
|
mr r27, r8
|
|
mr r28, r9
|
|
bl GetTime
|
|
mfxer r16
|
|
addc r9, r9, r28
|
|
adde r8, r8, r27
|
|
mtxer r16
|
|
stw r8, 0x0038(r30)
|
|
stw r9, 0x003c(r30)
|
|
mr r8, r30
|
|
bl called_by_init_tmrqs
|
|
|
|
MPCall_23_0xec
|
|
li r3, 0x00
|
|
b AlternateMPCallReturnPath
|
|
|
|
|
|
|
|
DeclareMPCall 24, MPCall_24
|
|
|
|
MPCall_24 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Semaphore.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
lwz r16, 0x0010(r31)
|
|
cmpwi r16, 0x00
|
|
ble+ ReleaseAndTimeoutMPCall
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 22, MPCall_22
|
|
|
|
MPCall_22 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Semaphore.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
bl major_0x0ccf4
|
|
mr r3, r8
|
|
b ReleaseAndReturnMPCall
|
|
|
|
|
|
|
|
; major_0x0ccf4
|
|
|
|
; Xrefs:
|
|
; MPCall_22
|
|
; major_0x0db04
|
|
|
|
major_0x0ccf4 ; OUTSIDE REFERER
|
|
mflr r27
|
|
lwz r8, 0x0000(r31)
|
|
bl major_0x0dce8
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r31
|
|
beq- major_0x0ccf4_0x80
|
|
addi r8, r16, -0x08
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- major_0x0ccf4_0x30
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
major_0x0ccf4_0x30
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x001c(r31)
|
|
addi r18, r18, -0x01
|
|
stw r18, 0x001c(r31)
|
|
addi r8, r16, -0x08
|
|
li r17, 0x01
|
|
stb r17, 0x0019(r8)
|
|
bl TaskReadyAsPrev
|
|
bl CalculateTimeslice
|
|
bl major_0x14af8
|
|
mtlr r27
|
|
li r8, 0x00
|
|
blr
|
|
|
|
major_0x0ccf4_0x80
|
|
mtlr r27
|
|
lwz r16, 0x0010(r31)
|
|
lwz r17, 0x0014(r31)
|
|
cmpw r16, r17
|
|
addi r16, r16, 0x01
|
|
li r8, -0x7272
|
|
bgelr-
|
|
stw r16, 0x0010(r31)
|
|
li r8, 0x00
|
|
blr
|
|
|
|
|
|
|
|
DeclareMPCall 21, MPCall_21
|
|
|
|
MPCall_21 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Semaphore.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r3
|
|
bl major_0x0dce8
|
|
|
|
MPCall_21_0x34
|
|
addi r30, r31, 0x00
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r30
|
|
addi r8, r16, -0x08
|
|
beq- MPCall_21_0x98
|
|
lwz r17, 0x0088(r8)
|
|
li r18, -0x726f
|
|
stw r18, 0x011c(r17)
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- MPCall_21_0x68
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
MPCall_21_0x68
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
addi r8, r16, -0x08
|
|
bl TaskReadyAsPrev
|
|
bl major_0x14af8
|
|
b MPCall_21_0x34
|
|
|
|
MPCall_21_0x98
|
|
mr r8, r31
|
|
bl PoolFree
|
|
mr r8, r3
|
|
bl DeleteID
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 25, MPCall_25
|
|
|
|
MPCall_25 ; OUTSIDE REFERER
|
|
li r8, 0x24
|
|
bl PoolAlloc_with_crset
|
|
mr. r31, r8
|
|
beq+ major_0x0af60_0x20
|
|
lis r16, 0x4352
|
|
stw r31, 0x0008(r31)
|
|
ori r16, r16, 0x474e
|
|
stw r31, 0x000c(r31)
|
|
stw r16, 0x0004(r31)
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
li r9, 0x06
|
|
|
|
; r1 = kdp
|
|
; r9 = kind
|
|
bl MakeID
|
|
cmpwi r8, 0x00
|
|
bne+ MPCall_25_0x58
|
|
mr r8, r31
|
|
bl PoolFree
|
|
b major_0x0af60
|
|
|
|
MPCall_25_0x58
|
|
li r18, 0x00
|
|
mfsprg r30, 0
|
|
lwz r30, -0x0008(r30)
|
|
li r16, 0x00
|
|
stw r8, 0x0000(r31)
|
|
stw r16, 0x0014(r31)
|
|
stw r16, 0x001c(r31)
|
|
stw r16, 0x0018(r31)
|
|
lwz r17, 0x0060(r30)
|
|
stw r18, 0x0020(r31)
|
|
stw r17, 0x0010(r31)
|
|
mr r4, r8
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 27, MPCall_27
|
|
|
|
MPCall_27 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, CriticalRegion.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
mfsprg r17, 0
|
|
lwz r18, 0x0014(r31)
|
|
lwz r30, -0x0008(r17)
|
|
cmpwi r18, 0x00
|
|
lwz r16, 0x0018(r31)
|
|
beq- MPCall_27_0x64
|
|
lwz r17, 0x001c(r31)
|
|
cmpw r16, r30
|
|
cmpw cr1, r17, r5
|
|
bne- MPCall_27_0x78
|
|
bne- cr1, MPCall_27_0x78
|
|
addi r18, r18, 0x01
|
|
stw r18, 0x0014(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_27_0x64
|
|
addi r18, r18, 0x01
|
|
stw r30, 0x0018(r31)
|
|
stw r5, 0x001c(r31)
|
|
stw r18, 0x0014(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_27_0x78
|
|
lwz r8, 0x0000(r16)
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Task.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallTaskAborted
|
|
lwz r8, 0x001c(r31)
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Process.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallTaskAborted
|
|
cmpwi r4, 0x00
|
|
lwz r16, 0x0064(r30)
|
|
beq+ ReleaseAndTimeoutMPCall
|
|
rlwinm. r16, r16, 0, 15, 15
|
|
beq- MPCall_27_0xb4
|
|
stw r3, -0x0410(r1)
|
|
b ReleaseAndReturnMPCallBlueBlocking
|
|
|
|
MPCall_27_0xb4
|
|
mr r8, r30
|
|
bl major_0x13e4c
|
|
lis r16, 0x7fff
|
|
addi r18, r30, 0x08
|
|
ori r16, r16, 0xffff
|
|
stw r31, 0x0000(r18)
|
|
stw r31, 0x0008(r18)
|
|
lwz r19, 0x000c(r31)
|
|
stw r19, 0x000c(r18)
|
|
stw r18, 0x0008(r19)
|
|
stw r18, 0x000c(r31)
|
|
lwz r18, 0x0020(r31)
|
|
addi r18, r18, 0x01
|
|
stw r18, 0x0020(r31)
|
|
cmpw r4, r16
|
|
beq- MPCall_27_0x138
|
|
addi r29, r30, 0x20
|
|
li r8, 0x02
|
|
stw r30, 0x0018(r29)
|
|
stb r8, 0x0014(r29)
|
|
mr r8, r4
|
|
|
|
; r1 = kdp
|
|
; r8 = multiple (pos: /250; neg: /250000)
|
|
bl TimebaseTicksPerPeriod
|
|
; r8 = hi
|
|
; r9 = lo
|
|
|
|
mr r27, r8
|
|
mr r28, r9
|
|
bl GetTime
|
|
mfxer r16
|
|
addc r9, r9, r28
|
|
adde r8, r8, r27
|
|
mtxer r16
|
|
stw r8, 0x0038(r29)
|
|
stw r9, 0x003c(r29)
|
|
mr r8, r29
|
|
bl called_by_init_tmrqs
|
|
|
|
MPCall_27_0x138
|
|
b AlternateMPCallReturnPath
|
|
|
|
|
|
|
|
DeclareMPCall 29, MPCall_29
|
|
|
|
MPCall_29 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, CriticalRegion.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
mfsprg r17, 0
|
|
lwz r18, 0x0014(r31)
|
|
cmpwi r18, 0x00
|
|
|
|
; r1 = kdp
|
|
beq+ ReleaseAndReturnZeroFromMPCall
|
|
lwz r30, -0x0008(r17)
|
|
lwz r16, 0x0018(r31)
|
|
lwz r17, 0x001c(r31)
|
|
cmpw r16, r30
|
|
cmpw cr1, r17, r4
|
|
bne+ ReleaseAndTimeoutMPCall
|
|
bne+ cr1, ReleaseAndTimeoutMPCall
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 28, MPCall_28
|
|
|
|
MPCall_28 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, CriticalRegion.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
mfsprg r17, 0
|
|
lwz r16, 0x0018(r31)
|
|
lwz r30, -0x0008(r17)
|
|
lwz r18, 0x0014(r31)
|
|
lwz r17, 0x001c(r31)
|
|
cmpw r16, r30
|
|
cmpw cr1, r17, r4
|
|
bne+ ReleaseAndReturnMPCallOOM
|
|
bne+ cr1, ReleaseAndReturnMPCallOOM
|
|
addi r18, r18, -0x01
|
|
cmpwi r18, 0x00
|
|
stw r18, 0x0014(r31)
|
|
|
|
; r1 = kdp
|
|
bne+ ReleaseAndReturnZeroFromMPCall
|
|
stw r18, 0x0018(r31)
|
|
stw r18, 0x001c(r31)
|
|
mr r8, r3
|
|
bl major_0x0dce8
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r31
|
|
|
|
; r1 = kdp
|
|
beq+ ReleaseAndReturnZeroFromMPCall
|
|
addi r8, r16, -0x08
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- MPCall_28_0x94
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
MPCall_28_0x94
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x0020(r31)
|
|
addi r18, r18, -0x01
|
|
stw r18, 0x0020(r31)
|
|
addi r8, r16, -0x08
|
|
lwz r17, 0x0088(r8)
|
|
lwz r18, 0x00fc(r17)
|
|
subi r18, r18, 4
|
|
stw r18, 0x00fc(r17)
|
|
li r17, 0x01
|
|
stb r17, 0x0019(r8)
|
|
bl TaskReadyAsPrev
|
|
bl CalculateTimeslice
|
|
bl major_0x14af8
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 26, MPCall_26
|
|
|
|
MPCall_26 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, CriticalRegion.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r3
|
|
bl major_0x0dce8
|
|
|
|
MPCall_26_0x34
|
|
addi r30, r31, 0x00
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r30
|
|
addi r8, r16, -0x08
|
|
beq- MPCall_26_0x98
|
|
lwz r17, 0x0088(r8)
|
|
li r18, -0x726f
|
|
stw r18, 0x011c(r17)
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- MPCall_26_0x68
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
MPCall_26_0x68
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
addi r8, r16, -0x08
|
|
bl TaskReadyAsPrev
|
|
bl major_0x14af8
|
|
b MPCall_26_0x34
|
|
|
|
MPCall_26_0x98
|
|
mr r8, r31
|
|
bl PoolFree
|
|
mr r8, r3
|
|
bl DeleteID
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 49, NKCreateEventGroupForThisTask
|
|
|
|
NKCreateEventGroupForThisTask
|
|
|
|
li r8, EventGroup.Size
|
|
bl PoolAlloc
|
|
mr. r31, r8
|
|
beq+ major_0x0af60_0x20
|
|
|
|
InitList r8, EventGroup.kSignature, scratch=r16
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
li r9, EventGroup.kIDClass
|
|
bl MakeID
|
|
cmpwi r8, 0
|
|
bne+ @success
|
|
|
|
mr r8, r31
|
|
bl PoolFree
|
|
b major_0x0af60
|
|
|
|
@success
|
|
mfsprg r30, 0
|
|
lwz r30, EWA.PA_CurTask(r30)
|
|
|
|
stw r8, EventGroup.LLL + LLL.Freeform(r31)
|
|
|
|
lwz r17, Task.ProcessID(r30)
|
|
stw r17, EventGroup.ProcessID(r31)
|
|
|
|
mr r4, r8
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 50, MPCall_50
|
|
|
|
MPCall_50 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, EventGroup.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r3
|
|
bl major_0x0dce8
|
|
|
|
MPCall_50_0x34
|
|
addi r30, r31, 0x00
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r30
|
|
addi r8, r16, -0x08
|
|
beq- MPCall_50_0x98
|
|
lwz r17, 0x0088(r8)
|
|
li r18, -0x726f
|
|
stw r18, 0x011c(r17)
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- MPCall_50_0x68
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
MPCall_50_0x68
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
addi r8, r16, -0x08
|
|
bl TaskReadyAsPrev
|
|
bl major_0x14af8
|
|
b MPCall_50_0x34
|
|
|
|
MPCall_50_0x98
|
|
mr r8, r31
|
|
bl PoolFree
|
|
mr r8, r3
|
|
bl DeleteID
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 51, MPCall_51
|
|
|
|
MPCall_51 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, EventGroup.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r4
|
|
bl major_0x0d35c
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
; major_0x0d35c
|
|
|
|
; Xrefs:
|
|
; MPCall_51
|
|
; major_0x0db04
|
|
; MPCall_83
|
|
|
|
major_0x0d35c ; OUTSIDE REFERER
|
|
lwz r16, 0x0010(r31)
|
|
or r16, r16, r8
|
|
stw r16, 0x0010(r31)
|
|
mflr r27
|
|
lwz r8, 0x0000(r31)
|
|
bl major_0x0dce8
|
|
lwz r16, 0x0008(r31)
|
|
cmpw r16, r31
|
|
addi r8, r16, -0x08
|
|
beq- major_0x0d35c_0x90
|
|
lwz r17, 0x0088(r8)
|
|
lwz r18, 0x00fc(r17)
|
|
subi r18, r18, 4
|
|
stw r18, 0x00fc(r17)
|
|
lbz r17, 0x0037(r8)
|
|
cmpwi r17, 0x01
|
|
bne- major_0x0d35c_0x4c
|
|
addi r8, r8, 0x20
|
|
bl major_0x136c8
|
|
|
|
major_0x0d35c_0x4c
|
|
lwz r16, 0x0008(r31)
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x001c(r31)
|
|
addi r18, r18, -0x01
|
|
stw r18, 0x001c(r31)
|
|
addi r8, r16, -0x08
|
|
li r17, 0x01
|
|
stb r17, 0x0019(r8)
|
|
bl TaskReadyAsPrev
|
|
bl CalculateTimeslice
|
|
bl major_0x14af8
|
|
|
|
major_0x0d35c_0x90
|
|
lwz r16, 0x0018(r31)
|
|
rlwinm. r17, r16, 0, 27, 27
|
|
beq- major_0x0d35c_0x1a0
|
|
lwz r17, 0x0658(r1)
|
|
lwz r26, -0x08f0(r1)
|
|
lwz r18, 0x00c8(r17)
|
|
lwz r19, 0x00d0(r17)
|
|
cmpwi cr1, r18, 0x00
|
|
cmpwi r19, 0x00
|
|
bne- cr1, major_0x0d35c_0xc8
|
|
bne- major_0x0d35c_0x1a0
|
|
lwz r8, 0x0000(r31)
|
|
stw r8, 0x00d0(r17)
|
|
b major_0x0d35c_0x118
|
|
|
|
major_0x0d35c_0xc8
|
|
lwz r9, 0x0634(r1)
|
|
rlwinm r16, r16, 2, 26, 29
|
|
add r18, r18, r9
|
|
lwzx r19, r16, r18
|
|
cmpwi r19, 0x00
|
|
bne- major_0x0d35c_0x1a0
|
|
lwz r8, 0x0000(r31)
|
|
stwx r8, r16, r18
|
|
li r19, 0x1c
|
|
li r9, 0x04
|
|
|
|
major_0x0d35c_0xf0
|
|
lwzx r8, r19, r18
|
|
cmpwi r8, 0x00
|
|
bne- major_0x0d35c_0x108
|
|
subf. r19, r9, r19
|
|
bgt+ major_0x0d35c_0xf0
|
|
bl panic
|
|
|
|
major_0x0d35c_0x108
|
|
cmplw r16, r19
|
|
srwi r16, r16, 2
|
|
blt- major_0x0d35c_0x1a0
|
|
stw r16, 0x00d0(r17)
|
|
|
|
major_0x0d35c_0x118
|
|
lwz r16, 0x0064(r26)
|
|
lbz r19, 0x0018(r26)
|
|
ori r16, r16, 0x10
|
|
stw r16, 0x0064(r26)
|
|
lwz r17, -0x0440(r1)
|
|
lwz r16, 0x0674(r1)
|
|
lwz r8, 0x0678(r1)
|
|
and r16, r16, r8
|
|
or r17, r17, r16
|
|
stw r17, -0x0440(r1)
|
|
cmpwi r19, 0x00
|
|
addi r16, r26, 0x08
|
|
bne- major_0x0d35c_0x198
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
lbz r17, 0x0037(r26)
|
|
cmpwi r17, 0x01
|
|
bne- major_0x0d35c_0x17c
|
|
addi r8, r26, 0x20
|
|
bl major_0x136c8
|
|
|
|
major_0x0d35c_0x17c
|
|
lwz r18, -0x08f0(r1)
|
|
li r16, 0x00
|
|
stb r16, 0x0019(r26)
|
|
mr r8, r26
|
|
bl TaskReadyAsNext
|
|
mr r8, r26
|
|
bl CalculateTimeslice
|
|
|
|
major_0x0d35c_0x198
|
|
mr r8, r26
|
|
bl major_0x14af8
|
|
|
|
major_0x0d35c_0x1a0
|
|
mtlr r27
|
|
blr
|
|
|
|
|
|
|
|
DeclareMPCall 52, MPCall_52
|
|
|
|
MPCall_52 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, EventGroup.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
lwz r16, 0x0010(r31)
|
|
cmpwi r16, 0x00
|
|
beq- MPCall_52_0xc0
|
|
mr r4, r16
|
|
li r16, 0x00
|
|
stw r16, 0x0010(r31)
|
|
lwz r16, 0x0018(r31)
|
|
lwz r17, 0x0658(r1)
|
|
rlwinm. r18, r16, 0, 27, 27
|
|
rlwinm r16, r16, 2, 26, 29
|
|
|
|
; r1 = kdp
|
|
beq+ ReleaseAndReturnZeroFromMPCall
|
|
lwz r18, 0x00c8(r17)
|
|
lwz r9, 0x0634(r1)
|
|
cmpwi r18, 0x00
|
|
add r18, r18, r9
|
|
bne- MPCall_52_0x84
|
|
lwz r18, 0x00d0(r17)
|
|
cmpw r18, r3
|
|
li r18, 0x00
|
|
|
|
; r1 = kdp
|
|
bne+ ReleaseAndReturnZeroFromMPCall
|
|
stw r18, 0x00d0(r17)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_52_0x84
|
|
lwzx r19, r16, r18
|
|
cmpw r19, r3
|
|
li r19, 0x00
|
|
|
|
; r1 = kdp
|
|
bne+ ReleaseAndReturnZeroFromMPCall
|
|
stwx r19, r16, r18
|
|
li r19, 0x1c
|
|
li r9, 0x04
|
|
|
|
MPCall_52_0xa0
|
|
lwzx r8, r19, r18
|
|
cmpwi r8, 0x00
|
|
bne- MPCall_52_0xb4
|
|
subf. r19, r9, r19
|
|
bgt+ MPCall_52_0xa0
|
|
|
|
MPCall_52_0xb4
|
|
srwi r19, r19, 2
|
|
stw r19, 0x00d0(r17)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_52_0xc0
|
|
mfsprg r30, 0
|
|
cmpwi r5, 0x00
|
|
lwz r19, -0x0008(r30)
|
|
beq+ ReleaseAndTimeoutMPCall
|
|
lwz r16, 0x0064(r19)
|
|
rlwinm. r16, r16, 0, 15, 15
|
|
beq- MPCall_52_0xe4
|
|
stw r3, -0x0410(r1)
|
|
b ReleaseAndReturnMPCallBlueBlocking
|
|
|
|
MPCall_52_0xe4
|
|
mr r8, r19
|
|
bl major_0x13e4c
|
|
lwz r19, -0x0008(r30)
|
|
addi r16, r31, 0x00
|
|
addi r17, r19, 0x08
|
|
stw r16, 0x0000(r17)
|
|
stw r16, 0x0008(r17)
|
|
lwz r18, 0x000c(r16)
|
|
stw r18, 0x000c(r17)
|
|
stw r17, 0x0008(r18)
|
|
stw r17, 0x000c(r16)
|
|
lwz r18, 0x001c(r31)
|
|
addi r18, r18, 0x01
|
|
stw r18, 0x001c(r31)
|
|
lis r16, 0x7fff
|
|
ori r16, r16, 0xffff
|
|
addi r30, r19, 0x20
|
|
cmpw r5, r16
|
|
li r16, 0x02
|
|
beq- MPCall_52_0x170
|
|
stb r16, 0x0014(r30)
|
|
stw r19, 0x0018(r30)
|
|
mr r8, r5
|
|
|
|
; r1 = kdp
|
|
; r8 = multiple (pos: /250; neg: /250000)
|
|
bl TimebaseTicksPerPeriod
|
|
; r8 = hi
|
|
; r9 = lo
|
|
|
|
mr r27, r8
|
|
mr r28, r9
|
|
bl GetTime
|
|
mfxer r16
|
|
addc r9, r9, r28
|
|
adde r8, r8, r27
|
|
mtxer r16
|
|
stw r8, 0x0038(r30)
|
|
stw r9, 0x003c(r30)
|
|
mr r8, r30
|
|
bl called_by_init_tmrqs
|
|
|
|
MPCall_52_0x170
|
|
b AlternateMPCallReturnPath
|
|
|
|
|
|
|
|
DeclareMPCall 53, MPCall_53
|
|
|
|
MPCall_53 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, EventGroup.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r31, r8
|
|
lwz r16, 0x0010(r31)
|
|
cmpwi r16, 0x00
|
|
beq+ ReleaseAndTimeoutMPCall
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 54, MPCall_54
|
|
|
|
MPCall_54 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
bl LookupID
|
|
cmpwi r9, EventGroup.kIDClass
|
|
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
|
|
mr r31, r8
|
|
li r17, 1
|
|
|
|
cmpwi r4, 0
|
|
cmplwi cr1, r4, 8
|
|
|
|
lwz r16, 0x0018(r31)
|
|
|
|
beq- @use_1
|
|
bgt- cr1, @use_1
|
|
|
|
mr r17, r4
|
|
@use_1
|
|
|
|
; r17 = 1 if outside 1-8 (inc) range
|
|
|
|
ori r16, r16, 0x10
|
|
rlwimi r16, r17, 0, 28, 31
|
|
stw r16, 0x0018(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 40, MPCall_40
|
|
|
|
MPCall_40 ; OUTSIDE REFERER
|
|
li r8, 0x40
|
|
|
|
; r1 = kdp
|
|
; r8 = size
|
|
bl PoolAlloc
|
|
; r8 = ptr
|
|
|
|
mr. r31, r8
|
|
beq+ major_0x0af60_0x20
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r31
|
|
li r9, 0x03
|
|
|
|
; r1 = kdp
|
|
; r9 = kind
|
|
bl MakeID
|
|
cmpwi r8, 0x00
|
|
bne- MPCall_40_0x48
|
|
mr r8, r31
|
|
bl PoolFree
|
|
b major_0x0af60
|
|
|
|
MPCall_40_0x48
|
|
mfsprg r30, 0
|
|
stw r8, 0x0000(r31)
|
|
lwz r30, -0x0008(r30)
|
|
mr r4, r8
|
|
lwz r17, 0x0060(r30)
|
|
stw r17, 0x0010(r31)
|
|
bl GetTime
|
|
stw r8, 0x0038(r31)
|
|
stw r9, 0x003c(r31)
|
|
lis r17, 0x5449
|
|
ori r17, r17, 0x4d45
|
|
stw r17, 0x0004(r31)
|
|
li r17, 0x03
|
|
stb r17, 0x0014(r31)
|
|
li r17, 0x00
|
|
stb r17, 0x0016(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 41, MPCall_41
|
|
|
|
MPCall_41 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Timer.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r3
|
|
bl DeleteID
|
|
lwz r16, 0x0008(r31)
|
|
cmpwi r16, 0x00
|
|
beq- MPCall_41_0x48
|
|
mr r8, r31
|
|
bl major_0x136c8
|
|
|
|
MPCall_41_0x48
|
|
sync
|
|
lwz r16, PSA.SchLock + Lock.Count(r1)
|
|
cmpwi cr1, r16, 0x00
|
|
li r16, 0x00
|
|
bne+ cr1, MPCall_41_0x64
|
|
mflr r16
|
|
bl panic
|
|
|
|
MPCall_41_0x64
|
|
stw r16, PSA.SchLock + Lock.Count(r1)
|
|
lwz r8, 0x001c(r31)
|
|
cmpwi r8, 0x00
|
|
bnel- PoolFree
|
|
mr r8, r31
|
|
bl PoolFree
|
|
b ReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 30, MPCall_30
|
|
|
|
MPCall_30 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Timer.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
lbz r16, 0x0014(r31)
|
|
cmpwi r16, 0x03
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r4
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Semaphore.kIDClass
|
|
|
|
cmpwi cr2, r9, 0x04
|
|
beq- MPCall_30_0x80
|
|
cmpwi r9, 0x09
|
|
beq- cr2, MPCall_30_0x64
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
stw r4, 0x002c(r31)
|
|
stw r5, 0x0030(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_30_0x64
|
|
stw r4, 0x0018(r31)
|
|
lwz r16, 0x0134(r6)
|
|
lwz r17, 0x013c(r6)
|
|
stw r5, 0x0020(r31)
|
|
stw r16, 0x0024(r31)
|
|
stw r17, 0x0028(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_30_0x80
|
|
stw r4, 0x0034(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 31, MPCall_31
|
|
|
|
MPCall_31 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Timer.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
lbz r16, 0x0014(r31)
|
|
cmpwi r16, 0x03
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
lwz r16, 0x0008(r31)
|
|
cmpwi r16, 0x00
|
|
mr r8, r31
|
|
beq- MPCall_31_0x4c
|
|
bl major_0x136c8
|
|
|
|
MPCall_31_0x4c
|
|
lwz r9, 0x001c(r31)
|
|
lwz r8, 0x0018(r31)
|
|
cmpwi r9, 0x00
|
|
cmpwi cr1, r8, 0x00
|
|
bne- MPCall_31_0x9c
|
|
beq- cr1, MPCall_31_0x9c
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Queue.kIDClass
|
|
|
|
bne- MPCall_31_0x9c
|
|
lwz r9, 0x0024(r8)
|
|
li r8, 0x1c
|
|
cmpwi r9, 0x00
|
|
bne- MPCall_31_0x9c
|
|
|
|
; r1 = kdp
|
|
; r8 = size
|
|
bl PoolAlloc
|
|
; r8 = ptr
|
|
|
|
mr. r30, r8
|
|
beq+ major_0x0af60
|
|
lis r8, 0x6e6f
|
|
ori r8, r8, 0x7465
|
|
stw r8, 0x0004(r30)
|
|
stw r30, 0x001c(r31)
|
|
|
|
MPCall_31_0x9c
|
|
lwz r16, 0x0134(r6)
|
|
rlwinm. r9, r16, 0, 29, 29
|
|
mr r8, r4
|
|
beq- MPCall_31_0xb8
|
|
|
|
; r1 = kdp
|
|
; r8 = multiple (pos: /250; neg: /250000)
|
|
bl TimebaseTicksPerPeriod
|
|
; r8 = hi
|
|
; r9 = lo
|
|
|
|
mr r4, r8
|
|
mr r5, r9
|
|
|
|
MPCall_31_0xb8
|
|
lwz r16, 0x0134(r6)
|
|
rlwinm. r8, r16, 0, 30, 30
|
|
mfxer r17
|
|
beq- MPCall_31_0xdc
|
|
lwz r19, 0x003c(r31)
|
|
lwz r18, 0x0038(r31)
|
|
addc r5, r5, r19
|
|
adde r4, r4, r18
|
|
mtxer r17
|
|
|
|
MPCall_31_0xdc
|
|
stw r4, 0x0038(r31)
|
|
stw r5, 0x003c(r31)
|
|
lwz r16, 0x0134(r6)
|
|
clrlwi. r16, r16, 0x1f
|
|
li r17, 0x00
|
|
beq- MPCall_31_0xf8
|
|
li r17, 0x01
|
|
|
|
MPCall_31_0xf8
|
|
stb r17, 0x0016(r31)
|
|
mr r8, r31
|
|
bl called_by_init_tmrqs
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 32, MPCall_32
|
|
|
|
MPCall_32 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Timer.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
lbz r16, 0x0017(r31)
|
|
cmpwi r16, 0x01
|
|
bne- MPCall_32_0x58
|
|
lwz r4, 0x0038(r31)
|
|
lwz r5, 0x003c(r31)
|
|
bl GetTime
|
|
mfxer r16
|
|
subfc r5, r9, r5
|
|
subfe. r4, r8, r4
|
|
mtxer r16
|
|
bge+ MPCall_32_0x60
|
|
|
|
MPCall_32_0x58
|
|
li r4, 0x00
|
|
li r5, 0x00
|
|
|
|
MPCall_32_0x60
|
|
lwz r16, 0x0008(r31)
|
|
cmpwi r16, 0x00
|
|
mr r8, r31
|
|
beq- MPCall_32_0x74
|
|
bl major_0x136c8
|
|
|
|
MPCall_32_0x74
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 64, MPCall_64
|
|
|
|
MPCall_64 ; OUTSIDE REFERER
|
|
li r8, 0x28
|
|
|
|
; r1 = kdp
|
|
; r8 = size
|
|
bl PoolAlloc
|
|
; r8 = ptr
|
|
|
|
mr. r31, r8
|
|
beq+ major_0x0af60_0x20
|
|
lis r16, 0x4b4e
|
|
ori r16, r16, 0x4f54
|
|
stw r16, 0x0004(r31)
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
li r9, 0x0c
|
|
|
|
; r1 = kdp
|
|
; r9 = kind
|
|
bl MakeID
|
|
cmpwi r8, 0x00
|
|
bne+ MPCall_64_0x50
|
|
mr r8, r31
|
|
bl PoolFree
|
|
b major_0x0af60
|
|
|
|
MPCall_64_0x50
|
|
mfsprg r30, 0
|
|
lwz r30, -0x0008(r30)
|
|
stw r8, 0x0000(r31)
|
|
lwz r17, 0x0060(r30)
|
|
stw r17, 0x0008(r31)
|
|
mr r4, r8
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 65, MPCall_65
|
|
|
|
MPCall_65 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Notification.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r31
|
|
bl PoolFree
|
|
mr r8, r3
|
|
bl DeleteID
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 67, MPCall_67
|
|
|
|
MPCall_67 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Notification.kIDClass
|
|
|
|
mr r30, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
bl major_0x0db04
|
|
mr r3, r8
|
|
b ReleaseAndReturnMPCall
|
|
|
|
|
|
|
|
; major_0x0db04
|
|
|
|
; Xrefs:
|
|
; major_0x02ccc
|
|
; IntPerfMonitor
|
|
; IntThermalEvent
|
|
; MPCall_67
|
|
; major_0x102c8
|
|
; CommonPIHPath
|
|
|
|
major_0x0db04 ; OUTSIDE REFERER
|
|
mflr r29
|
|
lwz r16, 0x000c(r30)
|
|
lwz r17, 0x0024(r30)
|
|
cmplwi r16, 0x00
|
|
cmplwi cr1, r17, 0x00
|
|
bne- major_0x0db04_0x28
|
|
bne- cr1, major_0x0db04_0x28
|
|
lwz r18, 0x001c(r30)
|
|
cmplwi r18, 0x00
|
|
beq- major_0x0db04_0xf0
|
|
|
|
major_0x0db04_0x28
|
|
lwz r8, 0x000c(r30)
|
|
cmplwi r8, 0x00
|
|
beq- major_0x0db04_0x94
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Queue.kIDClass
|
|
|
|
mr r31, r8
|
|
bne- major_0x0db04_0xfc
|
|
lwz r16, 0x0024(r31)
|
|
cmpwi r16, 0x00
|
|
lwz r17, 0x0028(r31)
|
|
beq- major_0x0db04_0x68
|
|
mr. r8, r17
|
|
lwz r17, 0x0008(r17)
|
|
beq- major_0x0db04_0xf0
|
|
stw r17, 0x0028(r31)
|
|
b major_0x0db04_0x78
|
|
|
|
major_0x0db04_0x68
|
|
li r8, 0x1c
|
|
bl PoolAlloc_with_crset
|
|
cmpwi r8, 0x00
|
|
beq- major_0x0db04_0xe4
|
|
|
|
major_0x0db04_0x78
|
|
lwz r16, 0x0010(r30)
|
|
lwz r17, 0x0014(r30)
|
|
lwz r18, 0x0018(r30)
|
|
stw r16, 0x0010(r8)
|
|
stw r17, 0x0014(r8)
|
|
stw r18, 0x0018(r8)
|
|
bl major_0x0c8b4
|
|
|
|
major_0x0db04_0x94
|
|
lwz r8, 0x0024(r30)
|
|
cmplwi r8, 0x00
|
|
beq- major_0x0db04_0xb4
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Semaphore.kIDClass
|
|
|
|
mr r31, r8
|
|
bne- major_0x0db04_0xfc
|
|
bl major_0x0ccf4
|
|
|
|
major_0x0db04_0xb4
|
|
lwz r8, 0x001c(r30)
|
|
cmplwi r8, 0x00
|
|
beq- major_0x0db04_0xd8
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, EventGroup.kIDClass
|
|
|
|
mr r31, r8
|
|
bne- major_0x0db04_0xfc
|
|
lwz r8, 0x0020(r30)
|
|
bl major_0x0d35c
|
|
|
|
major_0x0db04_0xd8
|
|
mtlr r29
|
|
li r8, 0x00
|
|
blr
|
|
|
|
major_0x0db04_0xe4
|
|
mtlr r29
|
|
li r8, -0x726e
|
|
blr
|
|
|
|
major_0x0db04_0xf0
|
|
mtlr r29
|
|
li r8, -0x7272
|
|
blr
|
|
|
|
major_0x0db04_0xfc
|
|
mtlr r29
|
|
li r8, -0x7273
|
|
blr
|
|
|
|
|
|
|
|
DeclareMPCall 66, MPCall_66
|
|
|
|
MPCall_66 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Notification.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
mr r8, r4
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Semaphore.kIDClass
|
|
|
|
cmpwi cr2, r9, 0x04
|
|
beq- MPCall_66_0x74
|
|
cmpwi r9, 0x09
|
|
beq- cr2, MPCall_66_0x58
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
stw r4, 0x001c(r31)
|
|
stw r5, 0x0020(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_66_0x58
|
|
stw r4, 0x000c(r31)
|
|
lwz r16, 0x0134(r6)
|
|
lwz r17, 0x013c(r6)
|
|
stw r5, 0x0010(r31)
|
|
stw r16, 0x0014(r31)
|
|
stw r17, 0x0018(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_66_0x74
|
|
stw r4, 0x0024(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
DeclareMPCall 128, MPCall_128
|
|
|
|
MPCall_128 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
cmpwi r9, Notification.kIDClass
|
|
|
|
mr r31, r8
|
|
bne+ ReleaseAndReturnMPCallInvalidIDErr
|
|
cmpwi r4, 0x04
|
|
cmpwi cr1, r4, 0x09
|
|
beq- MPCall_128_0x40
|
|
beq- cr1, MPCall_128_0x58
|
|
b major_0x0b054
|
|
|
|
MPCall_128_0x40
|
|
lwz r16, 0x0134(r6)
|
|
lwz r17, 0x013c(r6)
|
|
stw r5, 0x0010(r31)
|
|
stw r16, 0x0014(r31)
|
|
stw r17, 0x0018(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_128_0x58
|
|
stw r5, 0x0020(r31)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
|
|
|
|
; major_0x0dce8
|
|
|
|
; Xrefs:
|
|
; major_0x02ccc
|
|
; MPCall_16
|
|
; major_0x0c8b4
|
|
; major_0x0ccf4
|
|
; MPCall_21
|
|
; MPCall_28
|
|
; MPCall_26
|
|
; MPCall_50
|
|
; major_0x0d35c
|
|
|
|
major_0x0dce8 ; OUTSIDE REFERER
|
|
lwz r9, -0x0410(r1)
|
|
lwz r19, -0x08f0(r1)
|
|
cmpw r8, r9
|
|
bnelr-
|
|
li r9, -0x01
|
|
mflr r24
|
|
stw r9, -0x0410(r1)
|
|
lbz r17, 0x0018(r19)
|
|
cmpwi r17, 0x00
|
|
addi r16, r19, 0x08
|
|
bne- major_0x0dce8_0x70
|
|
lwz r17, 0x0008(r16)
|
|
lwz r18, 0x000c(r16)
|
|
stw r17, 0x0008(r18)
|
|
stw r18, 0x000c(r17)
|
|
li r17, 0x00
|
|
stw r17, 0x0008(r16)
|
|
stw r17, 0x000c(r16)
|
|
lbz r17, 0x0037(r19)
|
|
cmpwi r17, 0x01
|
|
bne- major_0x0dce8_0x60
|
|
addi r8, r19, 0x20
|
|
bl major_0x136c8
|
|
lwz r19, -0x08f0(r1)
|
|
|
|
major_0x0dce8_0x60
|
|
li r16, 0x01
|
|
stb r16, 0x0019(r19)
|
|
lwz r8, -0x08f0(r1)
|
|
bl TaskReadyAsPrev
|
|
|
|
major_0x0dce8_0x70
|
|
lwz r8, -0x08f0(r1)
|
|
mtlr r24
|
|
b major_0x14af8
|
|
|
|
|
|
|
|
DeclareMPCall 120, MPCall_120
|
|
|
|
MPCall_120 ; OUTSIDE REFERER
|
|
|
|
_Lock PSA.SchLock, scratch1=r16, scratch2=r17
|
|
|
|
mr r8, r3
|
|
|
|
; r8 = id
|
|
bl LookupID
|
|
; r8 = something not sure what
|
|
; 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
|
|
|
|
mr r31, r8
|
|
cmpwi r9, 0x05
|
|
cmpwi cr1, r9, 0x04
|
|
beq- MPCall_120_0x33c
|
|
beq- cr1, MPCall_120_0x248
|
|
cmpwi r9, 0x09
|
|
cmpwi cr1, r9, 0x06
|
|
beq- MPCall_120_0x1b4
|
|
beq- cr1, MPCall_120_0x10c
|
|
cmpwi r9, 0x0c
|
|
cmpwi cr1, r9, 0x08
|
|
beq- MPCall_120_0x58
|
|
beq- cr1, MPCall_120_0x3d8
|
|
b major_0x0b054
|
|
|
|
MPCall_120_0x58
|
|
lis r8, 0x0c
|
|
ori r8, r8, 0x01
|
|
cmpw r8, r4
|
|
bne+ major_0x0b054
|
|
cmplwi r5, 0x00
|
|
bne- MPCall_120_0xa0
|
|
lis r16, 0x0c
|
|
ori r16, r16, 0x01
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0008(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0004(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x000c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0xa0
|
|
cmplwi r5, 0x10
|
|
bne- MPCall_120_0xd4
|
|
lwz r16, 0x0010(r31)
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0014(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0018(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x001c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0xd4
|
|
cmplwi r5, 0x20
|
|
bne- MPCall_120_0xf8
|
|
lwz r16, 0x0020(r31)
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0024(r31)
|
|
stw r16, 0x013c(r6)
|
|
li r16, 0x08
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0xf8
|
|
cmpwi r5, 0x28
|
|
bne+ major_0x0b054
|
|
li r16, 0x00
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x10c
|
|
lis r8, 0x06
|
|
ori r8, r8, 0x01
|
|
cmpw r8, r4
|
|
bne+ major_0x0b054
|
|
cmplwi r5, 0x00
|
|
bne- MPCall_120_0x154
|
|
lis r16, 0x06
|
|
ori r16, r16, 0x01
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0010(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0004(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x0020(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x154
|
|
cmplwi r5, 0x10
|
|
bne- MPCall_120_0x1a0
|
|
addi r17, r31, 0x00
|
|
lwz r18, 0x0008(r31)
|
|
li r16, 0x00
|
|
cmpw r17, r18
|
|
beq- MPCall_120_0x174
|
|
lwz r16, -0x0008(r18)
|
|
|
|
MPCall_120_0x174
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0018(r31)
|
|
cmpwi r16, 0x00
|
|
beq- MPCall_120_0x188
|
|
lwz r16, 0x0000(r16)
|
|
|
|
MPCall_120_0x188
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0014(r31)
|
|
stw r16, 0x0144(r6)
|
|
li r16, 0x0c
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x1a0
|
|
cmpwi r5, 0x1c
|
|
bne+ major_0x0b054
|
|
li r16, 0x00
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x1b4
|
|
lis r8, 0x09
|
|
ori r8, r8, 0x01
|
|
cmpw r8, r4
|
|
bne+ major_0x0b054
|
|
cmplwi r5, 0x00
|
|
bne- MPCall_120_0x1fc
|
|
lis r16, 0x09
|
|
ori r16, r16, 0x01
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0014(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0004(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x001c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x1fc
|
|
cmplwi r5, 0x10
|
|
bne- MPCall_120_0x234
|
|
addi r17, r31, 0x00
|
|
lwz r18, 0x0008(r31)
|
|
li r16, 0x00
|
|
cmpw r17, r18
|
|
beq- MPCall_120_0x21c
|
|
lwz r16, -0x0008(r18)
|
|
|
|
MPCall_120_0x21c
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0010(r31)
|
|
stw r16, 0x013c(r6)
|
|
li r16, 0x08
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x234
|
|
cmpwi r5, 0x18
|
|
bne+ major_0x0b054
|
|
li r16, 0x00
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x248
|
|
lis r8, 0x04
|
|
ori r8, r8, 0x01
|
|
cmpw r8, r4
|
|
bne+ major_0x0b054
|
|
cmplwi r5, 0x00
|
|
bne- MPCall_120_0x290
|
|
lis r16, 0x04
|
|
ori r16, r16, 0x01
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0020(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0004(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x002c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x290
|
|
cmplwi r5, 0x10
|
|
bne- MPCall_120_0x2ec
|
|
addi r17, r31, 0x00
|
|
lwz r18, 0x0008(r31)
|
|
li r16, 0x00
|
|
cmpw r17, r18
|
|
beq- MPCall_120_0x2b0
|
|
lwz r16, -0x0008(r18)
|
|
|
|
MPCall_120_0x2b0
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0030(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0024(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r18, 0x0018(r31)
|
|
addi r17, r31, 0x10
|
|
li r16, 0x00
|
|
cmpw r17, r18
|
|
beq- MPCall_120_0x2dc
|
|
lwz r16, 0x0010(r18)
|
|
|
|
MPCall_120_0x2dc
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x2ec
|
|
cmplwi r5, 0x20
|
|
bne- MPCall_120_0x328
|
|
lwz r18, 0x0018(r31)
|
|
addi r17, r31, 0x10
|
|
li r16, 0x00
|
|
cmpw r17, r18
|
|
li r17, 0x00
|
|
beq- MPCall_120_0x314
|
|
lwz r16, 0x0014(r18)
|
|
lwz r17, 0x0018(r18)
|
|
|
|
MPCall_120_0x314
|
|
stw r16, 0x0134(r6)
|
|
stw r17, 0x013c(r6)
|
|
li r16, 0x08
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x328
|
|
cmpwi r5, 0x28
|
|
bne+ major_0x0b054
|
|
li r16, 0x00
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x33c
|
|
lis r8, 0x05
|
|
ori r8, r8, 0x01
|
|
cmpw r8, r4
|
|
bne+ major_0x0b054
|
|
cmplwi r5, 0x00
|
|
bne- MPCall_120_0x384
|
|
lis r16, 0x05
|
|
ori r16, r16, 0x01
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0018(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0004(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x001c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x384
|
|
cmplwi r5, 0x10
|
|
bne- MPCall_120_0x3c4
|
|
addi r17, r31, 0x00
|
|
lwz r18, 0x0008(r31)
|
|
li r16, 0x00
|
|
cmpw r17, r18
|
|
beq- MPCall_120_0x3a4
|
|
lwz r16, -0x0008(r18)
|
|
|
|
MPCall_120_0x3a4
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0014(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0010(r31)
|
|
stw r16, 0x0144(r6)
|
|
li r16, 0x0c
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x3c4
|
|
cmpwi r5, 0x1c
|
|
bne+ major_0x0b054
|
|
li r16, 0x00
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x3d8
|
|
lis r8, 0x08
|
|
ori r8, r8, 0x01
|
|
cmpw r8, r4
|
|
bne+ major_0x0b054
|
|
cmplwi r5, 0x00
|
|
bne- MPCall_120_0x420
|
|
lis r16, 0x08
|
|
ori r16, r16, 0x01
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0074(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0070(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x000c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x420
|
|
cmplwi r5, 0x10
|
|
bne- MPCall_120_0x454
|
|
lwz r16, 0x0030(r31)
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0034(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0038(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x003c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x454
|
|
cmplwi r5, 0x20
|
|
bne- MPCall_120_0x488
|
|
lwz r16, 0x0040(r31)
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0044(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0048(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x004c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x488
|
|
cmplwi r5, 0x30
|
|
bne- MPCall_120_0x4bc
|
|
lwz r16, 0x0050(r31)
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0054(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0058(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x005c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x4bc
|
|
cmplwi r5, 0x40
|
|
bne- MPCall_120_0x4f0
|
|
lwz r16, 0x0060(r31)
|
|
stw r16, 0x0134(r6)
|
|
lwz r16, 0x0064(r31)
|
|
stw r16, 0x013c(r6)
|
|
lwz r16, 0x0068(r31)
|
|
stw r16, 0x0144(r6)
|
|
lwz r16, 0x006c(r31)
|
|
stw r16, 0x014c(r6)
|
|
li r16, 0x10
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|
|
|
|
MPCall_120_0x4f0
|
|
cmpwi r5, 0x50
|
|
bne+ major_0x0b054
|
|
li r16, 0x00
|
|
stw r16, 0x0154(r6)
|
|
|
|
; r1 = kdp
|
|
b ReleaseAndReturnZeroFromMPCall
|