diff options
Diffstat (limited to 'target-s390.c')
-rw-r--r-- | target-s390.c | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/target-s390.c b/target-s390.c new file mode 100644 index 00000000..8fe7d936 --- /dev/null +++ b/target-s390.c @@ -0,0 +1,48 @@ +#include "symbol.h" +#include "target.h" +#include "machine.h" + + +static void predefine_s390(const struct target *self) +{ + predefine("__s390__", 1, "1"); +} + +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, + + .predefine = predefine_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, +}; |