mirror of
https://github.com/encounter/oot-gc.git
synced 2026-03-30 11:33:44 -07:00
45 lines
1.8 KiB
ArmAsm
45 lines
1.8 KiB
ArmAsm
# OSSync.c
|
|
.include "macros.inc"
|
|
|
|
.section .text, "ax"
|
|
|
|
.balign 4
|
|
|
|
SystemCallVector:
|
|
/* 09BAB4 800A1054 7D30FAA6 */ mfspr r9, 0x3f0
|
|
/* 09BAB8 800A1058 612A0008 */ ori r10, r9, 8
|
|
/* 09BABC 800A105C 7D50FBA6 */ mtspr 0x3f0, r10
|
|
/* 09BAC0 800A1060 4C00012C */ isync
|
|
/* 09BAC4 800A1064 7C0004AC */ sync 0
|
|
/* 09BAC8 800A1068 7D30FBA6 */ mtspr 0x3f0, r9
|
|
/* 09BACC 800A106C 4C000064 */ rfi
|
|
glabel __OSSystemCallVectorEnd
|
|
/* 09BAD0 800A1070 60000000 */ nop
|
|
|
|
glabel __OSInitSystemCall
|
|
/* 09BAD4 800A1074 7C0802A6 */ mflr r0
|
|
/* 09BAD8 800A1078 90010004 */ stw r0, 4(r1)
|
|
/* 09BADC 800A107C 9421FFF0 */ stwu r1, -0x10(r1)
|
|
/* 09BAE0 800A1080 93E1000C */ stw r31, 0xc(r1)
|
|
/* 09BAE4 800A1084 3CA08000 */ lis r5, 0x8000
|
|
/* 09BAE8 800A1088 3C80800A */ lis r4, SystemCallVector@ha
|
|
/* 09BAEC 800A108C 3C60800A */ lis r3, __OSSystemCallVectorEnd@ha
|
|
/* 09BAF0 800A1090 3BE50C00 */ addi r31, r5, 0xc00
|
|
/* 09BAF4 800A1094 38031070 */ addi r0, r3, __OSSystemCallVectorEnd@l
|
|
/* 09BAF8 800A1098 38841054 */ addi r4, r4, SystemCallVector@l
|
|
/* 09BAFC 800A109C 7FE3FB78 */ mr r3, r31
|
|
/* 09BB00 800A10A0 7CA40050 */ subf r5, r4, r0
|
|
/* 09BB04 800A10A4 4BF64421 */ bl memcpy
|
|
/* 09BB08 800A10A8 7FE3FB78 */ mr r3, r31
|
|
/* 09BB0C 800A10AC 38800100 */ li r4, 0x100
|
|
/* 09BB10 800A10B0 4BFFC72D */ bl DCFlushRangeNoSync
|
|
/* 09BB14 800A10B4 7C0004AC */ sync 0
|
|
/* 09BB18 800A10B8 7FE3FB78 */ mr r3, r31
|
|
/* 09BB1C 800A10BC 38800100 */ li r4, 0x100
|
|
/* 09BB20 800A10C0 4BFFC775 */ bl ICInvalidateRange
|
|
/* 09BB24 800A10C4 80010014 */ lwz r0, 0x14(r1)
|
|
/* 09BB28 800A10C8 83E1000C */ lwz r31, 0xc(r1)
|
|
/* 09BB2C 800A10CC 38210010 */ addi r1, r1, 0x10
|
|
/* 09BB30 800A10D0 7C0803A6 */ mtlr r0
|
|
/* 09BB34 800A10D4 4E800020 */ blr
|