mips: add mips-sf subarch support (soft-float)
Userspace emulated floating-point (gcc -msoft-float) is not compatible with the default mips abi (assumes an FPU or in kernel emulation of it). Soft vs hard float abi should not be mixed, __mips_soft_float is checked in musl's configure script and there is no runtime check. The -sf subarch does not save/restore floating-point registers in setjmp/longjmp and only provides dummy fenv implementation.
This commit is contained in:
@@ -1,3 +1,7 @@
|
||||
#ifdef __mips_soft_float
|
||||
#define FE_ALL_EXCEPT 0
|
||||
#define FE_TONEAREST 0
|
||||
#else
|
||||
#define FE_INEXACT 4
|
||||
#define FE_UNDERFLOW 8
|
||||
#define FE_OVERFLOW 16
|
||||
@@ -10,6 +14,7 @@
|
||||
#define FE_TOWARDZERO 1
|
||||
#define FE_UPWARD 2
|
||||
#define FE_DOWNWARD 3
|
||||
#endif
|
||||
|
||||
typedef unsigned short fexcept_t;
|
||||
|
||||
|
||||
+7
-1
@@ -8,7 +8,13 @@
|
||||
#define ENDIAN_SUFFIX ""
|
||||
#endif
|
||||
|
||||
#define LDSO_ARCH "mips" ENDIAN_SUFFIX
|
||||
#ifdef __mips_soft_float
|
||||
#define FP_SUFFIX "-sf"
|
||||
#else
|
||||
#define FP_SUFFIX ""
|
||||
#endif
|
||||
|
||||
#define LDSO_ARCH "mips" ENDIAN_SUFFIX FP_SUFFIX
|
||||
|
||||
#define IS_COPY(x) ((x)==R_MIPS_COPY)
|
||||
#define IS_PLT(x) 1
|
||||
|
||||
Reference in New Issue
Block a user