riscv: fix setjmp assembly when compiling for ilp32f/lp64f.
per the psABI, floating point register contents beyond the register size of the targeted ABI variant are never call-saved, so no hwcap-conditional logic is needed here and the assembly-time conditions are based purely on ABI variant macros, not the targeted ISA level.
This commit is contained in:
committed by
Rich Felker
parent
f6944eb3c4
commit
0b86d60bad
@@ -23,18 +23,24 @@ longjmp:
|
|||||||
lw ra, 52(a0)
|
lw ra, 52(a0)
|
||||||
|
|
||||||
#ifndef __riscv_float_abi_soft
|
#ifndef __riscv_float_abi_soft
|
||||||
fld fs0, 56(a0)
|
#ifdef __riscv_float_abi_double
|
||||||
fld fs1, 64(a0)
|
#define FLX fld
|
||||||
fld fs2, 72(a0)
|
#else
|
||||||
fld fs3, 80(a0)
|
#define FLX flw
|
||||||
fld fs4, 88(a0)
|
#endif
|
||||||
fld fs5, 96(a0)
|
|
||||||
fld fs6, 104(a0)
|
FLX fs0, 56(a0)
|
||||||
fld fs7, 112(a0)
|
FLX fs1, 64(a0)
|
||||||
fld fs8, 120(a0)
|
FLX fs2, 72(a0)
|
||||||
fld fs9, 128(a0)
|
FLX fs3, 80(a0)
|
||||||
fld fs10, 136(a0)
|
FLX fs4, 88(a0)
|
||||||
fld fs11, 144(a0)
|
FLX fs5, 96(a0)
|
||||||
|
FLX fs6, 104(a0)
|
||||||
|
FLX fs7, 112(a0)
|
||||||
|
FLX fs8, 120(a0)
|
||||||
|
FLX fs9, 128(a0)
|
||||||
|
FLX fs10, 136(a0)
|
||||||
|
FLX fs11, 144(a0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
seqz a0, a1
|
seqz a0, a1
|
||||||
|
|||||||
+18
-12
@@ -23,18 +23,24 @@ setjmp:
|
|||||||
sw ra, 52(a0)
|
sw ra, 52(a0)
|
||||||
|
|
||||||
#ifndef __riscv_float_abi_soft
|
#ifndef __riscv_float_abi_soft
|
||||||
fsd fs0, 56(a0)
|
#ifdef __riscv_float_abi_double
|
||||||
fsd fs1, 64(a0)
|
#define FSX fsd
|
||||||
fsd fs2, 72(a0)
|
#else
|
||||||
fsd fs3, 80(a0)
|
#define FSX fsw
|
||||||
fsd fs4, 88(a0)
|
#endif
|
||||||
fsd fs5, 96(a0)
|
|
||||||
fsd fs6, 104(a0)
|
FSX fs0, 56(a0)
|
||||||
fsd fs7, 112(a0)
|
FSX fs1, 64(a0)
|
||||||
fsd fs8, 120(a0)
|
FSX fs2, 72(a0)
|
||||||
fsd fs9, 128(a0)
|
FSX fs3, 80(a0)
|
||||||
fsd fs10, 136(a0)
|
FSX fs4, 88(a0)
|
||||||
fsd fs11, 144(a0)
|
FSX fs5, 96(a0)
|
||||||
|
FSX fs6, 104(a0)
|
||||||
|
FSX fs7, 112(a0)
|
||||||
|
FSX fs8, 120(a0)
|
||||||
|
FSX fs9, 128(a0)
|
||||||
|
FSX fs10, 136(a0)
|
||||||
|
FSX fs11, 144(a0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
li a0, 0
|
li a0, 0
|
||||||
|
|||||||
@@ -23,18 +23,24 @@ longjmp:
|
|||||||
ld ra, 104(a0)
|
ld ra, 104(a0)
|
||||||
|
|
||||||
#ifndef __riscv_float_abi_soft
|
#ifndef __riscv_float_abi_soft
|
||||||
fld fs0, 112(a0)
|
#ifdef __riscv_float_abi_double
|
||||||
fld fs1, 120(a0)
|
#define FLX fld
|
||||||
fld fs2, 128(a0)
|
#else
|
||||||
fld fs3, 136(a0)
|
#define FLX flw
|
||||||
fld fs4, 144(a0)
|
#endif
|
||||||
fld fs5, 152(a0)
|
|
||||||
fld fs6, 160(a0)
|
FLX fs0, 112(a0)
|
||||||
fld fs7, 168(a0)
|
FLX fs1, 120(a0)
|
||||||
fld fs8, 176(a0)
|
FLX fs2, 128(a0)
|
||||||
fld fs9, 184(a0)
|
FLX fs3, 136(a0)
|
||||||
fld fs10, 192(a0)
|
FLX fs4, 144(a0)
|
||||||
fld fs11, 200(a0)
|
FLX fs5, 152(a0)
|
||||||
|
FLX fs6, 160(a0)
|
||||||
|
FLX fs7, 168(a0)
|
||||||
|
FLX fs8, 176(a0)
|
||||||
|
FLX fs9, 184(a0)
|
||||||
|
FLX fs10, 192(a0)
|
||||||
|
FLX fs11, 200(a0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
seqz a0, a1
|
seqz a0, a1
|
||||||
|
|||||||
+18
-12
@@ -23,18 +23,24 @@ setjmp:
|
|||||||
sd ra, 104(a0)
|
sd ra, 104(a0)
|
||||||
|
|
||||||
#ifndef __riscv_float_abi_soft
|
#ifndef __riscv_float_abi_soft
|
||||||
fsd fs0, 112(a0)
|
#ifdef __riscv_float_abi_double
|
||||||
fsd fs1, 120(a0)
|
#define FSX fsd
|
||||||
fsd fs2, 128(a0)
|
#else
|
||||||
fsd fs3, 136(a0)
|
#define FSX fsw
|
||||||
fsd fs4, 144(a0)
|
#endif
|
||||||
fsd fs5, 152(a0)
|
|
||||||
fsd fs6, 160(a0)
|
FSX fs0, 112(a0)
|
||||||
fsd fs7, 168(a0)
|
FSX fs1, 120(a0)
|
||||||
fsd fs8, 176(a0)
|
FSX fs2, 128(a0)
|
||||||
fsd fs9, 184(a0)
|
FSX fs3, 136(a0)
|
||||||
fsd fs10, 192(a0)
|
FSX fs4, 144(a0)
|
||||||
fsd fs11, 200(a0)
|
FSX fs5, 152(a0)
|
||||||
|
FSX fs6, 160(a0)
|
||||||
|
FSX fs7, 168(a0)
|
||||||
|
FSX fs8, 176(a0)
|
||||||
|
FSX fs9, 184(a0)
|
||||||
|
FSX fs10, 192(a0)
|
||||||
|
FSX fs11, 200(a0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
li a0, 0
|
li a0, 0
|
||||||
|
|||||||
Reference in New Issue
Block a user