summaryrefslogtreecommitdiff
path: root/asm/SDK/NWC24/NWC24Time.s
blob: 3660730d464829e274b98d5d04b217ea819045dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
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