From d86a32bbb2ff79232bf3edc0f475062f45b6ea90 Mon Sep 17 00:00:00 2001 From: Jyun-Yan You Date: Tue, 21 May 2013 11:58:08 +0800 Subject: fix mips stack alignment --- src/libcore/rt/context.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/libcore') 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; } -- cgit 1.4.1-3-g733a5