mirror of
https://github.com/qemu/qemu.git
synced 2024-11-27 22:03:35 +08:00
tcg-s390: new TCG Target
Original patch from Ulrich Hecht, further work from Alexander Graf and Richard Henderson. Cc: Ulrich Hecht <uli@suse.de> Cc: Alexander Graf <agraf@suse.de> Signed-off-by: Richard Henderson <rth@twiddle.net> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
parent
b9e946c781
commit
48bb3750e1
2
configure
vendored
2
configure
vendored
@ -733,10 +733,12 @@ case "$cpu" in
|
||||
s390)
|
||||
QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
|
||||
LDFLAGS="-m31 $LDFLAGS"
|
||||
host_guest_base="yes"
|
||||
;;
|
||||
s390x)
|
||||
QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
|
||||
LDFLAGS="-m64 $LDFLAGS"
|
||||
host_guest_base="yes"
|
||||
;;
|
||||
i386)
|
||||
QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -23,10 +23,15 @@
|
||||
*/
|
||||
#define TCG_TARGET_S390 1
|
||||
|
||||
#ifdef __s390x__
|
||||
#define TCG_TARGET_REG_BITS 64
|
||||
#else
|
||||
#define TCG_TARGET_REG_BITS 32
|
||||
#endif
|
||||
|
||||
#define TCG_TARGET_WORDS_BIGENDIAN
|
||||
|
||||
enum {
|
||||
typedef enum TCGReg {
|
||||
TCG_REG_R0 = 0,
|
||||
TCG_REG_R1,
|
||||
TCG_REG_R2,
|
||||
@ -43,44 +48,49 @@ enum {
|
||||
TCG_REG_R13,
|
||||
TCG_REG_R14,
|
||||
TCG_REG_R15
|
||||
};
|
||||
} TCGReg;
|
||||
|
||||
#define TCG_TARGET_NB_REGS 16
|
||||
|
||||
/* optional instructions */
|
||||
// #define TCG_TARGET_HAS_div_i32
|
||||
// #define TCG_TARGET_HAS_rot_i32
|
||||
// #define TCG_TARGET_HAS_ext8s_i32
|
||||
// #define TCG_TARGET_HAS_ext16s_i32
|
||||
// #define TCG_TARGET_HAS_ext8u_i32
|
||||
// #define TCG_TARGET_HAS_ext16u_i32
|
||||
// #define TCG_TARGET_HAS_bswap16_i32
|
||||
// #define TCG_TARGET_HAS_bswap32_i32
|
||||
#define TCG_TARGET_HAS_div2_i32
|
||||
#define TCG_TARGET_HAS_rot_i32
|
||||
#define TCG_TARGET_HAS_ext8s_i32
|
||||
#define TCG_TARGET_HAS_ext16s_i32
|
||||
#define TCG_TARGET_HAS_ext8u_i32
|
||||
#define TCG_TARGET_HAS_ext16u_i32
|
||||
#define TCG_TARGET_HAS_bswap16_i32
|
||||
#define TCG_TARGET_HAS_bswap32_i32
|
||||
// #define TCG_TARGET_HAS_not_i32
|
||||
// #define TCG_TARGET_HAS_neg_i32
|
||||
#define TCG_TARGET_HAS_neg_i32
|
||||
// #define TCG_TARGET_HAS_andc_i32
|
||||
// #define TCG_TARGET_HAS_orc_i32
|
||||
// #define TCG_TARGET_HAS_eqv_i32
|
||||
// #define TCG_TARGET_HAS_nand_i32
|
||||
// #define TCG_TARGET_HAS_nor_i32
|
||||
|
||||
// #define TCG_TARGET_HAS_div_i64
|
||||
// #define TCG_TARGET_HAS_rot_i64
|
||||
// #define TCG_TARGET_HAS_ext8s_i64
|
||||
// #define TCG_TARGET_HAS_ext16s_i64
|
||||
// #define TCG_TARGET_HAS_ext32s_i64
|
||||
// #define TCG_TARGET_HAS_ext8u_i64
|
||||
// #define TCG_TARGET_HAS_ext16u_i64
|
||||
// #define TCG_TARGET_HAS_ext32u_i64
|
||||
// #define TCG_TARGET_HAS_bswap16_i64
|
||||
// #define TCG_TARGET_HAS_bswap32_i64
|
||||
// #define TCG_TARGET_HAS_bswap64_i64
|
||||
#if TCG_TARGET_REG_BITS == 64
|
||||
#define TCG_TARGET_HAS_div2_i64
|
||||
#define TCG_TARGET_HAS_rot_i64
|
||||
#define TCG_TARGET_HAS_ext8s_i64
|
||||
#define TCG_TARGET_HAS_ext16s_i64
|
||||
#define TCG_TARGET_HAS_ext32s_i64
|
||||
#define TCG_TARGET_HAS_ext8u_i64
|
||||
#define TCG_TARGET_HAS_ext16u_i64
|
||||
#define TCG_TARGET_HAS_ext32u_i64
|
||||
#define TCG_TARGET_HAS_bswap16_i64
|
||||
#define TCG_TARGET_HAS_bswap32_i64
|
||||
#define TCG_TARGET_HAS_bswap64_i64
|
||||
// #define TCG_TARGET_HAS_not_i64
|
||||
// #define TCG_TARGET_HAS_neg_i64
|
||||
#define TCG_TARGET_HAS_neg_i64
|
||||
// #define TCG_TARGET_HAS_andc_i64
|
||||
// #define TCG_TARGET_HAS_orc_i64
|
||||
// #define TCG_TARGET_HAS_eqv_i64
|
||||
// #define TCG_TARGET_HAS_nand_i64
|
||||
// #define TCG_TARGET_HAS_nor_i64
|
||||
#endif
|
||||
|
||||
#define TCG_TARGET_HAS_GUEST_BASE
|
||||
|
||||
/* used for function call generation */
|
||||
#define TCG_REG_CALL_STACK TCG_REG_R15
|
||||
|
Loading…
Reference in New Issue
Block a user