libc: Work around LLVM's misassembly of j <reg> on mips r6.

See: https://github.com/ziglang/zig/issues/21315
This commit is contained in:
Alex Rønne Petersen 2024-09-18 03:33:08 +02:00 committed by Andrew Kelley
parent b19d0fb0fd
commit c1cc63e5ff
6 changed files with 22 additions and 11 deletions

View File

@ -42,7 +42,8 @@
lw $31,28($sp)
.set noreorder
.set nomacro
j $31
/* zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315 */
jr $31
addiu $sp,$sp,32
.set macro
.set reorder
@ -51,7 +52,8 @@
lw $31,28($sp)
.set noreorder
.set nomacro
j $31
/* zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315 */
jr $31
addiu $sp,$sp,32
.set macro
.set reorder

View File

@ -43,7 +43,8 @@
ld $28,0($sp)
.set noreorder
.set nomacro
j $31
/* zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315 */
jr $31
addiu $sp,$sp,16
.set macro
.set reorder
@ -53,7 +54,8 @@
ld $28,0($sp)
.set noreorder
.set nomacro
j $31
/* zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315 */
jr $31
addiu $sp,$sp,16
.set macro
.set reorder

View File

@ -43,7 +43,8 @@
ld $28,0($sp)
.set noreorder
.set nomacro
j $31
/* zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315 */
jr $31
daddiu $sp,$sp,16
.set macro
.set reorder
@ -53,7 +54,8 @@
ld $28,0($sp)
.set noreorder
.set nomacro
j $31
/* zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315 */
jr $31
daddiu $sp,$sp,16
.set macro
.set reorder

View File

@ -39,7 +39,8 @@
.end function; \
.size function,.-function
#define ret j ra ; nop
// zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315
#define ret jr ra ; nop
#undef PSEUDO_END
#define PSEUDO_END(sym) cfi_endproc; .end sym; .size sym,.-sym

View File

@ -3,11 +3,13 @@
.section .init
lw $gp,24($sp)
lw $ra,28($sp)
j $ra
# zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315
jr $ra
addu $sp,$sp,32
.section .fini
lw $gp,24($sp)
lw $ra,28($sp)
j $ra
# zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315
jr $ra
addu $sp,$sp,32

View File

@ -3,11 +3,13 @@
.section .init
ld $gp,16($sp)
ld $ra,24($sp)
j $ra
# zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315
jr $ra
daddu $sp,$sp,32
.section .fini
ld $gp,16($sp)
ld $ra,24($sp)
j $ra
# zig patch: j <reg> -> jr <reg> for https://github.com/ziglang/zig/issues/21315
jr $ra
daddu $sp,$sp,32