diff options
Diffstat (limited to 'src/libcore/rt')
| -rw-r--r-- | src/libcore/rt/context.rs | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/libcore/rt/context.rs b/src/libcore/rt/context.rs index 2add314fd11..f60ce342957 100644 --- a/src/libcore/rt/context.rs +++ b/src/libcore/rt/context.rs @@ -183,7 +183,9 @@ fn new_regs() -> ~Registers { ~([0, .. 32]) } #[cfg(target_arch = "mips")] fn initialize_call_frame(regs: &mut Registers, fptr: *c_void, arg: *c_void, sp: *mut uint) { - let sp = mut_offset(sp, -1); + let sp = align_down(sp); + // sp of mips o32 is 8-byte aligned + let sp = mut_offset(sp, -2); // The final return address. 0 indicates the bottom of the stack unsafe { *sp = 0; } |
