From: Po Lu Date: Tue, 15 Apr 2025 09:11:56 +0000 (+0800) Subject: * exec/loader-mips64el.s (rest_of_exec): Deal with assembler bugs. X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0656b65eb678c2b97e455f3e4a5933edefbccaa9;p=emacs.git * exec/loader-mips64el.s (rest_of_exec): Deal with assembler bugs. (cherry picked from commit 19b6e36a22513b437b86d4b6418ce31f551902cc) --- diff --git a/exec/loader-mips64el.s b/exec/loader-mips64el.s index be978d8b18b..cab80d5e19f 100644 --- a/exec/loader-mips64el.s +++ b/exec/loader-mips64el.s @@ -175,13 +175,15 @@ rest_of_exec: dadd $s1, $s1, $t0 # s1 = start of envp skip_environ: /* Locate the auxiliary vector. */ + li $t8, 8 # DADDI2 isn't appropriate in delay slots. 1: ld $t0, ($s1) # t0 = *s1 bnez $t0, 1b # skip environment entry - daddi $s1, $s1, 8 # s1++ + dadd $s1, $s1, $t8 # s1++ move $s2, $s1 # s2 = end of environment + li $t8, 16 1: ld $t0, ($s1) # t0 = s1->a_type bnez $t0, 1b # skip auxiliary vector entry - daddi $s1, $s1, 16 # (Elf64_auxv_t *) s1++ + dadd $s1, $s1, $t8 # (Elf64_auxv_t *) s1++ /* Decide how many bytes must be copied and where to save the file name. Move the stack pointer to a safe position below any data that must be preserved. */