diff mbox

[v2,5/9] target-s390: Fix STIDP

Message ID 1380647845-16793-6-git-send-email-rth@twiddle.net
State New
Headers show

Commit Message

Richard Henderson Oct. 1, 2013, 5:17 p.m. UTC
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>
---
 target-s390x/cpu.h       | 4 +++-
 target-s390x/translate.c | 6 ++++++
 2 files changed, 9 insertions(+), 1 deletion(-)
diff mbox

Patch

diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h
index 382c691..ca9c3dd 100644
--- a/target-s390x/cpu.h
+++ b/target-s390x/cpu.h
@@ -197,7 +197,9 @@  typedef struct CPUS390XState {
     /* reset does memset(0) up to here */
     uint64_t facilities[2];
 
-    int cpu_num;
+    uint32_t cpu_num;
+    uint32_t machine_type;
+
     uint8_t *storage_keys;
 
     uint64_t tod_offset;
diff --git a/target-s390x/translate.c b/target-s390x/translate.c
index c1ea060..b97c44a 100644
--- a/target-s390x/translate.c
+++ b/target-s390x/translate.c
@@ -3238,8 +3238,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;
 }