123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- #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,
- };
|