diff --git a/src/system/kernel/arch/m68k/arch_debug.cpp b/src/system/kernel/arch/m68k/arch_debug.cpp index 0352b22370..a692cf3e58 100644 --- a/src/system/kernel/arch/m68k/arch_debug.cpp +++ b/src/system/kernel/arch/m68k/arch_debug.cpp @@ -194,7 +194,7 @@ return 0; // see if the frame pointer matches the iframe struct iframe *frame = NULL; for (i = 0; i < frameStack->index; i++) { - if (framePointer == (((addr_t)frameStack->frames[i] - 8) & ~0xf)) { + if (framePointer == (addr_t)frameStack->frames[i]) { // it's an iframe frame = frameStack->frames[i]; break; @@ -324,7 +324,7 @@ arch_debug_get_stack_trace(addr_t* returnAddresses, int32 maxCount, // see if the frame pointer matches the iframe struct iframe *frame = NULL; for (i = 0; i < frameStack->index; i++) { - if (framePointer == (((addr_t)frameStack->frames[i] - 8) & ~0xf)) { + if (framePointer == (addr_t)frameStack->frames[i]) { // it's an iframe frame = frameStack->frames[i]; break; diff --git a/src/system/kernel/arch/m68k/arch_exceptions.S b/src/system/kernel/arch/m68k/arch_exceptions.S index ee918f4d81..8314328a76 100644 --- a/src/system/kernel/arch/m68k/arch_exceptions.S +++ b/src/system/kernel/arch/m68k/arch_exceptions.S @@ -108,6 +108,7 @@ null_sav_1: sub.l #IFRAME_fpu-IFRAME_fp,%sp null_sav_2: + move.l %sp,%fp /* have stack_trace() find the iframe */ move.l %sp,-(%sp) /* push address of iframe */ bsr m68k_exception_entry /* call C entry */ add.l #4,%sp