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