[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] RISC-V: lib: Fixes for setjmp/longjmp.
From: |
Andrius Štikonas |
Subject: |
[PATCH] RISC-V: lib: Fixes for setjmp/longjmp. |
Date: |
Wed, 15 May 2024 23:07:00 +0300 |
a0 register had been clobbered by val and subsequent loads were failing
* lib/riscv64-mes-gcc/setjmp.c: Use extended assembly.
---
lib/riscv64-mes-gcc/setjmp.c | 54 ++++++++++++++++++------------------
1 file changed, 27 insertions(+), 27 deletions(-)
diff --git a/lib/riscv64-mes-gcc/setjmp.c b/lib/riscv64-mes-gcc/setjmp.c
index 7c2828f0..6df7908f 100644
--- a/lib/riscv64-mes-gcc/setjmp.c
+++ b/lib/riscv64-mes-gcc/setjmp.c
@@ -28,35 +28,35 @@ longjmp (jmp_buf env, int val)
{
val = val == 0 ? 1 : val;
asm(
- "ld s0, 0(a0)\n\t"
- "ld s1, 8(a0)\n\t"
- "ld s2, 16(a0)\n\t"
- "ld s3, 24(a0)\n\t"
- "ld s4, 32(a0)\n\t"
- "ld s5, 40(a0)\n\t"
- "ld s6, 48(a0)\n\t"
- "ld s7, 56(a0)\n\t"
- "ld s8, 64(a0)\n\t"
- "ld s9, 72(a0)\n\t"
- "ld s10, 80(a0)\n\t"
- "ld s11, 88(a0)\n\t"
- "ld sp, 96(a0)\n\t"
- "ld ra, 104(a0)\n\t"
+ "ld s0, 0(%0)\n\t"
+ "ld s1, 8(%0)\n\t"
+ "ld s2, 16(%0)\n\t"
+ "ld s3, 24(%0)\n\t"
+ "ld s4, 32(%0)\n\t"
+ "ld s5, 40(%0)\n\t"
+ "ld s6, 48(%0)\n\t"
+ "ld s7, 56(%0)\n\t"
+ "ld s8, 64(%0)\n\t"
+ "ld s9, 72(%0)\n\t"
+ "ld s10, 80(%0)\n\t"
+ "ld s11, 88(%0)\n\t"
+ "ld sp, 96(%0)\n\t"
+ "ld ra, 104(%0)\n\t"
#if HAVE_FLOAT_ASM && HAVE_FLOAT && ! __riscv_float_abi_soft
- "fld fs0, 112(a0)\n\t"
- "fld fs1, 120(a0)\n\t"
- "fld fs2, 128(a0)\n\t"
- "fld fs3, 136(a0)\n\t"
- "fld fs4, 144(a0)\n\t"
- "fld fs5, 152(a0)\n\t"
- "fld fs6, 160(a0)\n\t"
- "fld fs7, 168(a0)\n\t"
- "fld fs8, 176(a0)\n\t"
- "fld fs9, 184(a0)\n\t"
- "fld fs10, 192(a0)\n\t"
- "fld fs11, 200(a0)\n\t"
+ "fld fs0, 112(%0)\n\t"
+ "fld fs1, 120(%0)\n\t"
+ "fld fs2, 128(%0)\n\t"
+ "fld fs3, 136(%0)\n\t"
+ "fld fs4, 144(%0)\n\t"
+ "fld fs5, 152(%0)\n\t"
+ "fld fs6, 160(%0)\n\t"
+ "fld fs7, 168(%0)\n\t"
+ "fld fs8, 176(%0)\n\t"
+ "fld fs9, 184(%0)\n\t"
+ "fld fs10, 192(%0)\n\t"
+ "fld fs11, 200(%0)\n\t"
#endif
- );
+ : : "r" (env) );
}
int
--
2.43.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] RISC-V: lib: Fixes for setjmp/longjmp.,
Andrius Štikonas <=