summaryrefslogtreecommitdiff
path: root/include/elf/loongarch.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/elf/loongarch.h')
-rw-r--r--include/elf/loongarch.h37
1 files changed, 23 insertions, 14 deletions
diff --git a/include/elf/loongarch.h b/include/elf/loongarch.h
index b835a3e98c7..b7aa4ff069c 100644
--- a/include/elf/loongarch.h
+++ b/include/elf/loongarch.h
@@ -93,27 +93,36 @@ RELOC_NUMBER (R_LARCH_GNU_VTENTRY, 58)
END_RELOC_NUMBERS (R_LARCH_count)
/* Processor specific flags for the ELF header e_flags field. */
-#define EF_LOONGARCH_ABI_ILP32 0b01
-#define EF_LOONGARCH_ABI_LP64 0b11
-#define EF_LOONGARCH_ABI_MASK 0b11
+/*The flag lp64s/lp64f/lp64d/ilp32s/ilp32f/ilp32d 3bits. */
+#define EF_LOONGARCH_ABI_LP64_SOFT_FLOAT 0x1
+#define EF_LOONGARCH_ABI_LP64_SINGLE_FLOAT 0x2
+#define EF_LOONGARCH_ABI_LP64_DOUBLE_FLOAT 0x3
-#define EF_LOONGARCH_FLOAT_ABI_SOFT 0b001100
-#define EF_LOONGARCH_FLOAT_ABI_SINGLE 0b001000
-#define EF_LOONGARCH_FLOAT_ABI_DOUBLE 0b000000
-#define EF_LOONGARCH_FLOAT_ABI_MASK 0b111100
+#define EF_LOONGARCH_ABI_ILP32_SOFT_FLOAT 0x5
+#define EF_LOONGARCH_ABI_ILP32_SINGLE_FLOAT 0x6
+#define EF_LOONGARCH_ABI_ILP32_DOUBLE_FLOAT 0x7
+
+#define EF_LOONGARCH_ABI_MASK 0x7
+#define EF_LOONGARCH_ABI_ILP32_MASK 0x4
+#define EF_LOONGARCH_ABI_FLOAT_MASK 0x3
+#define EF_LOONGARCH_ABI_SOFT_FLOAT_MASK 0x1
+#define EF_LOONGARCH_ABI_SINGLE_FLOAT_MASK 0x2
+#define EF_LOONGARCH_ABI_DOUBLE_FLOAT_MASK 0x3
+
+#define EF_LOONGARCH_ABI(abi) (EF_LOONGARCH_ABI_MASK & (abi))
#define EF_LOONGARCH_IS_LP64(abi) \
- ((abi & EF_LOONGARCH_ABI_MASK) == EF_LOONGARCH_ABI_LP64)
+ (EF_LOONGARCH_ABI(abi) && (!(EF_LOONGARCH_ABI(abi) & EF_LOONGARCH_ABI_ILP32_MASK)))
#define EF_LOONGARCH_IS_ILP32(abi) \
- ((abi & EF_LOONGARCH_ABI_MASK) == EF_LOONGARCH_ABI_ILP32)
+ (EF_LOONGARCH_ABI(abi) && (EF_LOONGARCH_ABI(abi) & EF_LOONGARCH_ABI_ILP32_MASK))
#define EF_LOONGARCH_IS_SOFT_FLOAT(abi) \
- ((abi & EF_LOONGARCH_FLOAT_ABI_MASK) == EF_LOONGARCH_FLOAT_ABI_SOFT)
+ (!((EF_LOONGARCH_ABI(abi) & EF_LOONGARCH_ABI_FLOAT_MASK) ^ EF_LOONGARCH_ABI_SOFT_FLOAT_MASK))
+
#define EF_LOONGARCH_IS_SINGLE_FLOAT(abi) \
- ((abi & EF_LOONGARCH_FLOAT_ABI_MASK) == EF_LOONGARCH_FLOAT_ABI_SINGLE)
-#define EF_LOONGARCH_IS_DOUBLE_FLOAT(abi) \
- ((abi & EF_LOONGARCH_FLOAT_ABI_MASK) == EF_LOONGARCH_FLOAT_ABI_DOUBLE)
+ (!((EF_LOONGARCH_ABI(abi) & EF_LOONGARCH_ABI_FLOAT_MASK) ^ EF_LOONGARCH_ABI_SINGLE_FLOAT_MASK))
-#define EF_LOONGARCH_ABI (EF_LOONGARCH_ABI_MASK | EF_LOONGARCH_FLOAT_ABI_MASK)
+#define EF_LOONGARCH_IS_DOUBLE_FLOAT(abi) \
+ (!((EF_LOONGARCH_ABI(abi) & EF_LOONGARCH_ABI_FLOAT_MASK) ^ EF_LOONGARCH_ABI_DOUBLE_FLOAT_MASK))
#endif /* _ELF_LOONGARCH_H */