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>
This commit is contained in:
Richard Henderson 2013-09-20 11:33:41 -07:00
parent e30a9d3fea
commit 7f745b31b3
2 changed files with 9 additions and 1 deletions

View File

@ -133,7 +133,9 @@ typedef struct CPUS390XState {
/* reset does memset(0) up to here */
int cpu_num;
uint32_t cpu_num;
uint32_t machine_type;
uint8_t *storage_keys;
uint64_t tod_offset;

View File

@ -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;
}