瀏覽代碼

crt1 must align stack pointer on mips

it's naturally aligned when entered with the kernel argv array, but if
ld.so has been invoked explicitly to run a program, the stack will not
be aligned due to having thrown away argv[0].
Rich Felker 12 年之前
父節點
當前提交
259071c249
共有 1 個文件被更改,包括 1 次插入0 次删除
  1. 1 0
      crt/mips/crt1.s

+ 1 - 0
crt/mips/crt1.s

@@ -14,6 +14,7 @@ _start:
 	lw      $5, ($sp)                # Get argc...
 	addu    $6, $sp, 4               # and argv ...
 	lw      $7, %call16(_init)($gp)  # and _init() ...
+	and     $sp, $sp, -8             # Align the stack pointer to 8 bytes
 	addi    $sp, $sp, -4*6           # Leave space for arguments 0..3, arg4, and arg5.
 	lw      $12, %call16(_fini)($gp) # and _fini() ...
 	sw      $12, 4*4($sp)            # Save arg4.