| #include "symbol.h" |
| #include "target.h" |
| #include "machine.h" |
| |
| |
| static void predefine_mips(const struct target *self) |
| { |
| predefine("__mips__", 1, "1"); |
| predefine("__mips", 1, "%d", ptr_ctype.bit_size); |
| predefine("_MIPS_SZINT", 1, "%d", int_ctype.bit_size); |
| predefine("_MIPS_SZLONG", 1, "%d", long_ctype.bit_size); |
| predefine("_MIPS_SZPTR", 1, "%d", ptr_ctype.bit_size); |
| |
| if (arch_big_endian) { |
| predefine("_MIPSEB", 1, "1"); |
| predefine("__MIPSEB", 1, "1"); |
| predefine("__MIPSEB__", 1, "1"); |
| } else { |
| predefine("_MIPSEL", 1, "1"); |
| predefine("__MIPSEL", 1, "1"); |
| predefine("__MIPSEL__", 1, "1"); |
| } |
| } |
| |
| |
| static void predefine_mips32(const struct target *self) |
| { |
| predefine_mips(self); |
| } |
| |
| const struct target target_mips32 = { |
| .mach = MACH_MIPS32, |
| .bitness = ARCH_LP32, |
| .big_endian = 1, |
| .unsigned_char = 0, |
| |
| .bits_in_longdouble = 64, |
| .max_fp_alignment = 8, |
| |
| .target_64bit = &target_mips64, |
| |
| .predefine = predefine_mips32, |
| }; |
| |
| |
| static void predefine_mips64(const struct target *self) |
| { |
| predefine("__mips64", 1, "64"); |
| |
| predefine_mips(self); |
| } |
| |
| const struct target target_mips64 = { |
| .mach = MACH_MIPS64, |
| .bitness = ARCH_LP64, |
| .big_endian = 1, |
| .unsigned_char = 0, |
| .has_int128 = 1, |
| |
| .target_32bit = &target_mips32, |
| |
| .predefine = predefine_mips64, |
| }; |