diff --git a/NanoKernel/NKAddressSpaceMPCalls.s b/NanoKernel/NKAddressSpaceMPCalls.s index 30c4ddd..98bfd53 100644 --- a/NanoKernel/NKAddressSpaceMPCalls.s +++ b/NanoKernel/NKAddressSpaceMPCalls.s @@ -465,16 +465,7 @@ MPCall_70 ; OUTSIDE REFERER rlwinm. r16, r16, 0, 30, 30 bne+ ReleaseAndReturnMPCallOOM bl NKCreateAddressSpaceSub - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_70_0x54 - mflr r16 - bl panic - -MPCall_70_0x54 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 mr. r3, r8 li r4, 0x00 bne+ CommonMPCallReturnPath @@ -825,13 +816,7 @@ MPCall_72_0x38 stw r8, Area.LogicalBase(r31) mr r8, r31 bl createarea - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_72_0x90 - mflr r16 - bl panic + _AssertAndRelease PSA.SchLock, scratch=r16 MPCall_72_0x90 stw r16, PSA.SchLock + Lock.Count(r1) @@ -1305,16 +1290,7 @@ createarea_0x5f0 bgt+ createarea_0x5f0 createarea_0x62c - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, createarea_0x648 - mflr r16 - bl panic - -createarea_0x648 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 createarea_0x64c lwz r16, Area.TwoFiftySix(r31) @@ -1386,16 +1362,7 @@ major_0x102a8_0xc ; createarea major_0x102c8 ; OUTSIDE REFERER - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, major_0x102c8_0x1c - mflr r16 - bl panic - -major_0x102c8_0x1c - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 addi r30, r8, 0x08 lwz r8, -0x0420(r1) @@ -1548,13 +1515,7 @@ MPCall_73 ; OUTSIDE REFERER stw r8, Area.TwoFiftySix(r31) mr r8, r31 bl createarea - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_73_0xb0 - mflr r16 - bl panic + _AssertAndRelease PSA.SchLock, scratch=r16 MPCall_73_0xb0 stw r16, PSA.SchLock + Lock.Count(r1) @@ -1623,16 +1584,7 @@ MPCall_74_0x5c stw r17, 0x000c(r16) MPCall_74_0xbc - sync - lwz r18, -0x0b90(r1) - cmpwi cr1, r18, 0x00 - li r18, 0x00 - bne+ cr1, MPCall_74_0xd8 - mflr r18 - bl panic - -MPCall_74_0xd8 - stw r18, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r18 lwz r8, 0x0040(r31) rlwinm. r16, r29, 0, 25, 25 cmpwi cr1, r8, 0x00 @@ -1668,16 +1620,7 @@ MPCall_74_0x14c ; r1 = kdp ; r8 = maybe the page bl free_list_add_page - sync - lwz r18, -0x0ad0(r1) - cmpwi cr1, r18, 0x00 - li r18, 0x00 - bne+ cr1, MPCall_74_0x16c - mflr r18 - bl panic - -MPCall_74_0x16c - stw r18, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r18 b MPCall_74_0x178 MPCall_74_0x174 @@ -1717,16 +1660,7 @@ MPCall_74_0x1e0 ; r1 = kdp ; r8 = maybe the page bl free_list_add_page - sync - lwz r18, -0x0ad0(r1) - cmpwi cr1, r18, 0x00 - li r18, 0x00 - bne+ cr1, MPCall_74_0x200 - mflr r18 - bl panic - -MPCall_74_0x200 - stw r18, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r18 b MPCall_74_0x20c MPCall_74_0x208 @@ -1835,16 +1769,7 @@ MPCall_75_0x100 ble+ MPCall_75_0x100 MPCall_75_0x138 - sync - lwz r8, -0x0b90(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, MPCall_75_0x154 - mflr r8 - bl panic - -MPCall_75_0x154 - stw r8, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r8 lwz r16, Area.TwoFiftySix(r31) rlwinm. r8, r16, 0, 25, 25 bne- MPCall_75_0x16c @@ -1852,16 +1777,7 @@ MPCall_75_0x154 bne- MPCall_75_0x16c MPCall_75_0x16c - sync - lwz r8, -0x0ad0(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, MPCall_75_0x188 - mflr r8 - bl panic - -MPCall_75_0x188 - stw r8, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r8 b MPCall_75_0x190 MPCall_75_0x190 @@ -1946,16 +1862,7 @@ MPCall_130 ; OUTSIDE REFERER mr r8, r29 bl MPCall_95_0x1e4 - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, MPCall_130_0xcc - mflr r14 - bl panic - -MPCall_130_0xcc - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 beq+ Local_Panic rlwinm r8, r16, 0, 29, 30 lwz r16, 0x0000(r30) @@ -2023,16 +1930,7 @@ MPCall_130_0x19c li r16, 0x06 rlwimi r17, r16, 0, 29, 30 stw r17, 0x0000(r30) - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, MPCall_130_0x1c8 - mflr r14 - bl panic - -MPCall_130_0x1c8 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall @@ -2128,16 +2026,7 @@ KCSetAreaAccess_0x118 add r29, r29, r19 subf. r8, r29, r28 bge+ KCSetAreaAccess_0x9c - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, KCSetAreaAccess_0x14c - mflr r14 - bl panic - -KCSetAreaAccess_0x14c - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall @@ -2173,16 +2062,7 @@ KCSetAreaAccess_0x1bc add r29, r29, r27 subf. r8, r29, r28 bge+ KCSetAreaAccess_0x1a4 - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, KCSetAreaAccess_0x1e4 - mflr r14 - bl panic - -KCSetAreaAccess_0x1e4 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall @@ -2370,16 +2250,7 @@ MPCall_123 ; OUTSIDE REFERER bltl- cr5, MPCall_95_0x2e0 bltl- cr5, MPCall_95_0x348 lwz r17, 0x0000(r30) - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, MPCall_123_0xa4 - mflr r14 - bl panic - -MPCall_123_0xa4 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 bl major_0x10d38 mr r5, r18 @@ -2670,16 +2541,7 @@ MPCall_81_0x70 rlwimi r5, r4, 0, 20, 31 MPCall_81_0xa4 - sync - lwz r8, -0x0b90(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, MPCall_81_0xc0 - mflr r8 - bl panic - -MPCall_81_0xc0 - stw r8, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r8 b ReleaseAndReturnMPCall MPCall_81_0xc8 @@ -2771,16 +2633,7 @@ MPCall_98_0x10c MPCall_98_0x118 stw r16, 0x013c(r6) - sync - lwz r8, -0x0b90(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, MPCall_98_0x138 - mflr r8 - bl panic - -MPCall_98_0x138 - stw r8, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r8 b ReleaseAndReturnMPCall MPCall_98_0x140 @@ -2846,16 +2699,7 @@ MPCall_83 ; OUTSIDE REFERER _Lock PSA.PoolLock, scratch1=r16, scratch2=r17 bl MPCall_83_0x90 - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_83_0x38 - mflr r16 - bl panic - -MPCall_83_0x38 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 mr. r4, r8 bne+ ReturnZeroFromMPCall @@ -2939,16 +2783,7 @@ MPCall_84_0x3c li r3, 0x00 MPCall_84_0x48 - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_84_0x64 - mflr r16 - bl panic - -MPCall_84_0x64 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 b CommonMPCallReturnPath @@ -3065,16 +2900,7 @@ KCMapPage_0x8c bl MPCall_95_0x1e4 beq+ Local_Panic lwz r29, 0x0000(r30) - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, KCMapPage_0xd0 - mflr r14 - bl panic - -KCMapPage_0xd0 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 clrlwi. r8, r29, 0x1f bne+ ReleaseAndReturnMPCallOOM lwz r17, 0x0134(r6) @@ -3084,16 +2910,7 @@ KCMapPage_0xd0 _Lock PSA.PoolLock, scratch1=r16, scratch2=r17 bl MPCall_83_0x90 - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCMapPage_0x120 - mflr r16 - bl panic - -KCMapPage_0x120 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 mr. r5, r8 beq+ MPCall_83_0x5c @@ -3246,29 +3063,11 @@ KCUnmapPages_0x148 stw r28, Area.Length2(r31) KCUnmapPages_0x158 - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, KCUnmapPages_0x174 - mflr r14 - bl panic - -KCUnmapPages_0x174 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 ; r1 = kdp bne+ cr3, ReleaseAndReturnZeroFromMPCall - sync - lwz r14, -0x0ad0(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, KCUnmapPages_0x198 - mflr r14 - bl panic - -KCUnmapPages_0x198 - stw r14, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r14 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall @@ -3329,31 +3128,13 @@ NKMakePhysicallyContiguous_0xac add r28, r28, r29 subf. r8, r27, r5 bge+ NKMakePhysicallyContiguous_0x80 - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, NKMakePhysicallyContiguous_0xd8 - mflr r14 - bl panic - -NKMakePhysicallyContiguous_0xd8 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall NKMakePhysicallyContiguous_0xe0 - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, NKMakePhysicallyContiguous_0xfc - mflr r14 - bl panic - -NKMakePhysicallyContiguous_0xfc - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 _Lock PSA.PoolLock, scratch1=r16, scratch2=r17 @@ -3373,29 +3154,11 @@ NKMakePhysicallyContiguous_0xfc dc.l 0x4bff9554 NKMakePhysicallyContiguous_0x150 - sync - lwz r16, -0x0b90(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, NKMakePhysicallyContiguous_0x16c - mflr r16 - bl panic - -NKMakePhysicallyContiguous_0x16c - stw r16, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r16 b ReleaseAndReturnMPCallOOM NKMakePhysicallyContiguous_0x174 - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, NKMakePhysicallyContiguous_0x190 - mflr r16 - bl panic - -NKMakePhysicallyContiguous_0x190 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 b ReleaseAndReturnMPCallOOM @@ -3459,16 +3222,7 @@ KCLockPages_0x94 stw r16, PSA.UnheldFreePageCount(r1) KCLockPages_0xc8 - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCLockPages_0xe4 - mflr r16 - bl panic - -KCLockPages_0xe4 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 ble+ ReleaseAndReturnMPCallOOM mr r27, r4 @@ -3566,16 +3320,7 @@ KCUnlockPages_0xc4 lwz r16, PSA.UnheldFreePageCount(r1) add r16, r16, r28 stw r16, PSA.UnheldFreePageCount(r1) - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCUnlockPages_0x114 - mflr r16 - bl panic - -KCUnlockPages_0x114 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall @@ -3646,16 +3391,7 @@ KCHoldPages_0x90 stw r16, PSA.UnheldFreePageCount(r1) KCHoldPages_0xc4 - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCHoldPages_0xe0 - mflr r16 - bl panic - -KCHoldPages_0xe0 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 ble+ ReleaseAndReturnMPCallOOM mr r27, r4 @@ -3753,16 +3489,7 @@ KCUnholdPages_0xc4 lwz r16, PSA.UnheldFreePageCount(r1) add r16, r16, r28 stw r16, PSA.UnheldFreePageCount(r1) - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCUnholdPages_0x114 - mflr r16 - bl panic - -KCUnholdPages_0x114 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall @@ -3799,16 +3526,7 @@ MPCall_91 ; OUTSIDE REFERER bltl- cr5, MPCall_95_0x2e0 bltl- cr5, MPCall_95_0x348 lwz r29, 0x0000(r30) - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, MPCall_91_0x94 - mflr r14 - bl panic - -MPCall_91_0x94 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 mr r8, r4 bl MPCall_95_0x254 li r19, 0x00 @@ -3832,16 +3550,7 @@ MPCall_91_0xac b ReleaseAndReturnZeroFromMPCall MPCall_91_0xcc - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, MPCall_91_0xe8 - mflr r14 - bl panic - -MPCall_91_0xe8 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 b ReleaseAndReturnMPCallOOM @@ -3893,31 +3602,13 @@ MPCall_92_0x9c or r16, r16, r8 and r16, r16, r9 stw r16, 0x0000(r30) - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, MPCall_92_0xd0 - mflr r14 - bl panic - -MPCall_92_0xd0 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall MPCall_92_0xd8 - sync - lwz r14, -0x0b90(r1) - cmpwi cr1, r14, 0x00 - li r14, 0x00 - bne+ cr1, MPCall_92_0xf4 - mflr r14 - bl panic - -MPCall_92_0xf4 - stw r14, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r14 b ReleaseAndReturnMPCallOOM @@ -4000,16 +3691,7 @@ MPCall_94 ; OUTSIDE REFERER bltl- cr5, MPCall_95_0x348 MPCall_94_0xa0 - sync - lwz r16, -0x0b90(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_94_0xbc - mflr r16 - bl panic - -MPCall_94_0xbc - stw r16, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r16 ; r1 = kdp b ReleaseAndReturnZeroFromMPCall @@ -4149,16 +3831,7 @@ MPCall_95_0xe0 mr r8, r29 bl MPCall_95_0x1e4 beq+ Local_Panic - sync - lwz r16, -0x0b90(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_95_0x134 - mflr r16 - bl panic - -MPCall_95_0x134 - stw r16, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r16 lwz r16, 0x0000(r30) clrlwi. r8, r16, 0x1f beq- MPCall_95_0x180 diff --git a/NanoKernel/NKConsoleLog.s b/NanoKernel/NKConsoleLog.s index bfb3da4..6295c9a 100644 --- a/NanoKernel/NKConsoleLog.s +++ b/NanoKernel/NKConsoleLog.s @@ -207,16 +207,7 @@ print_common_0x80 mtspr srr1, r27 print_common_0x8c - sync - lwz r30, -0x0af0(r1) - cmpwi cr1, r30, 0x00 - li r30, 0x00 - bne+ cr1, print_common_0xa8 - mflr r30 - bl panic - -print_common_0xa8 - stw r30, -0x0af0(r1) + _AssertAndRelease PSA.DbugLock, scratch=r30 diff --git a/NanoKernel/NKInterrupts.s b/NanoKernel/NKInterrupts.s index b51f4ec..8e357aa 100644 --- a/NanoKernel/NKInterrupts.s +++ b/NanoKernel/NKInterrupts.s @@ -588,16 +588,7 @@ major_0x02ccc_0x430 major_0x02ccc_0x4a8 mr r8, r31 bl TaskReadyAsPrev - sync - lwz r31, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r31, 0x00 - li r31, 0x00 - bne+ cr1, major_0x02ccc_0x4cc - mflr r31 - bl panic - -major_0x02ccc_0x4cc - stw r31, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r31 mtcr r28 bns- cr6, major_0x02ccc_0x504 lwz r8, 0x0064(r6) @@ -688,16 +679,7 @@ IntDecrementer_0x54 addi r8, r8, 0x01 stw r8, 0x0e8c(r1) bl TimerDispatch - sync - lwz r8, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, IntDecrementer_0x9c - mflr r8 - bl panic - -IntDecrementer_0x9c - stw r8, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r8 ; r6 = ewa bl Restore_r14_r31 @@ -1115,16 +1097,7 @@ IntDSIOtherOther_0x1c8 _Lock PSA.HTABLock, scratch1=r28, scratch2=r31 bl PagingFunc1 - sync - lwz r28, -0x0b90(r1) - cmpwi cr1, r28, 0x00 - li r28, 0x00 - bne+ cr1, IntDSIOtherOther_0x208 - mflr r28 - bl panic - -IntDSIOtherOther_0x208 - stw r28, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r28 mfsprg r28, 2 mtlr r28 beq+ IntDSIOtherOther_0x19c @@ -1195,16 +1168,7 @@ IntMachineCheckMemRetry ; OUTSIDE REFERER IntMachineCheckMemRetry_0x124 sync isync - sync - lwz r28, -0x0b90(r1) - cmpwi cr1, r28, 0x00 - li r28, 0x00 - bne+ cr1, IntMachineCheckMemRetry_0x148 - mflr r28 - bl panic - -IntMachineCheckMemRetry_0x148 - stw r28, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r28 IntMachineCheckMemRetry_0x14c ; OUTSIDE REFERER cmplw r10, r19 @@ -1249,16 +1213,7 @@ IntISI ; OUTSIDE REFERER mr r27, r10 bl PagingFunc1 - sync - lwz r28, -0x0b90(r1) - cmpwi cr1, r28, 0x00 - li r28, 0x00 - bne+ cr1, IntISI_0x50 - mflr r28 - bl panic - -IntISI_0x50 - stw r28, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r28 mfsprg r8, 0 bne- major_0x039dc mfsprg r24, 3 @@ -1392,16 +1347,7 @@ IntDSIOther ; OUTSIDE REFERER mfspr r27, dar bl PagingFunc1 - sync - lwz r28, -0x0b90(r1) - cmpwi cr1, r28, 0x00 - li r28, 0x00 - bne+ cr1, IntDSIOther_0x58 - mflr r28 - bl panic - -IntDSIOther_0x58 - stw r28, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r28 mfsprg r8, 0 bne+ major_0x039dc lmw r14, 0x0038(r8) @@ -1898,16 +1844,7 @@ IntPerfMonitor ; OUTSIDE REFERER bl major_0x0db04 IntPerfMonitor_0x88 - sync - lwz r8, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, IntPerfMonitor_0xa4 - mflr r8 - bl panic - -IntPerfMonitor_0xa4 - stw r8, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r8 ; r6 = ewa bl Restore_r14_r31 @@ -1944,16 +1881,7 @@ IntThermalEvent ; OUTSIDE REFERER bl major_0x0db04 IntThermalEvent_0x68 - sync - lwz r8, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, IntThermalEvent_0x84 - mflr r8 - bl panic - -IntThermalEvent_0x84 - stw r8, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r8 ; r6 = ewa bl Restore_r14_r31 diff --git a/NanoKernel/NKMPCalls.s b/NanoKernel/NKMPCalls.s index bd54c96..9046e95 100644 --- a/NanoKernel/NKMPCalls.s +++ b/NanoKernel/NKMPCalls.s @@ -134,17 +134,7 @@ MPCallBad ; OUTSIDE REFERER ; MPCall_75 ReleaseAndMPCallWasBad ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 b MPCallBad @@ -241,17 +231,7 @@ ReleaseAndMPCallWasBad ; OUTSIDE REFERER ; > r1 = kdp ReleaseAndReturnZeroFromMPCall ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 @@ -347,17 +327,7 @@ ReturnZeroFromMPCall ; OUTSIDE REFERER ; MPCall_95 major_0x0af60 ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 @@ -391,51 +361,21 @@ major_0x0af60_0x20 ; OUTSIDE REFERER ReleaseAndTimeoutMPCall ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 li r3, kMPTimeOutErr b CommonMPCallReturnPath ReleaseAndReturnMPCallTaskAborted ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 li r3, kMPTaskAbortedErr b CommonMPCallReturnPath ReleaseAndReturnMPCallOOM ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 @@ -472,16 +412,7 @@ ReturnMPCallOOM ; OUTSIDE REFERER ; MPCall_52 ReleaseAndReturnMPCallBlueBlocking ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, major_0x0b02c_0x1c - mflr r16 - bl panic - -major_0x0b02c_0x1c - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16 @@ -526,16 +457,7 @@ ReturnMPCallBlueBlocking ; OUTSIDE REFERER ; MPCall_129 major_0x0b054 ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, major_0x0b054_0x1c - mflr r16 - bl panic - -major_0x0b054_0x1c - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16 @@ -643,34 +565,14 @@ ReturnParamErrFromMPCall ; OUTSIDE REFERER ; MPCall_129 ReleaseAndReturnMPCallPrivilegedErr ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 li r3, kMPPrivilegedErr b CommonMPCallReturnPath ReleaseAndReturnMPCallInvalidIDErr ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 @@ -705,16 +607,7 @@ ReturnMPCallInvalidIDErr ; OUTSIDE REFERER ; KCUnholdPages major_0x0b0cc ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, major_0x0b0cc_0x1c - mflr r16 - bl panic - -major_0x0b0cc_0x1c - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16 li r3, -0x725a b CommonMPCallReturnPath @@ -757,17 +650,7 @@ AlternateMPCallReturnPath ; OUTSIDE REFERER b TrulyCommonMPCallReturnPath ReleaseAndReturnMPCall ; OUTSIDE REFERER - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - - bne+ cr1, @dont_panic - mflr r16 - bl panic -@dont_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 @@ -852,16 +735,7 @@ MPCall_0 ; OUTSIDE REFERER bl VMDoSomeIO mr r7, r30 mr r6, r29 - sync - lwz r16, -0x0b90(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_0_0x8c - mflr r16 - bl panic - -MPCall_0_0x8c - stw r16, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r16 _Lock PSA.PoolLock, scratch1=r16, scratch2=r17 @@ -872,31 +746,13 @@ MPCall_0_0x8c ; r8 = anywhere in new page (phys) ; r9 = page_virt bl ExtendPool - sync - lwz r16, -0x0ad0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_0_0xd0 - mflr r16 - bl panic - -MPCall_0_0xd0 - stw r16, -0x0ad0(r1) + _AssertAndRelease PSA.PoolLock, scratch=r16 b ReturnZeroFromMPCall MPCall_0_0xd8 mr r7, r30 mr r6, r29 - sync - lwz r16, -0x0b90(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_0_0xfc - mflr r16 - bl panic - -MPCall_0_0xfc - stw r16, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r16 b ReturnMPCallOOM @@ -1148,16 +1004,7 @@ MPCall_6 ; OUTSIDE REFERER bne+ cr1, ReleaseAndReturnMPCallOOM mr r8, r3 bl DeleteID - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_6_0x68 - mflr r16 - bl panic - -MPCall_6_0x68 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16 mr r8, r31 bl PoolFree b ReturnZeroFromMPCall @@ -1184,16 +1031,7 @@ MPCall_6_0xb4 bl TaskReadyAsPrev mr r8, r31 bl major_0x14af8 - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_6_0xec - mflr r16 - bl panic - -MPCall_6_0xec - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16 b CommonMPCallReturnPath @@ -1238,16 +1076,7 @@ KCYieldWithHint_0x68 KCYieldWithHint_0x7c mr r8, r31 bl major_0x14af8 - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCYieldWithHint_0xa0 - mflr r16 - bl panic - -KCYieldWithHint_0xa0 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16 b CommonMPCallReturnPath @@ -1872,21 +1701,8 @@ KCStartCPU ; OUTSIDE REFERER andi. r8, r8, 0xbfcf stw r8, Task.ContextBlock + ContextBlock.MSR(r31) - sync ; flush pending lwarxen? - -; This feels like cheating with the Sch lock - - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0 - li r16, 0 - - bne+ cr1, @do_not_panic - mflr r16 - bl panic -@do_not_panic - - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 ; Some EWA/KDP stuff I do not understand @@ -1982,16 +1798,7 @@ KCStopScheduling ; OUTSIDE REFERER stw r8, 0x01fc(r31) KCStopScheduling_0x94 - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCStopScheduling_0xb0 - mflr r16 - bl panic - -KCStopScheduling_0xb0 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock + Lock.Count, scratch=r16 b MPCall_6_0x78 @@ -2508,16 +2315,7 @@ MPCall_115_0x64 cmpwi r16, 0x00 beq+ MPCall_115_0x54 stw r30, 0x000c(r31) - sync - lwz r16, -0x0af0(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_115_0x90 - mflr r16 - bl panic - -MPCall_115_0x90 - stw r16, -0x0af0(r1) + _AssertAndRelease PSA.DbugLock, scratch=r16 MPCall_115_0x94 cmpwi r5, 0x00 diff --git a/NanoKernel/NKMacros.s b/NanoKernel/NKMacros.s index 5886507..07e4db5 100644 --- a/NanoKernel/NKMacros.s +++ b/NanoKernel/NKMacros.s @@ -162,6 +162,19 @@ HalfLoadedReg set (®) mr r9, &scratch2 ENDM + MACRO + _AssertAndRelease &lockoffset, &scratch==r18 + sync + lwz &scratch, &lockoffset(r1) + cmpwi cr1, &scratch, 0 + li &scratch, 0 + bne+ cr1, @okay + mflr &scratch + bl panic + +@okay stw &scratch, &lockoffset(r1) + ENDM + MACRO _bset &dest, &src, &bit diff --git a/NanoKernel/NKPoolAllocator.s b/NanoKernel/NKPoolAllocator.s index d55f0ac..29b4ab1 100644 --- a/NanoKernel/NKPoolAllocator.s +++ b/NanoKernel/NKPoolAllocator.s @@ -266,17 +266,8 @@ PoolFree ; OUTSIDE REFERER PoolCommonReturn ; OUTSIDE REFERER mfsprg r18, 0 - sync - lwz r15, PSA.PoolLock + Lock.Count(r1) - cmpwi cr1, r15, 0 - li r15, 0 - bne+ cr1, @no_panic - mflr r15 - bl panic -@no_panic - - stw r15, PSA.PoolLock + Lock.Count(r1) + _AssertAndRelease PSA.PoolLock, scratch=r15 lwz r17, EWA.PoolSavedLR(r18) mtlr r17 diff --git a/NanoKernel/NKPrimaryIntHandlers.s b/NanoKernel/NKPrimaryIntHandlers.s index 7769db9..39abba0 100644 --- a/NanoKernel/NKPrimaryIntHandlers.s +++ b/NanoKernel/NKPrimaryIntHandlers.s @@ -98,31 +98,12 @@ CommonPIHPath_0xc ; OUTSIDE REFERER and r13, r13, r29 @negative - sync - lwz r8, PSA.PIHLock(r1) - cmpwi cr1, r8, 0 - li r8, 0 - - bne+ cr1, @pih_unlocked - mflr r8 - bl panic -@pih_unlocked - - stw r8, PSA.PIHLock(r1) ; redundant + _AssertAndRelease PSA.PIHLock, scratch=r8 bl Restore_r20_r31 b skeleton_key CommonPIHPath_0x78 - sync - lwz r8, -0x0b70(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, CommonPIHPath_0x94 - mflr r8 - bl panic - -CommonPIHPath_0x94 - stw r8, -0x0b70(r1) + _AssertAndRelease PSA.PIHLock, scratch=r8 bl Save_r14_r19 _Lock PSA.SchLock, scratch1=r8, scratch2=r9 @@ -139,16 +120,7 @@ CommonPIHPath_0x94 stw r9, 0x0010(r30) stw r22, 0x0014(r30) bl major_0x0db04 - sync - lwz r8, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, CommonPIHPath_0xf4 - mflr r8 - bl panic - -CommonPIHPath_0xf4 - stw r8, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r8 ; r6 = ewa bl Restore_r14_r31 @@ -158,16 +130,7 @@ CommonPIHPath_0x100 li r27, 0x00 lwz r23, 0x067c(r1) stw r27, -0x0428(r1) - sync - lwz r8, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, CommonPIHPath_0x128 - mflr r8 - bl panic - -CommonPIHPath_0x128 - stw r8, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r8 bl Restore_r14_r19 _Lock PSA.PIHLock, scratch1=r8, scratch2=r9 @@ -175,18 +138,7 @@ CommonPIHPath_0x128 b CommonPIHPath_0xc CommonPIHPath_0x14c - sync - lwz r8, -0x0b70(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, CommonPIHPath_0x168 - mflr r8 - bl panic - -CommonPIHPath_0x168 - - ; This is where we have some real fun... - stw r8, -0x0b70(r1) + _AssertAndRelease PSA.PIHLock, scratch=r8 bl Save_r14_r19 _Lock PSA.SchLock, scratch1=r16, scratch2=r17 @@ -245,16 +197,7 @@ CommonPIHPath_0x218 CommonPIHPath_0x230 mr r8, r31 bl major_0x14af8 - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, CommonPIHPath_0x254 - mflr r16 - bl panic - -CommonPIHPath_0x254 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 ; r6 = ewa bl Restore_r14_r31 diff --git a/NanoKernel/NKQueues.s b/NanoKernel/NKQueues.s index 3e98871..f4997f7 100644 --- a/NanoKernel/NKQueues.s +++ b/NanoKernel/NKQueues.s @@ -1602,16 +1602,7 @@ NKDeleteTimer ; OUTSIDE REFERER bl major_0x136c8 NKDeleteTimer_0x48 - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, NKDeleteTimer_0x64 - mflr r16 - bl panic - -NKDeleteTimer_0x64 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 lwz r8, 0x001c(r31) cmpwi r8, 0x00 bnel- PoolFree diff --git a/NanoKernel/NKRTASCalls.s b/NanoKernel/NKRTASCalls.s index 8cca070..bd7b74f 100644 --- a/NanoKernel/NKRTASCalls.s +++ b/NanoKernel/NKRTASCalls.s @@ -172,16 +172,7 @@ kcRTASDispatch_0x190 lwz r29, 0x01ec(r6) lwz r30, 0x01f4(r6) lwz r31, 0x01fc(r6) - sync - lwz r8, -0x0b10(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, kcRTASDispatch_0x268 - mflr r8 - bl panic - -kcRTASDispatch_0x268 - stw r8, -0x0b10(r1) + _AssertAndRelease PSA.RTASLock, scratch=r8 li r3, 0x00 b skeleton_key diff --git a/NanoKernel/NKScheduler.s b/NanoKernel/NKScheduler.s index 493c82e..70914e1 100644 --- a/NanoKernel/NKScheduler.s +++ b/NanoKernel/NKScheduler.s @@ -1267,16 +1267,7 @@ major_0x142dc_0x1bc lbz r28, 0x0019(r31) stb r27, 0x0018(r31) stb r28, -0x0117(r14) - sync - lwz r27, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r27, 0x00 - li r27, 0x00 - bne+ cr1, major_0x142dc_0x1e8 - mflr r27 - bl panic - -major_0x142dc_0x1e8 - stw r27, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r27 ; r6 = ewa bl Restore_r14_r31 @@ -1587,16 +1578,7 @@ major_0x14548_0x24c lfd f31, 0x02f8(r6) major_0x14548_0x380 - sync - lwz r8, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, major_0x14548_0x39c - mflr r8 - bl panic - -major_0x14548_0x39c - stw r8, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r8 ; sprg0 = for r1 and r6 ; r1 = kdp @@ -2182,16 +2164,7 @@ StopProcessor stw r17, 0x0008(r18) stw r17, 0x000c(r16) bl TasksFuncThatIsNotAMPCall - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, StopProcessor_0xa0 - mflr r16 - bl panic - -StopProcessor_0xa0 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 _log 'SIGP kStopProcessor^n' li r3, 0x03 lhz r4, 0x022a(r31) diff --git a/NanoKernel/NKTasks.s b/NanoKernel/NKTasks.s index 525ad60..359999a 100644 --- a/NanoKernel/NKTasks.s +++ b/NanoKernel/NKTasks.s @@ -398,16 +398,7 @@ MPCall_9 ; OUTSIDE REFERER stb r17, 0x0019(r31) mr r8, r31 bl major_0x14af8_0xa0 - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, MPCall_9_0x8c - mflr r16 - bl panic - -MPCall_9_0x8c - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 subi r10, r10, 4 b MPCall_6_0x78 @@ -728,16 +719,7 @@ KCThrowException_0xb8 stb r17, 0x0019(r31) mr r8, r31 bl major_0x14af8_0xa0 - sync - lwz r16, PSA.SchLock + Lock.Count(r1) - cmpwi cr1, r16, 0x00 - li r16, 0x00 - bne+ cr1, KCThrowException_0xf0 - mflr r16 - bl panic - -KCThrowException_0xf0 - stw r16, PSA.SchLock + Lock.Count(r1) + _AssertAndRelease PSA.SchLock, scratch=r16 subi r10, r10, 4 b MPCall_6_0x78 diff --git a/NanoKernel/NKThud.s b/NanoKernel/NKThud.s index b592a45..80db563 100644 --- a/NanoKernel/NKThud.s +++ b/NanoKernel/NKThud.s @@ -513,16 +513,9 @@ panic_common _log ' - wish me luck.^n' bl prereturn lwz r8, 0x0904(r1) - sync - lwz r9, PSA.ThudLock + Lock.Count(r1) - cmpwi cr1, r9, 0x00 - li r9, 0x00 - bne+ cr1, @0x7b4 - mflr r9 - bl panic -@0x7b4 - stw r9, PSA.ThudLock + Lock.Count(r1) + _AssertAndRelease PSA.ThudLock, scratch=r9 + mtlr r8 blr diff --git a/NanoKernel/NKVMCalls.s b/NanoKernel/NKVMCalls.s index 31cf116..cdefee5 100644 --- a/NanoKernel/NKVMCalls.s +++ b/NanoKernel/NKVMCalls.s @@ -188,16 +188,7 @@ VMReturn ; OUTSIDE REFERER lwz r16, 0x0040(r8) lwz r7, -0x0010(r8) lwz r6, -0x0014(r8) - sync - lwz r8, -0x0b90(r1) - cmpwi cr1, r8, 0x00 - li r8, 0x00 - bne+ cr1, VMReturn_0x4c - mflr r8 - bl panic - -VMReturn_0x4c - stw r8, -0x0b90(r1) + _AssertAndRelease PSA.HTABLock, scratch=r8 b skeleton_key