| #include "symbol.h" |
| #include "target.h" |
| #include "machine.h" |
| |
| |
| static void init_arm(const struct target *self) |
| { |
| fast16_ctype = &int_ctype; |
| ufast16_ctype = &uint_ctype; |
| fast32_ctype = &int_ctype; |
| ufast32_ctype = &uint_ctype; |
| |
| if (arch_os == OS_NONE) { |
| int32_ctype = &long_ctype; |
| uint32_ctype = &ulong_ctype; |
| fast8_ctype = &int_ctype; |
| ufast8_ctype = &uint_ctype; |
| } |
| } |
| |
| static void predefine_arm(const struct target *self) |
| { |
| predefine("__arm__", 1, "1"); |
| predefine("__VFP_FP__", 1, "1"); |
| |
| switch (arch_fp_abi) { |
| case FP_ABI_HARD: |
| predefine("__ARM_PCS_VFP", 1, "1"); |
| break; |
| case FP_ABI_SOFT: |
| predefine("__SOFTFP__", 1, "1"); |
| /* fall-through */ |
| case FP_ABI_HYBRID: |
| predefine("__ARM_PCS", 1, "1"); |
| break; |
| } |
| |
| if (arch_big_endian) |
| predefine("__ARMEB__", 0, "1"); |
| else |
| predefine("__ARMEL__", 0, "1"); |
| } |
| |
| const struct target target_arm = { |
| .mach = MACH_ARM, |
| .bitness = ARCH_LP32, |
| .big_endian = 0, |
| .unsigned_char = 1, |
| |
| .wchar = &uint_ctype, |
| |
| .bits_in_longdouble = 64, |
| .max_fp_alignment = 8, |
| |
| .init = init_arm, |
| .predefine = predefine_arm, |
| }; |