diff options
Diffstat (limited to 'asm/SDK/NWC24/NWC24Time.s')
-rw-r--r-- | asm/SDK/NWC24/NWC24Time.s | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/asm/SDK/NWC24/NWC24Time.s b/asm/SDK/NWC24/NWC24Time.s new file mode 100644 index 0000000..3660730 --- /dev/null +++ b/asm/SDK/NWC24/NWC24Time.s @@ -0,0 +1,141 @@ +.include "macros.inc"
+
+.section .text, "ax" # 0x80006980 - 0x803E1E60
+
+.global NWC24iSetRtcCounter
+NWC24iSetRtcCounter:
+/* 803044A0 00300100 94 21 FF D0 */ stwu r1, -0x30(r1)
+/* 803044A4 00300104 7C 08 02 A6 */ mflr r0
+/* 803044A8 00300108 90 01 00 34 */ stw r0, 0x34(r1)
+/* 803044AC 0030010C 39 61 00 30 */ addi r11, r1, 0x30
+/* 803044B0 00300110 4B EC 2C 79 */ bl _savegpr_27
+/* 803044B4 00300114 3F C0 80 58 */ lis r30, lbl_8057E920@ha
+/* 803044B8 00300118 7C 7B 1B 78 */ mr r27, r3
+/* 803044BC 0030011C 7C 9C 23 78 */ mr r28, r4
+/* 803044C0 00300120 3B DE E9 20 */ addi r30, r30, lbl_8057E920@l
+/* 803044C4 00300124 4B F6 CE 35 */ bl OSGetCurrentThread
+/* 803044C8 00300128 2C 03 00 00 */ cmpwi r3, 0
+/* 803044CC 0030012C 40 82 00 0C */ bne lbl_803044D8
+/* 803044D0 00300130 38 60 FF FF */ li r3, -1
+/* 803044D4 00300134 48 00 00 08 */ b lbl_803044DC
+lbl_803044D8:
+/* 803044D8 00300138 38 60 00 00 */ li r3, 0
+lbl_803044DC:
+/* 803044DC 0030013C 2C 03 00 00 */ cmpwi r3, 0
+/* 803044E0 00300140 40 80 00 08 */ bge lbl_803044E8
+/* 803044E4 00300144 48 00 00 EC */ b lbl_803045D0
+lbl_803044E8:
+/* 803044E8 00300148 80 0D AF C0 */ lwz r0, lbl_80640280-_SDA_BASE_(r13)
+/* 803044EC 0030014C 2C 00 00 00 */ cmpwi r0, 0
+/* 803044F0 00300150 40 82 00 50 */ bne lbl_80304540
+/* 803044F4 00300154 4B F6 A2 69 */ bl OSDisableInterrupts
+/* 803044F8 00300158 80 0D AF C0 */ lwz r0, lbl_80640280-_SDA_BASE_(r13)
+/* 803044FC 0030015C 7C 7F 1B 78 */ mr r31, r3
+/* 80304500 00300160 2C 00 00 00 */ cmpwi r0, 0
+/* 80304504 00300164 40 82 00 34 */ bne lbl_80304538
+/* 80304508 00300168 38 7E 00 80 */ addi r3, r30, 0x80
+/* 8030450C 0030016C 4B F6 B4 05 */ bl OSInitMutex
+/* 80304510 00300170 38 7E 00 A0 */ addi r3, r30, 0xa0
+/* 80304514 00300174 38 80 00 00 */ li r4, 0
+/* 80304518 00300178 38 A0 00 20 */ li r5, 0x20
+/* 8030451C 0030017C 4B CF FB E9 */ bl memset
+/* 80304520 00300180 38 7E 00 C0 */ addi r3, r30, 0xc0
+/* 80304524 00300184 38 80 00 00 */ li r4, 0
+/* 80304528 00300188 38 A0 00 20 */ li r5, 0x20
+/* 8030452C 0030018C 4B CF FB D9 */ bl memset
+/* 80304530 00300190 38 00 00 01 */ li r0, 1
+/* 80304534 00300194 90 0D AF C0 */ stw r0, lbl_80640280-_SDA_BASE_(r13)
+lbl_80304538:
+/* 80304538 00300198 7F E3 FB 78 */ mr r3, r31
+/* 8030453C 0030019C 4B F6 A2 49 */ bl OSRestoreInterrupts
+lbl_80304540:
+/* 80304540 003001A0 38 7E 00 80 */ addi r3, r30, 0x80
+/* 80304544 003001A4 4B F6 B4 05 */ bl OSLockMutex
+/* 80304548 003001A8 3F E0 80 44 */ lis r31, lbl_8044655C@ha
+/* 8030454C 003001AC 3C 80 80 44 */ lis r4, lbl_80446548@ha
+/* 80304550 003001B0 38 7F 65 5C */ addi r3, r31, lbl_8044655C@l
+/* 80304554 003001B4 38 A1 00 08 */ addi r5, r1, 8
+/* 80304558 003001B8 38 84 65 48 */ addi r4, r4, lbl_80446548@l
+/* 8030455C 003001BC 38 C0 00 00 */ li r6, 0
+/* 80304560 003001C0 48 00 01 1D */ bl NWC24iOpenResourceManager
+/* 80304564 003001C4 2C 03 00 00 */ cmpwi r3, 0
+/* 80304568 003001C8 7C 7D 1B 78 */ mr r29, r3
+/* 8030456C 003001CC 41 80 00 58 */ blt lbl_803045C4
+/* 80304570 003001D0 38 DE 00 A0 */ addi r6, r30, 0xa0
+/* 80304574 003001D4 93 7E 00 A0 */ stw r27, 0xa0(r30)
+/* 80304578 003001D8 80 81 00 08 */ lwz r4, 8(r1)
+/* 8030457C 003001DC 38 7F 65 5C */ addi r3, r31, 0x655c
+/* 80304580 003001E0 93 86 00 04 */ stw r28, 4(r6)
+/* 80304584 003001E4 39 1E 00 C0 */ addi r8, r30, 0xc0
+/* 80304588 003001E8 38 A0 00 17 */ li r5, 0x17
+/* 8030458C 003001EC 38 E0 00 20 */ li r7, 0x20
+/* 80304590 003001F0 39 20 00 20 */ li r9, 0x20
+/* 80304594 003001F4 48 00 01 95 */ bl NWC24iIoctlResourceManager
+/* 80304598 003001F8 2C 03 00 00 */ cmpwi r3, 0
+/* 8030459C 003001FC 7C 7D 1B 78 */ mr r29, r3
+/* 803045A0 00300200 41 80 00 08 */ blt lbl_803045A8
+/* 803045A4 00300204 83 BE 00 C0 */ lwz r29, 0xc0(r30)
+lbl_803045A8:
+/* 803045A8 00300208 3C 60 80 44 */ lis r3, lbl_8044655C@ha
+/* 803045AC 0030020C 80 81 00 08 */ lwz r4, 8(r1)
+/* 803045B0 00300210 38 63 65 5C */ addi r3, r3, lbl_8044655C@l
+/* 803045B4 00300214 48 00 01 41 */ bl NWC24iCloseResourceManager
+/* 803045B8 00300218 2C 1D 00 00 */ cmpwi r29, 0
+/* 803045BC 0030021C 41 80 00 08 */ blt lbl_803045C4
+/* 803045C0 00300220 7C 7D 1B 78 */ mr r29, r3
+lbl_803045C4:
+/* 803045C4 00300224 38 7E 00 80 */ addi r3, r30, 0x80
+/* 803045C8 00300228 4B F6 B4 5D */ bl OSUnlockMutex
+/* 803045CC 0030022C 7F A3 EB 78 */ mr r3, r29
+lbl_803045D0:
+/* 803045D0 00300230 39 61 00 30 */ addi r11, r1, 0x30
+/* 803045D4 00300234 4B EC 2B A1 */ bl _restgpr_27
+/* 803045D8 00300238 80 01 00 34 */ lwz r0, 0x34(r1)
+/* 803045DC 0030023C 7C 08 03 A6 */ mtlr r0
+/* 803045E0 00300240 38 21 00 30 */ addi r1, r1, 0x30
+/* 803045E4 00300244 4E 80 00 20 */ blr
+
+.global NWC24iSynchronizeRtcCounter
+NWC24iSynchronizeRtcCounter:
+/* 803045E8 00300248 94 21 FF F0 */ stwu r1, -0x10(r1)
+/* 803045EC 0030024C 7C 08 02 A6 */ mflr r0
+/* 803045F0 00300250 90 01 00 14 */ stw r0, 0x14(r1)
+/* 803045F4 00300254 93 E1 00 0C */ stw r31, 0xc(r1)
+/* 803045F8 00300258 93 C1 00 08 */ stw r30, 8(r1)
+/* 803045FC 0030025C 7C 7E 1B 78 */ mr r30, r3
+lbl_80304600:
+/* 80304600 00300260 4B FE 63 ED */ bl SCCheckStatus
+/* 80304604 00300264 28 03 00 02 */ cmplwi r3, 2
+/* 80304608 00300268 40 82 00 0C */ bne lbl_80304614
+/* 8030460C 0030026C 38 60 FF FF */ li r3, -1
+/* 80304610 00300270 48 00 00 34 */ b lbl_80304644
+lbl_80304614:
+/* 80304614 00300274 2C 03 00 00 */ cmpwi r3, 0
+/* 80304618 00300278 40 82 FF E8 */ bne lbl_80304600
+/* 8030461C 0030027C 4B FE 7F A5 */ bl SCGetCounterBias
+/* 80304620 00300280 7C 7F 1B 78 */ mr r31, r3
+/* 80304624 00300284 4B F6 E1 95 */ bl OSGetTime
+/* 80304628 00300288 3C C0 80 00 */ lis r6, 0x800000F8@ha
+/* 8030462C 0030028C 38 A0 00 00 */ li r5, 0
+/* 80304630 00300290 80 06 00 F8 */ lwz r0, 0x800000F8@l(r6)
+/* 80304634 00300294 54 06 F0 BE */ srwi r6, r0, 2
+/* 80304638 00300298 4B EC 2C 41 */ bl __div2i
+/* 8030463C 0030029C 7F FF 20 10 */ subfc r31, r31, r4
+/* 80304640 003002A0 38 60 00 00 */ li r3, 0
+lbl_80304644:
+/* 80304644 003002A4 2C 03 00 00 */ cmpwi r3, 0
+/* 80304648 003002A8 41 82 00 08 */ beq lbl_80304650
+/* 8030464C 003002AC 48 00 00 18 */ b lbl_80304664
+lbl_80304650:
+/* 80304650 003002B0 7C 1E 00 D0 */ neg r0, r30
+/* 80304654 003002B4 7F E3 FB 78 */ mr r3, r31
+/* 80304658 003002B8 7C 00 F3 78 */ or r0, r0, r30
+/* 8030465C 003002BC 54 04 0F FE */ srwi r4, r0, 0x1f
+/* 80304660 003002C0 4B FF FE 41 */ bl NWC24iSetRtcCounter
+lbl_80304664:
+/* 80304664 003002C4 80 01 00 14 */ lwz r0, 0x14(r1)
+/* 80304668 003002C8 83 E1 00 0C */ lwz r31, 0xc(r1)
+/* 8030466C 003002CC 83 C1 00 08 */ lwz r30, 8(r1)
+/* 80304670 003002D0 7C 08 03 A6 */ mtlr r0
+/* 80304674 003002D4 38 21 00 10 */ addi r1, r1, 0x10
+/* 80304678 003002D8 4E 80 00 20 */ blr
|