aboutsummaryrefslogtreecommitdiffstats
path: root/exec
diff options
context:
space:
mode:
authorPo Lu2025-04-15 17:11:56 +0800
committerPo Lu2025-04-15 17:11:56 +0800
commit19b6e36a22513b437b86d4b6418ce31f551902cc (patch)
treec33401adcf03e14a04da8b865df165e7aa08224b /exec
parent458ad0cb899491da546c06a3f1cd63c0f54623ac (diff)
downloademacs-19b6e36a22513b437b86d4b6418ce31f551902cc.tar.gz
emacs-19b6e36a22513b437b86d4b6418ce31f551902cc.zip
* exec/loader-mips64el.s (rest_of_exec): Deal with assembler bugs.
Diffstat (limited to 'exec')
-rw-r--r--exec/loader-mips64el.s6
1 files changed, 4 insertions, 2 deletions
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:
175 dadd $s1, $s1, $t0 # s1 = start of envp 175 dadd $s1, $s1, $t0 # s1 = start of envp
176skip_environ: 176skip_environ:
177 /* Locate the auxiliary vector. */ 177 /* Locate the auxiliary vector. */
178 li $t8, 8 # DADDI2 isn't appropriate in delay slots.
1781: ld $t0, ($s1) # t0 = *s1 1791: ld $t0, ($s1) # t0 = *s1
179 bnez $t0, 1b # skip environment entry 180 bnez $t0, 1b # skip environment entry
180 daddi $s1, $s1, 8 # s1++ 181 dadd $s1, $s1, $t8 # s1++
181 move $s2, $s1 # s2 = end of environment 182 move $s2, $s1 # s2 = end of environment
183 li $t8, 16
1821: ld $t0, ($s1) # t0 = s1->a_type 1841: ld $t0, ($s1) # t0 = s1->a_type
183 bnez $t0, 1b # skip auxiliary vector entry 185 bnez $t0, 1b # skip auxiliary vector entry
184 daddi $s1, $s1, 16 # (Elf64_auxv_t *) s1++ 186 dadd $s1, $s1, $t8 # (Elf64_auxv_t *) s1++
185 /* Decide how many bytes must be copied and where to 187 /* Decide how many bytes must be copied and where to
186 save the file name. Move the stack pointer to a safe 188 save the file name. Move the stack pointer to a safe
187 position below any data that must be preserved. */ 189 position below any data that must be preserved. */