aboutsummaryrefslogtreecommitdiff
path: root/target-s390x
diff options
context:
space:
mode:
authorAlexander Graf <agraf@suse.de>2011-11-18 16:45:54 +0100
committerAlexander Graf <agraf@suse.de>2012-01-04 02:48:14 +0100
commit7d77793d6bf5ecb784040aef946ff7b4d52f2d2a (patch)
treef9a1f7409a2e26a0b842dbbdf501c156a625ad39 /target-s390x
parent971ca4d906958fc09c8c69edde6f3caa4a843766 (diff)
downloadqemu-7d77793d6bf5ecb784040aef946ff7b4d52f2d2a.zip
qemu-7d77793d6bf5ecb784040aef946ff7b4d52f2d2a.tar.gz
qemu-7d77793d6bf5ecb784040aef946ff7b4d52f2d2a.tar.bz2
s390x: add TR function for EXECUTE
Newer gcc versions (or glibc?) also generate code that tries to EXECUTE the TR opcode. Implement it so that we don't break valid guests. Reported-by: Andreas Faerber <afaerber@suse.de> Signed-off-by: Alexander Graf <agraf@suse.de>
Diffstat (limited to 'target-s390x')
-rw-r--r--target-s390x/op_helper.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/target-s390x/op_helper.c b/target-s390x/op_helper.c
index b8a1a8a..cf26b29 100644
--- a/target-s390x/op_helper.c
+++ b/target-s390x/op_helper.c
@@ -636,6 +636,9 @@ uint32_t HELPER(ex)(uint32_t cc, uint64_t v1, uint64_t addr, uint64_t ret)
case 0x700:
cc = helper_xc(l, get_address(0, b1, d1), get_address(0, b2, d2));
break;
+ case 0xc00:
+ helper_tr(l, get_address(0, b1, d1), get_address(0, b2, d2));
+ break;
default:
goto abort;
break;