mirror of
https://github.com/PrimeDecomp/prime.git
synced 2026-07-12 18:18:56 -07:00
Match and link OSContext, add ability to turn off frank
This commit is contained in:
@@ -154,7 +154,7 @@ __OSSaveFPUContext:
|
||||
/* 8037F380 0037C2E0 C8 05 00 90 */ lfd f0, 0x90(r5)
|
||||
/* 8037F384 0037C2E4 7C 78 E2 A6 */ mfspr r3, 0x398
|
||||
/* 8037F388 0037C2E8 54 63 1F FF */ rlwinm. r3, r3, 3, 0x1f, 0x1f
|
||||
/* 8037F38C 0037C2EC 41 82 00 84 */ beq sub_8037f410
|
||||
/* 8037F38C 0037C2EC 41 82 00 84 */ beq lbl_8037f410
|
||||
/* 8037F390 0037C2F0 F0 05 01 C8 */ psq_st f0, 456(r5), 0, qr0
|
||||
/* 8037F394 0037C2F4 F0 25 01 D0 */ psq_st f1, 464(r5), 0, qr0
|
||||
/* 8037F398 0037C2F8 F0 45 01 D8 */ psq_st f2, 472(r5), 0, qr0
|
||||
@@ -187,9 +187,7 @@ __OSSaveFPUContext:
|
||||
/* 8037F404 0037C364 F3 A5 02 B0 */ psq_st f29, 688(r5), 0, qr0
|
||||
/* 8037F408 0037C368 F3 C5 02 B8 */ psq_st f30, 696(r5), 0, qr0
|
||||
/* 8037F40C 0037C36C F3 E5 02 C0 */ psq_st f31, 704(r5), 0, qr0
|
||||
|
||||
.global sub_8037f410
|
||||
sub_8037f410:
|
||||
lbl_8037f410:
|
||||
/* 8037F410 0037C370 4E 80 00 20 */ blr
|
||||
|
||||
.global OSSaveFPUContext
|
||||
@@ -267,9 +265,9 @@ OSSaveContext:
|
||||
|
||||
.global OSLoadContext
|
||||
OSLoadContext:
|
||||
/* 8037F504 0037C464 3C 80 80 38 */ lis r4, OSDisableInterrupts@ha
|
||||
/* 8037F504 0037C464 3C 80 80 38 */ lis r4, __RAS_OSDisableInterrupts_begin@ha
|
||||
/* 8037F508 0037C468 80 C3 01 98 */ lwz r6, 0x198(r3)
|
||||
/* 8037F50C 0037C46C 38 A4 16 60 */ addi r5, r4, OSDisableInterrupts@l
|
||||
/* 8037F50C 0037C46C 38 A4 16 60 */ addi r5, r4, __RAS_OSDisableInterrupts_begin@l
|
||||
/* 8037F510 0037C470 7C 06 28 40 */ cmplw r6, r5
|
||||
/* 8037F514 0037C474 40 81 00 18 */ ble lbl_8037F52C
|
||||
/* 8037F518 0037C478 3C 80 80 38 */ lis r4, __RAS_OSDisableInterrupts_end@ha
|
||||
|
||||
+6
-2
@@ -809,7 +809,7 @@ LIBS = [
|
||||
["Dolphin/os/OSArena", True],
|
||||
["Dolphin/os/OSAudioSystem", True],
|
||||
["Dolphin/os/OSCache", True],
|
||||
"Dolphin/os/OSContext",
|
||||
["Dolphin/os/OSContext", True, True, True],
|
||||
"Dolphin/os/OSError",
|
||||
"Dolphin/os/OSFatal",
|
||||
"Dolphin/os/OSFont",
|
||||
@@ -1339,9 +1339,12 @@ if __name__ == "__main__":
|
||||
for object in lib["objects"]:
|
||||
completed = None
|
||||
add_to_all = True
|
||||
no_frank = False
|
||||
if type(object) is list:
|
||||
if len(object) > 2:
|
||||
add_to_all = object[2]
|
||||
if len(object) > 3:
|
||||
no_frank = object[3]
|
||||
completed = object[1]
|
||||
object = object[0]
|
||||
|
||||
@@ -1357,7 +1360,8 @@ if __name__ == "__main__":
|
||||
rule = "mwcc"
|
||||
if mwcc_version == "1.2.5e":
|
||||
mwcc_version = "1.2.5"
|
||||
rule = "mwcc_frank"
|
||||
if no_frank is False:
|
||||
rule = "mwcc_frank"
|
||||
n.build(
|
||||
outputs=f"$builddir/src/{object}.o",
|
||||
rule=rule,
|
||||
|
||||
@@ -132,6 +132,8 @@ extern "C" {
|
||||
#define OS_CONTEXT_PSF31 704
|
||||
#define OS_CONTEXT_STATE_EXC 0x02u
|
||||
|
||||
#define OS_CONTEXT_STATE_FPSAVED 0x01u
|
||||
|
||||
typedef struct OSContext {
|
||||
u32 gpr[32];
|
||||
u32 cr;
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
#define __OS_EXCEPTION_FLOATING_POINT 7
|
||||
|
||||
typedef u8 __OSException;
|
||||
typedef void (*__OSExceptionHandler)(__OSException exception, OSContext* context);
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user