#include "symbol.h" #include "target.h" #include "machine.h" #include "expression.h" static void init_s390(const struct target *self) { intptr_ctype = &int_ctype; uintptr_ctype = &uint_ctype; fast16_ctype = &int_ctype; ufast16_ctype = &uint_ctype; fast32_ctype = &int_ctype; ufast32_ctype = &uint_ctype; } static void predefine_s390(const struct target *self) { predefine("__s390__", 1, "1"); } static const char *asm_constraint_s390(struct asm_operand *op, int c, const char *str) { switch (c) { case 'R': case 'S': case 'T': op->is_memory = true; break; } return str; } const struct target target_s390 = { .mach = MACH_S390, .bitness = ARCH_LP32, .big_endian = 1, .unsigned_char = 1, .size_t_long = 1, .bits_in_longdouble = 64, .max_fp_alignment = 8, .target_64bit = &target_s390x, .init = init_s390, .predefine = predefine_s390, .asm_constraint = asm_constraint_s390, }; static void predefine_s390x(const struct target *self) { predefine("__zarch__", 1, "1"); predefine("__s390x__", 1, "1"); predefine_s390(self); } const struct target target_s390x = { .mach = MACH_S390X, .bitness = ARCH_LP64, .big_endian = 1, .unsigned_char = 1, .has_int128 = 1, .bits_in_longdouble = 64, .max_fp_alignment = 8, .target_32bit = &target_s390, .predefine = predefine_s390x, .asm_constraint = asm_constraint_s390, };