From e2f26022b05fea71a5361f0b44f3bccc61ba9932 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 15 Apr 2025 11:14:14 +0800 Subject: [PATCH] Address typos in MIPS executable loader * exec/loader-mipsel.s (rest_of_exec): Delete redundant nop. (skip_environ): Correct stack space test. Don't jump into the label for the sp preserving case's delay slot. (cherry picked from commit e790873be10720c108b9d6833ce0232167f03bf2) --- exec/loader-mipsel.s | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/exec/loader-mipsel.s b/exec/loader-mipsel.s index bf90493e726..92239614de3 100644 --- a/exec/loader-mipsel.s +++ b/exec/loader-mipsel.s @@ -15,7 +15,7 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see . - include(`config-mips.m4') +include(`config-mips.m4') ## Beware: $t0-$t4 alias the syscall (and function, but they are not ## material in this context) argument registers on N32 systems, and @@ -28,7 +28,7 @@ __start: ## li $v0, SYSCALL_nanosleep # SYS_nanosleep ## la $a0, timespec # rqtp ## li $a1, 0 # rmtp - ## syscall # syscall + ## syscall # syscall lw $s6, ($sp) # original stack pointer addi $s0, $sp, 8 # start of load area addi $sp, -8 # primary fd, secondary fd @@ -158,7 +158,6 @@ perror: rest_of_exec: move $s1, $s6 # s1 = original SP lw $t0, ($s1) # argc - nop # delay slot sll $t0, $t0, 2 # argc *= 4 addi $t0, $t0, 8 # argc += 8 add $s1, $s1, $t0 # s1 = start of envp @@ -195,11 +194,11 @@ skip_environ: $sp = copy of string. */ move $t4, $sp # current sp sub $t5, $t3, $sp # new argc - current sp - bleu $t5, -8, 1f # more than two slots apart + blt $t5, 8, 1f # more than two slots apart addi $sp, $t3, -8 # $sp = two slots below new argc j 2f # skip copying fds -1: move $sp, $t4 # retain current sp - lw $t5, ($t4) # old primary fd + move $sp, $t4 # retain current sp +1: lw $t5, ($t4) # old primary fd sw $t5, ($sp) # save the same lw $t5, 4($t4) # old interpreter fd sw $t5, 4($sp) # save the same -- 2.39.5