about summary refs log tree commit diff
path: root/sysdeps/loongarch/dl-trampoline.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/loongarch/dl-trampoline.S')
-rw-r--r--sysdeps/loongarch/dl-trampoline.S11
1 files changed, 9 insertions, 2 deletions
diff --git a/sysdeps/loongarch/dl-trampoline.S b/sysdeps/loongarch/dl-trampoline.S
index ad8ab0fda7..9a8f580971 100644
--- a/sysdeps/loongarch/dl-trampoline.S
+++ b/sysdeps/loongarch/dl-trampoline.S
@@ -21,8 +21,11 @@
 
 /* Assembler veneer called from the PLT header code for lazy loading.
    The PLT header passes its own args in t0-t2.  */
-
-# define FRAME_SIZE (-((-10 * SZREG - 8 * SZFREG) & ALMASK))
+#ifdef __loongarch_soft_float
+#define FRAME_SIZE (-((-10 * SZREG) & ALMASK))
+#else
+#define FRAME_SIZE (-((-10 * SZREG - 8 * SZFREG) & ALMASK))
+#endif
 
 ENTRY (_dl_runtime_resolve)
 
@@ -39,6 +42,7 @@ ENTRY (_dl_runtime_resolve)
 	REG_S	a6, sp, 7*SZREG
 	REG_S	a7, sp, 8*SZREG
 
+#ifndef __loongarch_soft_float
 	FREG_S	fa0, sp, 10*SZREG + 0*SZFREG
 	FREG_S	fa1, sp, 10*SZREG + 1*SZFREG
 	FREG_S	fa2, sp, 10*SZREG + 2*SZFREG
@@ -47,6 +51,7 @@ ENTRY (_dl_runtime_resolve)
 	FREG_S	fa5, sp, 10*SZREG + 5*SZFREG
 	FREG_S	fa6, sp, 10*SZREG + 6*SZFREG
 	FREG_S	fa7, sp, 10*SZREG + 7*SZFREG
+#endif
 
 	/* Update .got.plt and obtain runtime address of callee */
 	SLLI	a1, t1, 1
@@ -67,6 +72,7 @@ ENTRY (_dl_runtime_resolve)
 	REG_L	a6, sp, 7*SZREG
 	REG_L	a7, sp, 8*SZREG
 
+#ifndef __loongarch_soft_float
 	FREG_L	fa0, sp, 10*SZREG + 0*SZFREG
 	FREG_L	fa1, sp, 10*SZREG + 1*SZFREG
 	FREG_L	fa2, sp, 10*SZREG + 2*SZFREG
@@ -75,6 +81,7 @@ ENTRY (_dl_runtime_resolve)
 	FREG_L	fa5, sp, 10*SZREG + 5*SZFREG
 	FREG_L	fa6, sp, 10*SZREG + 6*SZFREG
 	FREG_L	fa7, sp, 10*SZREG + 7*SZFREG
+#endif
 
 	ADDI	sp, sp, FRAME_SIZE