#include "symbol.h" #include "target.h" #include "machine.h" static void init_arm64(const struct target *self) { if (arch_cmodel == CMODEL_UNKNOWN) arch_cmodel = CMODEL_SMALL; } static void predefine_arm64(const struct target *self) { static const char *cmodels[CMODEL_LAST] = { [CMODEL_LARGE] = "LARGE", [CMODEL_SMALL] = "SMALL", [CMODEL_TINY] = "TINY", }; const char *cmodel = cmodels[arch_cmodel]; predefine("__aarch64__", 1, "1"); if (arch_big_endian) predefine("__AARCH64EB__", 0, "1"); else predefine("__AARCH64EL__", 0, "1"); if (cmodel) predefine_strong("__AARCH64_CMODEL_%s__", cmodel); } const struct target target_arm64 = { .mach = MACH_ARM64, .bitness = ARCH_LP64, .big_endian = 0, .unsigned_char = 1, .has_int128 = 1, .wchar = &uint_ctype, .init = init_arm64, .predefine = predefine_arm64, };