From 73c3eece9490fa3e4f4745508b15877c631078b0 Mon Sep 17 00:00:00 2001 From: Elliot Nunn Date: Wed, 13 Dec 2017 12:10:54 +0800 Subject: [PATCH] Insert calls to known linked-list macros The presence of InitList, InsertAsNext, InsertAsPrev and RemoveFromList calls should make some hitherto unexplored code easier to read. --- NanoKernel/NKAddressSpaceMPCalls.s | 78 +++-------------- NanoKernel/NKInterrupts.s | 12 +-- NanoKernel/NKMPCalls.s | 14 +-- NanoKernel/NKPrimaryIntHandlers.s | 8 +- NanoKernel/NKQueues.s | 132 ++++------------------------- NanoKernel/NKScheduler.s | 28 +----- NanoKernel/NKTasks.s | 58 ++----------- NanoKernel/NKTimers.s | 32 +------ 8 files changed, 50 insertions(+), 312 deletions(-) diff --git a/NanoKernel/NKAddressSpaceMPCalls.s b/NanoKernel/NKAddressSpaceMPCalls.s index 40e43f0..37821e6 100644 --- a/NanoKernel/NKAddressSpaceMPCalls.s +++ b/NanoKernel/NKAddressSpaceMPCalls.s @@ -1122,19 +1122,11 @@ createarea_0x374 createarea_0x39c addi r19, r31, 0x54 stw r20, 0x0000(r19) - stw r20, 0x000c(r19) - lwz r16, 0x0008(r20) - stw r16, 0x0008(r19) - stw r19, 0x000c(r16) - stw r19, 0x0008(r20) + InsertAsNext r19, r20, scratch=r16 createarea_0x3b8 addi r16, r31, 0x90 - lis r17, 0x6665 - stw r16, 0x0008(r16) - ori r17, r17, 0x6e63 - stw r16, 0x000c(r16) - stw r17, 0x0004(r16) + InitList r16, 'fenc', scratch=r17 lwz r16, 0x0020(r31) lwz r17, Area.Flags(r31) rlwinm. r8, r16, 0, 16, 16 @@ -1240,13 +1232,7 @@ createarea_0x4e8 mr. r18, r27 beq- createarea_0x5a0 lwz r16, -0x0448(r1) - lwz r17, 0x0008(r16) - lwz r19, 0x000c(r16) - stw r17, 0x0008(r19) - stw r19, 0x000c(r17) - li r17, 0x00 - stw r17, 0x0008(r16) - stw r17, 0x000c(r16) + RemoveFromList r16, scratch1=r17, scratch2=r19 addi r18, r18, -0x01 stw r16, 0x0040(r31) cmpwi r18, 0x00 @@ -1259,13 +1245,7 @@ createarea_0x4e8 b createarea_0x5a0 createarea_0x564 - lwz r19, 0x0008(r17) - lwz r20, 0x000c(r17) - stw r19, 0x0008(r20) - stw r20, 0x000c(r19) - li r19, 0x00 - stw r19, 0x0008(r17) - stw r19, 0x000c(r17) + RemoveFromList r17, scratch1=r19, scratch2=r20 addi r18, r18, -0x01 stwu r17, 0x0004(r16) mr r8, r17 @@ -1279,13 +1259,7 @@ createarea_0x5a0 mr. r18, r29 beq- createarea_0x62c lwz r16, -0x0448(r1) - lwz r17, 0x0008(r16) - lwz r19, 0x000c(r16) - stw r17, 0x0008(r19) - stw r19, 0x000c(r17) - li r17, 0x00 - stw r17, 0x0008(r16) - stw r17, 0x000c(r16) + RemoveFromList r16, scratch1=r17, scratch2=r19 addi r18, r18, -0x01 stw r16, 0x003c(r31) cmpwi r18, 0x00 @@ -1298,13 +1272,7 @@ createarea_0x5a0 b createarea_0x62c createarea_0x5f0 - lwz r19, 0x0008(r17) - lwz r20, 0x000c(r17) - stw r19, 0x0008(r20) - stw r20, 0x000c(r19) - li r19, 0x00 - stw r19, 0x0008(r17) - stw r19, 0x000c(r17) + RemoveFromList r17, scratch1=r19, scratch2=r20 addi r18, r18, -0x01 stwu r17, 0x0004(r16) mr r8, r17 @@ -1324,20 +1292,12 @@ createarea_0x64c lwz r16, 0x0044(r31) addi r17, r31, 0x44 stw r16, 0x0000(r17) - stw r16, 0x0008(r17) - lwz r18, 0x000c(r16) - stw r18, 0x000c(r17) - stw r17, 0x0008(r18) - stw r17, 0x000c(r16) + InsertAsPrev r17, r16, scratch=r18 b major_0x10320_0x94 createarea_0x67c addi r16, r31, 0x44 - lis r17, 0x414b - stw r16, 0x0008(r16) - ori r17, r17, 0x4120 - stw r16, 0x000c(r16) - stw r17, 0x0004(r16) + InitList r16, 'AKA ', scratch=r17 b major_0x10320_0x94 @@ -1433,13 +1393,7 @@ major_0x10320 ; OUTSIDE REFERER major_0x10320_0x20 ; OUTSIDE REFERER addi r19, r31, 0x54 - lwz r16, 0x0008(r19) - lwz r17, 0x000c(r19) - stw r16, 0x0008(r17) - stw r17, 0x000c(r16) - li r16, 0x00 - stw r16, 0x0008(r19) - stw r16, 0x000c(r19) + RemoveFromList r19, scratch1=r16, scratch2=r17 lwz r16, Area.Flags(r31) lwz r8, 0x0040(r31) rlwinm. r16, r16, 0, 25, 25 @@ -2016,11 +1970,7 @@ MPCall_130_0x11c ori r17, r17, 0x4e43 stw r17, 0x0004(r16) stw r18, 0x0000(r16) - stw r18, 0x0008(r16) - lwz r19, 0x000c(r18) - stw r19, 0x000c(r16) - stw r16, 0x0008(r19) - stw r16, 0x000c(r18) + InsertAsPrev r16, r18, scratch=r19 li r8, 0x00 addi r9, r16, 0x14 @@ -2851,13 +2801,7 @@ MPCall_83_0x90 ; OUTSIDE REFERER lwz r8, -0x0448(r1) cmpw r8, r18 beq- MPCall_83_0xec - 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) + RemoveFromList r8, scratch1=r16, scratch2=r17 lwz r16, -0x0430(r1) addi r16, r16, -0x01 stw r16, -0x0430(r1) diff --git a/NanoKernel/NKInterrupts.s b/NanoKernel/NKInterrupts.s index 8e357aa..32080a8 100644 --- a/NanoKernel/NKInterrupts.s +++ b/NanoKernel/NKInterrupts.s @@ -533,11 +533,7 @@ major_0x02ccc_0x3d4 addi r17, r31, 0x08 addi r18, r31, 160 stw r18, 0x0000(r17) - stw r18, 0x0008(r17) - lwz r19, 0x000c(r18) - stw r19, 0x000c(r17) - stw r17, 0x0008(r19) - stw r17, 0x000c(r18) + InsertAsPrev r17, r18, scratch=r19 li r17, 0x01 ori r16, r16, 0x2000 stw r17, 0x00b0(r31) @@ -563,11 +559,7 @@ major_0x02ccc_0x430 addi r17, r31, 0x08 addi r18, r31, 160 stw r18, 0x0000(r17) - stw r18, 0x0008(r17) - lwz r19, 0x000c(r18) - stw r19, 0x000c(r17) - stw r17, 0x0008(r19) - stw r17, 0x000c(r18) + InsertAsPrev r17, r18, scratch=r19 li r17, 0x01 stw r17, 0x00b0(r31) lwz r27, 0x0000(r29) diff --git a/NanoKernel/NKMPCalls.s b/NanoKernel/NKMPCalls.s index 9046e95..6a40871 100644 --- a/NanoKernel/NKMPCalls.s +++ b/NanoKernel/NKMPCalls.s @@ -1509,11 +1509,7 @@ KCCreateCpuStruct_0x68 stw r17, 0x0020(r30) addi r16, r31, 0x08 stw r30, 0x0000(r16) - stw r30, 0x0008(r16) - lwz r17, 0x000c(r30) - stw r17, 0x000c(r16) - stw r16, 0x0008(r17) - stw r16, 0x000c(r30) + InsertAsPrev r16, r30, scratch=r17 lisori r8, 11 lisori r8, 6 @@ -1600,13 +1596,7 @@ MPCall_43 ; OUTSIDE REFERER lwz r18, 0x0020(r17) addi r18, r18, -0x01 stw r18, 0x0020(r17) - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 mr r8, r31 bl PoolFree mr r8, r3 diff --git a/NanoKernel/NKPrimaryIntHandlers.s b/NanoKernel/NKPrimaryIntHandlers.s index 39abba0..0836690 100644 --- a/NanoKernel/NKPrimaryIntHandlers.s +++ b/NanoKernel/NKPrimaryIntHandlers.s @@ -169,13 +169,7 @@ CommonPIHPath_0x1d0 CommonPIHPath_0x1dc addi r16, r31, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lbz r17, 0x0037(r31) cmpwi r17, 0x01 bne- CommonPIHPath_0x210 diff --git a/NanoKernel/NKQueues.s b/NanoKernel/NKQueues.s index f4997f7..6f74081 100644 --- a/NanoKernel/NKQueues.s +++ b/NanoKernel/NKQueues.s @@ -68,13 +68,7 @@ MPCall_16_0x2c 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) + RemoveFromList r8, scratch1=r16, scratch2=r17 bl PoolFree b MPCall_16_0x2c @@ -109,13 +103,7 @@ MPCall_16_0x80 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 addi r8, r16, -0x08 bl TaskReadyAsPrev bl major_0x14af8 @@ -253,11 +241,7 @@ MPCall_17_0x6c 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) + InsertAsPrev r8, r17, scratch=r16 lwz r18, 0x0030(r31) addi r18, r18, 0x01 stw r18, 0x0030(r31) @@ -280,13 +264,7 @@ major_0x0c8b4 ; OUTSIDE REFERER 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lwz r18, 0x002c(r31) addi r18, r18, -0x01 stw r18, 0x002c(r31) @@ -325,13 +303,7 @@ MPCall_18 ; OUTSIDE REFERER 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lwz r18, 0x0030(r31) addi r18, r18, -0x01 stw r18, 0x0030(r31) @@ -371,11 +343,7 @@ MPCall_18_0xc4 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) + InsertAsPrev r17, r16, scratch=r18 lwz r18, 0x002c(r31) addi r18, r18, 0x01 stw r18, 0x002c(r31) @@ -446,11 +414,7 @@ MPCall_20 ; OUTSIDE REFERER 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) + InitList r31, Semaphore.kSignature, scratch=r16 _Lock PSA.SchLock, scratch1=r16, scratch2=r17 @@ -521,11 +485,7 @@ MPCall_23_0x68 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) + InsertAsPrev r17, r16, scratch=r18 lwz r18, 0x001c(r31) addi r18, r18, 0x01 stw r18, 0x001c(r31) @@ -628,13 +588,7 @@ major_0x0ccf4 ; OUTSIDE REFERER 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lwz r18, 0x001c(r31) addi r18, r18, -0x01 stw r18, 0x001c(r31) @@ -696,13 +650,7 @@ MPCall_21_0x34 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 addi r8, r16, -0x08 bl TaskReadyAsPrev bl major_0x14af8 @@ -726,11 +674,7 @@ MPCall_25 ; OUTSIDE REFERER 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) + InitList r31, CriticalRegion.kSignature, scratch=r16 _Lock PSA.SchLock, scratch1=r16, scratch2=r17 @@ -834,11 +778,7 @@ MPCall_27_0xb4 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) + InsertAsPrev r18, r31, scratch=r19 lwz r18, 0x0020(r31) addi r18, r18, 0x01 stw r18, 0x0020(r31) @@ -953,13 +893,7 @@ MPCall_28 ; OUTSIDE REFERER 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lwz r18, 0x0020(r31) addi r18, r18, -0x01 stw r18, 0x0020(r31) @@ -1013,13 +947,7 @@ MPCall_26_0x34 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 addi r8, r16, -0x08 bl TaskReadyAsPrev bl major_0x14af8 @@ -1139,13 +1067,7 @@ MPDeleteEvent_0x34 MPDeleteEvent_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) + RemoveFromList r16, scratch1=r17, scratch2=r18 addi r8, r16, -0x08 bl TaskReadyAsPrev bl major_0x14af8 @@ -1215,13 +1137,7 @@ major_0x0d35c ; OUTSIDE REFERER 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lwz r18, 0x001c(r31) addi r18, r18, -0x01 stw r18, 0x001c(r31) @@ -1288,13 +1204,7 @@ major_0x0d35c_0x118 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lbz r17, 0x0037(r26) cmpwi r17, 0x01 bne- major_0x0d35c_0x17c @@ -2112,13 +2022,7 @@ major_0x0dce8 ; OUTSIDE REFERER 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lbz r17, 0x0037(r19) cmpwi r17, 0x01 bne- major_0x0dce8_0x60 diff --git a/NanoKernel/NKScheduler.s b/NanoKernel/NKScheduler.s index 70914e1..a215f3c 100644 --- a/NanoKernel/NKScheduler.s +++ b/NanoKernel/NKScheduler.s @@ -1205,13 +1205,7 @@ major_0x142dc_0xd8 ; OUTSIDE REFERER cmpwi r28, 0x00 lwz r26, 0x0008(r30) beq- major_0x142dc_0x140 - lwz r28, 0x0008(r29) - lwz r27, 0x000c(r29) - stw r28, 0x0008(r27) - stw r27, 0x000c(r28) - li r28, 0x00 - stw r28, 0x0008(r29) - stw r28, 0x000c(r29) + RemoveFromList r29, scratch1=r28, scratch2=r27 lwz r27, 0x001c(r30) lwz r28, 0x0014(r26) subf r28, r27, r28 @@ -1239,11 +1233,7 @@ major_0x142dc_0x140 addi r25, r1, -0xa34 addi r26, r30, 0x08 stw r25, 0x0000(r26) - stw r25, 0x0008(r26) - lwz r27, 0x000c(r25) - stw r27, 0x000c(r26) - stw r26, 0x0008(r27) - stw r26, 0x000c(r25) + InsertAsPrev r26, r25, scratch=r27 b major_0x142dc_0x58 major_0x142dc_0x184 @@ -2012,13 +2002,7 @@ major_0x14bcc bl Printw _log '^n' addi r16, r31, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 li r16, 0x02 stb r16, 0x0018(r31) lwz r16, 0x0064(r31) @@ -2158,11 +2142,7 @@ StopProcessor addi r16, r1, -0xa44 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) + InsertAsPrev r17, r16, scratch=r18 bl TasksFuncThatIsNotAMPCall _AssertAndRelease PSA.SchLock, scratch=r16 _log 'SIGP kStopProcessor^n' diff --git a/NanoKernel/NKTasks.s b/NanoKernel/NKTasks.s index 359999a..6d0a6f5 100644 --- a/NanoKernel/NKTasks.s +++ b/NanoKernel/NKTasks.s @@ -342,13 +342,7 @@ MPCall_8 ; OUTSIDE REFERER stw r16, 0x0090(r31) stw r17, 0x0094(r31) addi r16, r31, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 mr r8, r31 bl TaskReadyAsPrev bl CalculateTimeslice @@ -415,13 +409,7 @@ MPCall_9_0xb4 ori r16, r16, 0x02 stw r16, 0x0064(r31) addi r16, r31, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 b MPCall_9_0xf0 MPCall_9_0xe0 @@ -439,11 +427,7 @@ MPCall_9_0xfc addi r16, r1, -0xa44 addi r17, r31, 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) + InsertAsPrev r17, r16, scratch=r18 lbz r8, 0x0037(r31) cmpwi r8, 0x01 bne- MPCall_9_0x130 @@ -505,13 +489,7 @@ TasksFuncThatIsNotAMPCall mflr r27 mr r26, r8 addi r16, r26, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 lwz r8, 0x0000(r26) bl DeleteID lwz r8, 0x00a0(r26) @@ -703,11 +681,7 @@ KCThrowException_0x70 addi r16, r1, -0xa34 addi r17, r31, 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) + InsertAsPrev r17, r16, scratch=r18 li r3, -0x726c b ReleaseAndReturnMPCall @@ -791,13 +765,7 @@ MPCall_58_0x88 MPCall_58_0xb4 addi r16, r31, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 mr r8, r31 bl TaskReadyAsPrev bl major_0x14af8 @@ -812,11 +780,7 @@ FuncExportedFromTasks ; OUTSIDE REFERER addi r16, r1, -0xa34 addi r17, r31, 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) + InsertAsPrev r17, r16, scratch=r18 li r8, 0x1c bl PoolAlloc_with_crset lwz r29, 0x0064(r31) @@ -853,13 +817,7 @@ MPCall_58_0x158 mr. r8, r28 bnel- PoolFree addi r16, r31, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 b MPCall_9_0x98 MPCall_58_0x184 diff --git a/NanoKernel/NKTimers.s b/NanoKernel/NKTimers.s index 5d10f14..54c3f60 100644 --- a/NanoKernel/NKTimers.s +++ b/NanoKernel/NKTimers.s @@ -195,13 +195,7 @@ TimerDispatch_0xcc bgt- cr1, TimerDispatch_0x188 TimerDispatch_0xec - lwz r19, 0x0008(r30) - lwz r20, 0x000c(r30) - stw r19, 0x0008(r20) - stw r20, 0x000c(r19) - li r19, 0x00 - stw r19, 0x0008(r30) - stw r19, 0x000c(r30) + RemoveFromList r30, scratch1=r19, scratch2=r20 lwz r19, 0x064c(r1) lbz r20, 0x0014(r30) rlwimi r19, r20, 2, 23, 29 @@ -376,13 +370,7 @@ major_0x13120 ; OUTSIDE REFERER stw r16, 0x011c(r19) bne- major_0x13120_0x64 addi r16, r8, 0x08 - lwz r17, 0x0008(r16) - lwz r19, 0x000c(r16) - stw r17, 0x0008(r19) - stw r19, 0x000c(r17) - li r17, 0x00 - stw r17, 0x0008(r16) - stw r17, 0x000c(r16) + RemoveFromList r16, scratch1=r17, scratch2=r19 li r17, 0x01 stb r17, 0x0019(r8) bl TaskReadyAsPrev @@ -454,13 +442,7 @@ major_0x1318c_0x8c major_0x1318c_0x98 lwz r8, 0x0018(r30) addi r16, r8, 0x08 - 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) + RemoveFromList r16, scratch1=r17, scratch2=r18 bl TaskReadyAsPrev @@ -920,13 +902,7 @@ major_0x136c8 ; OUTSIDE REFERER cmpwi r16, 0x00 lwz r18, -0x0a7c(r1) beq+ Local_Panic - 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) + RemoveFromList r8, scratch1=r16, scratch2=r17 li r16, 0x00 cmpw r18, r8 stb r16, 0x0017(r8)