aboutsummaryrefslogtreecommitdiff
path: root/target-s390x/translate.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@twiddle.net>2013-09-20 11:33:41 -0700
committerRichard Henderson <rth@twiddle.net>2015-02-03 12:06:37 -0800
commit7f745b31b39cb9be8b3c3dfaf3173390ae07353e (patch)
tree2143e9ff944720d1e9ee00807412ce7ab16d9a4a /target-s390x/translate.c
parente30a9d3fea58c356000ce328421fe65e03143bb1 (diff)
target-s390: Fix STIDP
The implementation had been incomplete, as we did not store the machine type. Note that the machine_type member is still unset during initialization, so this has no effect yet. Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'target-s390x/translate.c')
-rw-r--r--target-s390x/translate.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index 97137c99cf..0c5191737d 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -3262,8 +3262,14 @@ static ExitStatus op_stctl(DisasContext *s, DisasOps *o)
static ExitStatus op_stidp(DisasContext *s, DisasOps *o)
{
+ TCGv_i64 t1 = tcg_temp_new_i64();
+
check_privileged(s);
tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, cpu_num));
+ tcg_gen_ld32u_i64(t1, cpu_env, offsetof(CPUS390XState, machine_type));
+ tcg_gen_deposit_i64(o->out, o->out, t1, 32, 32);
+ tcg_temp_free_i64(t1);
+
return NO_EXIT;
}