1f08c3bdfSopenharmony_ci#include "symbol.h" 2f08c3bdfSopenharmony_ci#include "target.h" 3f08c3bdfSopenharmony_ci#include "machine.h" 4f08c3bdfSopenharmony_ci 5f08c3bdfSopenharmony_ci 6f08c3bdfSopenharmony_cistatic void init_arm(const struct target *self) 7f08c3bdfSopenharmony_ci{ 8f08c3bdfSopenharmony_ci fast16_ctype = &int_ctype; 9f08c3bdfSopenharmony_ci ufast16_ctype = &uint_ctype; 10f08c3bdfSopenharmony_ci fast32_ctype = &int_ctype; 11f08c3bdfSopenharmony_ci ufast32_ctype = &uint_ctype; 12f08c3bdfSopenharmony_ci 13f08c3bdfSopenharmony_ci if (arch_os == OS_NONE) { 14f08c3bdfSopenharmony_ci int32_ctype = &long_ctype; 15f08c3bdfSopenharmony_ci uint32_ctype = &ulong_ctype; 16f08c3bdfSopenharmony_ci fast8_ctype = &int_ctype; 17f08c3bdfSopenharmony_ci ufast8_ctype = &uint_ctype; 18f08c3bdfSopenharmony_ci } 19f08c3bdfSopenharmony_ci} 20f08c3bdfSopenharmony_ci 21f08c3bdfSopenharmony_cistatic void predefine_arm(const struct target *self) 22f08c3bdfSopenharmony_ci{ 23f08c3bdfSopenharmony_ci predefine("__arm__", 1, "1"); 24f08c3bdfSopenharmony_ci predefine("__VFP_FP__", 1, "1"); 25f08c3bdfSopenharmony_ci 26f08c3bdfSopenharmony_ci switch (arch_fp_abi) { 27f08c3bdfSopenharmony_ci case FP_ABI_HARD: 28f08c3bdfSopenharmony_ci predefine("__ARM_PCS_VFP", 1, "1"); 29f08c3bdfSopenharmony_ci break; 30f08c3bdfSopenharmony_ci case FP_ABI_SOFT: 31f08c3bdfSopenharmony_ci predefine("__SOFTFP__", 1, "1"); 32f08c3bdfSopenharmony_ci /* fall-through */ 33f08c3bdfSopenharmony_ci case FP_ABI_HYBRID: 34f08c3bdfSopenharmony_ci predefine("__ARM_PCS", 1, "1"); 35f08c3bdfSopenharmony_ci break; 36f08c3bdfSopenharmony_ci } 37f08c3bdfSopenharmony_ci 38f08c3bdfSopenharmony_ci if (arch_big_endian) 39f08c3bdfSopenharmony_ci predefine("__ARMEB__", 0, "1"); 40f08c3bdfSopenharmony_ci else 41f08c3bdfSopenharmony_ci predefine("__ARMEL__", 0, "1"); 42f08c3bdfSopenharmony_ci} 43f08c3bdfSopenharmony_ci 44f08c3bdfSopenharmony_ciconst struct target target_arm = { 45f08c3bdfSopenharmony_ci .mach = MACH_ARM, 46f08c3bdfSopenharmony_ci .bitness = ARCH_LP32, 47f08c3bdfSopenharmony_ci .big_endian = 0, 48f08c3bdfSopenharmony_ci .unsigned_char = 1, 49f08c3bdfSopenharmony_ci 50f08c3bdfSopenharmony_ci .wchar = &uint_ctype, 51f08c3bdfSopenharmony_ci 52f08c3bdfSopenharmony_ci .bits_in_longdouble = 64, 53f08c3bdfSopenharmony_ci .max_fp_alignment = 8, 54f08c3bdfSopenharmony_ci 55f08c3bdfSopenharmony_ci .init = init_arm, 56f08c3bdfSopenharmony_ci .predefine = predefine_arm, 57f08c3bdfSopenharmony_ci}; 58