donut-decomp/asm/base/PPCArch.s
2022-10-17 08:59:44 +01:00

207 lines
7.8 KiB
ArmAsm

.include "macros.inc"
.section .text, "ax" # 0x80006A00 - 0x80406260 ; 0x003FF860
.global PPCMfmsr
PPCMfmsr:
/* 8001A0B0 00015EF0 7C 60 00 A6 */ mfmsr r3
/* 8001A0B4 00015EF4 4E 80 00 20 */ blr
/* 8001A0B8 00015EF8 00 00 00 00 */ .4byte 0x00000000
/* 8001A0BC 00015EFC 00 00 00 00 */ .4byte 0x00000000
.global PPCMtmsr
PPCMtmsr:
/* 8001A0C0 00015F00 7C 60 01 24 */ mtmsr r3
/* 8001A0C4 00015F04 4E 80 00 20 */ blr
/* 8001A0C8 00015F08 00 00 00 00 */ .4byte 0x00000000
/* 8001A0CC 00015F0C 00 00 00 00 */ .4byte 0x00000000
.global PPCMfhid0
PPCMfhid0:
/* 8001A0D0 00015F10 7C 70 FA A6 */ mfspr r3, HID0
/* 8001A0D4 00015F14 4E 80 00 20 */ blr
/* 8001A0D8 00015F18 00 00 00 00 */ .4byte 0x00000000
/* 8001A0DC 00015F1C 00 00 00 00 */ .4byte 0x00000000
.global PPCMthid0
PPCMthid0:
/* 8001A0E0 00015F20 7C 70 FB A6 */ mtspr HID0, r3
/* 8001A0E4 00015F24 4E 80 00 20 */ blr
/* 8001A0E8 00015F28 00 00 00 00 */ .4byte 0x00000000
/* 8001A0EC 00015F2C 00 00 00 00 */ .4byte 0x00000000
.global PPCMfl2cr
PPCMfl2cr:
/* 8001A0F0 00015F30 7C 79 FA A6 */ mfspr r3, L2CR
/* 8001A0F4 00015F34 4E 80 00 20 */ blr
/* 8001A0F8 00015F38 00 00 00 00 */ .4byte 0x00000000
/* 8001A0FC 00015F3C 00 00 00 00 */ .4byte 0x00000000
.global PPCMtl2cr
PPCMtl2cr:
/* 8001A100 00015F40 7C 79 FB A6 */ mtspr L2CR, r3
/* 8001A104 00015F44 4E 80 00 20 */ blr
/* 8001A108 00015F48 00 00 00 00 */ .4byte 0x00000000
/* 8001A10C 00015F4C 00 00 00 00 */ .4byte 0x00000000
.global PPCMtdec
PPCMtdec:
/* 8001A110 00015F50 7C 76 03 A6 */ mtdec r3
/* 8001A114 00015F54 4E 80 00 20 */ blr
/* 8001A118 00015F58 00 00 00 00 */ .4byte 0x00000000
/* 8001A11C 00015F5C 00 00 00 00 */ .4byte 0x00000000
.global PPCSync
PPCSync:
/* 8001A120 00015F60 44 00 00 02 */ sc
/* 8001A124 00015F64 4E 80 00 20 */ blr
/* 8001A128 00015F68 00 00 00 00 */ .4byte 0x00000000
/* 8001A12C 00015F6C 00 00 00 00 */ .4byte 0x00000000
.global PPCHalt
PPCHalt:
/* 8001A130 00015F70 7C 00 04 AC */ sync
.global lbl_8001A134
lbl_8001A134:
/* 8001A134 00015F74 60 00 00 00 */ nop
/* 8001A138 00015F78 38 60 00 00 */ li r3, 0x0
/* 8001A13C 00015F7C 60 00 00 00 */ nop
/* 8001A140 00015F80 4B FF FF F4 */ b lbl_8001A134
/* 8001A144 00015F84 00 00 00 00 */ .4byte 0x00000000
/* 8001A148 00015F88 00 00 00 00 */ .4byte 0x00000000
/* 8001A14C 00015F8C 00 00 00 00 */ .4byte 0x00000000
.global PPCMtmmcr0
PPCMtmmcr0:
/* 8001A150 00015F90 7C 78 EB A6 */ mtspr MMCR0, r3
/* 8001A154 00015F94 4E 80 00 20 */ blr
/* 8001A158 00015F98 00 00 00 00 */ .4byte 0x00000000
/* 8001A15C 00015F9C 00 00 00 00 */ .4byte 0x00000000
.global PPCMtmmcr1
PPCMtmmcr1:
/* 8001A160 00015FA0 7C 7C EB A6 */ mtspr MMCR1, r3
/* 8001A164 00015FA4 4E 80 00 20 */ blr
/* 8001A168 00015FA8 00 00 00 00 */ .4byte 0x00000000
/* 8001A16C 00015FAC 00 00 00 00 */ .4byte 0x00000000
.global PPCMtpmc1
PPCMtpmc1:
/* 8001A170 00015FB0 7C 79 EB A6 */ mtspr PMC1, r3
/* 8001A174 00015FB4 4E 80 00 20 */ blr
/* 8001A178 00015FB8 00 00 00 00 */ .4byte 0x00000000
/* 8001A17C 00015FBC 00 00 00 00 */ .4byte 0x00000000
.global PPCMtpmc2
PPCMtpmc2:
/* 8001A180 00015FC0 7C 7A EB A6 */ mtspr PMC2, r3
/* 8001A184 00015FC4 4E 80 00 20 */ blr
/* 8001A188 00015FC8 00 00 00 00 */ .4byte 0x00000000
/* 8001A18C 00015FCC 00 00 00 00 */ .4byte 0x00000000
.global PPCMtpmc3
PPCMtpmc3:
/* 8001A190 00015FD0 7C 7D EB A6 */ mtspr PMC3, r3
/* 8001A194 00015FD4 4E 80 00 20 */ blr
/* 8001A198 00015FD8 00 00 00 00 */ .4byte 0x00000000
/* 8001A19C 00015FDC 00 00 00 00 */ .4byte 0x00000000
.global PPCMtpmc4
PPCMtpmc4:
/* 8001A1A0 00015FE0 7C 7E EB A6 */ mtspr PMC4, r3
/* 8001A1A4 00015FE4 4E 80 00 20 */ blr
/* 8001A1A8 00015FE8 00 00 00 00 */ .4byte 0x00000000
/* 8001A1AC 00015FEC 00 00 00 00 */ .4byte 0x00000000
.global PPCMffpscr
PPCMffpscr:
/* 8001A1B0 00015FF0 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8001A1B4 00015FF4 DB E1 00 18 */ stfd f31, 0x18(r1)
/* 8001A1B8 00015FF8 FF E0 04 8E */ mffs f31
/* 8001A1BC 00015FFC DB E1 00 08 */ stfd f31, 0x8(r1)
/* 8001A1C0 00016000 CB E1 00 18 */ lfd f31, 0x18(r1)
/* 8001A1C4 00016004 80 61 00 0C */ lwz r3, 0xc(r1)
/* 8001A1C8 00016008 38 21 00 20 */ addi r1, r1, 0x20
/* 8001A1CC 0001600C 4E 80 00 20 */ blr
.global PPCMtfpscr
PPCMtfpscr:
/* 8001A1D0 00016010 94 21 FF E0 */ stwu r1, -0x20(r1)
/* 8001A1D4 00016014 DB E1 00 18 */ stfd f31, 0x18(r1)
/* 8001A1D8 00016018 38 80 00 00 */ li r4, 0x0
/* 8001A1DC 0001601C 90 81 00 08 */ stw r4, 0x8(r1)
/* 8001A1E0 00016020 90 61 00 0C */ stw r3, 0xc(r1)
/* 8001A1E4 00016024 CB E1 00 08 */ lfd f31, 0x8(r1)
/* 8001A1E8 00016028 FD FE FD 8E */ mtfsf 255, f31
/* 8001A1EC 0001602C CB E1 00 18 */ lfd f31, 0x18(r1)
/* 8001A1F0 00016030 38 21 00 20 */ addi r1, r1, 0x20
/* 8001A1F4 00016034 4E 80 00 20 */ blr
/* 8001A1F8 00016038 00 00 00 00 */ .4byte 0x00000000
/* 8001A1FC 0001603C 00 00 00 00 */ .4byte 0x00000000
.global PPCMfhid2
PPCMfhid2:
/* 8001A200 00016040 7C 78 E2 A6 */ mfspr r3, HID2
/* 8001A204 00016044 4E 80 00 20 */ blr
/* 8001A208 00016048 00 00 00 00 */ .4byte 0x00000000
/* 8001A20C 0001604C 00 00 00 00 */ .4byte 0x00000000
.global PPCMthid2
PPCMthid2:
/* 8001A210 00016050 7C 78 E3 A6 */ mtspr HID2, r3
/* 8001A214 00016054 4E 80 00 20 */ blr
/* 8001A218 00016058 00 00 00 00 */ .4byte 0x00000000
/* 8001A21C 0001605C 00 00 00 00 */ .4byte 0x00000000
.global PPCMtwpar
PPCMtwpar:
/* 8001A220 00016060 7C 79 E3 A6 */ mtspr WPAR, r3
/* 8001A224 00016064 4E 80 00 20 */ blr
/* 8001A228 00016068 00 00 00 00 */ .4byte 0x00000000
/* 8001A22C 0001606C 00 00 00 00 */ .4byte 0x00000000
.global PPCDisableSpeculation
PPCDisableSpeculation:
/* 8001A230 00016070 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8001A234 00016074 7C 08 02 A6 */ mflr r0
/* 8001A238 00016078 90 01 00 14 */ stw r0, 0x14(r1)
/* 8001A23C 0001607C 4B FF FE 95 */ bl PPCMfhid0
/* 8001A240 00016080 60 63 02 00 */ ori r3, r3, 0x200
/* 8001A244 00016084 4B FF FE 9D */ bl PPCMthid0
/* 8001A248 00016088 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8001A24C 0001608C 7C 08 03 A6 */ mtlr r0
/* 8001A250 00016090 38 21 00 10 */ addi r1, r1, 0x10
/* 8001A254 00016094 4E 80 00 20 */ blr
/* 8001A258 00016098 00 00 00 00 */ .4byte 0x00000000
/* 8001A25C 0001609C 00 00 00 00 */ .4byte 0x00000000
.global PPCSetFpNonIEEEMode
PPCSetFpNonIEEEMode:
/* 8001A260 000160A0 FF A0 00 4C */ mtfsb1 4*cr7+gt
/* 8001A264 000160A4 4E 80 00 20 */ blr
/* 8001A268 000160A8 00 00 00 00 */ .4byte 0x00000000
/* 8001A26C 000160AC 00 00 00 00 */ .4byte 0x00000000
.global PPCMthid4
PPCMthid4:
/* 8001A270 000160B0 94 21 FF F0 */ stwu r1, -0x10(r1)
/* 8001A274 000160B4 7C 08 02 A6 */ mflr r0
/* 8001A278 000160B8 90 01 00 14 */ stw r0, 0x14(r1)
/* 8001A27C 000160BC 54 60 00 01 */ clrrwi. r0, r3, 31
/* 8001A280 000160C0 93 E1 00 0C */ stw r31, 0xc(r1)
/* 8001A284 000160C4 7C 7F 1B 78 */ mr r31, r3
/* 8001A288 000160C8 41 82 00 0C */ beq lbl_8001A294
/* 8001A28C 000160CC 7C 73 FB A6 */ mtspr 1011, r3
/* 8001A290 000160D0 48 00 00 1C */ b lbl_8001A2AC
.global lbl_8001A294
lbl_8001A294:
/* 8001A294 000160D4 3C 60 80 42 */ lis r3, "@2249"@ha
/* 8001A298 000160D8 38 63 1D A0 */ addi r3, r3, "@2249"@l
/* 8001A29C 000160DC 4C C6 31 82 */ crclr 4*cr1+eq
/* 8001A2A0 000160E0 48 00 36 F1 */ bl OSReport
/* 8001A2A4 000160E4 67 FF 80 00 */ oris r31, r31, 0x8000
/* 8001A2A8 000160E8 7F F3 FB A6 */ mtspr 1011, r31
.global lbl_8001A2AC
lbl_8001A2AC:
/* 8001A2AC 000160EC 80 01 00 14 */ lwz r0, 0x14(r1)
/* 8001A2B0 000160F0 83 E1 00 0C */ lwz r31, 0xc(r1)
/* 8001A2B4 000160F4 7C 08 03 A6 */ mtlr r0
/* 8001A2B8 000160F8 38 21 00 10 */ addi r1, r1, 0x10
/* 8001A2BC 000160FC 4E 80 00 20 */ blr
.include "macros.inc"
.section .data, "wa" # 0x80421040 - 0x80496700 ; 0x000756C0
.global "@2249"
"@2249":
.4byte 0x48344120
.4byte 0x73686F75
.4byte 0x6C64206E
.4byte 0x6F742062
.4byte 0x6520636C
.4byte 0x65617265
.4byte 0x64206265
.4byte 0x63617573
.4byte 0x65206F66
.4byte 0x2042726F
.4byte 0x61647761
.4byte 0x79206572
.4byte 0x72617461
.4byte 0x2E0A0000