param_key: fix container of when no struct member is referenced
[smatch.git] / target-arm.c
blob104c319b23ddc1da87696d75fc1815fd0177d98f
1 #include "symbol.h"
2 #include "target.h"
3 #include "machine.h"
6 static void init_arm(const struct target *self)
8 fast16_ctype = &int_ctype;
9 ufast16_ctype = &uint_ctype;
10 fast32_ctype = &int_ctype;
11 ufast32_ctype = &uint_ctype;
13 if (arch_os == OS_NONE) {
14 int32_ctype = &long_ctype;
15 uint32_ctype = &ulong_ctype;
16 fast8_ctype = &int_ctype;
17 ufast8_ctype = &uint_ctype;
21 static void predefine_arm(const struct target *self)
23 predefine("__arm__", 1, "1");
24 predefine("__VFP_FP__", 1, "1");
26 switch (arch_fp_abi) {
27 case FP_ABI_HARD:
28 predefine("__ARM_PCS_VFP", 1, "1");
29 break;
30 case FP_ABI_SOFT:
31 predefine("__SOFTFP__", 1, "1");
32 /* fall-through */
33 case FP_ABI_HYBRID:
34 predefine("__ARM_PCS", 1, "1");
35 break;
38 if (arch_big_endian)
39 predefine("__ARMEB__", 0, "1");
40 else
41 predefine("__ARMEL__", 0, "1");
44 const struct target target_arm = {
45 .mach = MACH_ARM,
46 .bitness = ARCH_LP32,
47 .big_endian = 0,
48 .unsigned_char = 1,
50 .wchar = &uint_ctype,
52 .bits_in_longdouble = 64,
53 .max_fp_alignment = 8,
55 .init = init_arm,
56 .predefine = predefine_arm,