summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcadmic <cadmic24@gmail.com>2024-09-06 10:32:29 -0700
committerGitHub <noreply@github.com>2024-09-06 19:32:29 +0200
commitd374e71cb83cef8f4b73679ffc55e13e665ec911 (patch)
treed16262f8c11b588f07f313c164e6fd884967506a
parent2ce648a7c674b08fbfe9d4ced935b4e4956963ac (diff)
Fix size of leoDiskStack (#2143)
-rw-r--r--include/ultra64/leodrive.h2
-rw-r--r--src/libleo/api/cacreateleomanager.c3
-rw-r--r--src/libleo/api/cjcreateleomanager.c3
-rw-r--r--src/libleo/leo/leointerrupt.c2
4 files changed, 6 insertions, 4 deletions
diff --git a/include/ultra64/leodrive.h b/include/ultra64/leodrive.h
index cb70b9a1f..fbbbef8e0 100644
--- a/include/ultra64/leodrive.h
+++ b/include/ultra64/leodrive.h
@@ -187,7 +187,7 @@ extern const s32 LEORAM_BYTE[];
extern s32 __leoActive;
extern LEOVersion __leoVersion;
-extern STACK(leoDiskStack, 0xFF0);
+extern STACK(leoDiskStack, 0x1000);
extern OSPiHandle* LEOPiInfo;
diff --git a/src/libleo/api/cacreateleomanager.c b/src/libleo/api/cacreateleomanager.c
index 7628f5889..1f2caf6d9 100644
--- a/src/libleo/api/cacreateleomanager.c
+++ b/src/libleo/api/cacreateleomanager.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "ultra64/asm.h"
#include "ultra64/leo.h"
#include "ultra64/leoappli.h"
#include "ultra64/leodrive.h"
@@ -25,7 +26,7 @@ s32 LeoCACreateLeoManager(s32 comPri, s32 intPri, OSMesg* cmdBuf, s32 cmdMsgCnt)
driveRomHandle = osDriveRomInit();
__leoActive = true;
- __osSetHWIntrRoutine(OS_INTR_CART, __osLeoInterrupt, STACK_TOP(leoDiskStack));
+ __osSetHWIntrRoutine(OS_INTR_CART, __osLeoInterrupt, (u8*)STACK_TOP(leoDiskStack) - FRAMESZ(SZREG * NARGSAVE));
leoInitialize(comPri, intPri, cmdBuf, cmdMsgCnt);
if (osResetType == 1) { // NMI
diff --git a/src/libleo/api/cjcreateleomanager.c b/src/libleo/api/cjcreateleomanager.c
index c10e1fd26..e3a518300 100644
--- a/src/libleo/api/cjcreateleomanager.c
+++ b/src/libleo/api/cjcreateleomanager.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "ultra64/asm.h"
#include "ultra64/leo.h"
#include "ultra64/leoappli.h"
#include "ultra64/leodrive.h"
@@ -25,7 +26,7 @@ s32 LeoCJCreateLeoManager(s32 comPri, s32 intPri, OSMesg* cmdBuf, s32 cmdMsgCnt)
driveRomHandle = osDriveRomInit();
__leoActive = true;
- __osSetHWIntrRoutine(OS_INTR_CART, __osLeoInterrupt, STACK_TOP(leoDiskStack));
+ __osSetHWIntrRoutine(OS_INTR_CART, __osLeoInterrupt, (u8*)STACK_TOP(leoDiskStack) - FRAMESZ(SZREG * NARGSAVE));
leoInitialize(comPri, intPri, cmdBuf, cmdMsgCnt);
if (osResetType == 1) { // NMI
diff --git a/src/libleo/leo/leointerrupt.c b/src/libleo/leo/leointerrupt.c
index e11d34508..d9e2175ad 100644
--- a/src/libleo/leo/leointerrupt.c
+++ b/src/libleo/leo/leointerrupt.c
@@ -9,7 +9,7 @@ extern OSHWIntr __OSGlobalIntMask;
void __osLeoAbnormalResume(void);
void __osLeoResume(void);
-STACK(leoDiskStack, 0xFF0);
+STACK(leoDiskStack, 0x1000);
s32 __osLeoInterrupt(void) {
u32 stat = 0;