diff options
| author | Po Lu | 2025-04-15 17:11:56 +0800 |
|---|---|---|
| committer | Po Lu | 2025-04-15 17:11:56 +0800 |
| commit | 19b6e36a22513b437b86d4b6418ce31f551902cc (patch) | |
| tree | c33401adcf03e14a04da8b865df165e7aa08224b /exec | |
| parent | 458ad0cb899491da546c06a3f1cd63c0f54623ac (diff) | |
| download | emacs-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.s | 6 |
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 |
| 176 | skip_environ: | 176 | skip_environ: |
| 177 | /* Locate the auxiliary vector. */ | 177 | /* Locate the auxiliary vector. */ |
| 178 | li $t8, 8 # DADDI2 isn't appropriate in delay slots. | ||
| 178 | 1: ld $t0, ($s1) # t0 = *s1 | 179 | 1: 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 | ||
| 182 | 1: ld $t0, ($s1) # t0 = s1->a_type | 184 | 1: 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. */ |