translate.c (377dc84e2d58a734f9b9d299f218c4111133addb) | translate.c (199c42a6a16ba32b5684e679df949cf29024b0cf) |
---|---|
1/* 2 * S/390 translation 3 * 4 * Copyright (c) 2009 Ulrich Hecht 5 * Copyright (c) 2010 Alexander Graf 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public --- 4054 unchanged lines hidden (view full) --- 4063} 4064 4065static DisasJumpType op_sske(DisasContext *s, DisasOps *o) 4066{ 4067 gen_helper_sske(cpu_env, o->in1, o->in2); 4068 return DISAS_NEXT; 4069} 4070 | 1/* 2 * S/390 translation 3 * 4 * Copyright (c) 2009 Ulrich Hecht 5 * Copyright (c) 2010 Alexander Graf 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Lesser General Public --- 4054 unchanged lines hidden (view full) --- 4063} 4064 4065static DisasJumpType op_sske(DisasContext *s, DisasOps *o) 4066{ 4067 gen_helper_sske(cpu_env, o->in1, o->in2); 4068 return DISAS_NEXT; 4069} 4070 |
4071static void gen_check_psw_mask(DisasContext *s) 4072{ 4073 TCGv_i64 reserved = tcg_temp_new_i64(); 4074 TCGLabel *ok = gen_new_label(); 4075 4076 tcg_gen_andi_i64(reserved, psw_mask, PSW_MASK_RESERVED); 4077 tcg_gen_brcondi_i64(TCG_COND_EQ, reserved, 0, ok); 4078 gen_program_exception(s, PGM_SPECIFICATION); 4079 gen_set_label(ok); 4080} 4081 |
|
4071static DisasJumpType op_ssm(DisasContext *s, DisasOps *o) 4072{ 4073 tcg_gen_deposit_i64(psw_mask, psw_mask, o->in2, 56, 8); | 4082static DisasJumpType op_ssm(DisasContext *s, DisasOps *o) 4083{ 4084 tcg_gen_deposit_i64(psw_mask, psw_mask, o->in2, 56, 8); |
4085 4086 gen_check_psw_mask(s); 4087 |
|
4074 /* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */ 4075 s->exit_to_mainloop = true; 4076 return DISAS_TOO_MANY; 4077} 4078 4079static DisasJumpType op_stap(DisasContext *s, DisasOps *o) 4080{ 4081 tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, core_id)); --- 244 unchanged lines hidden (view full) --- 4326 4327 if (s->fields.op == 0xac) { 4328 tcg_gen_andi_i64(psw_mask, psw_mask, 4329 (i2 << 56) | 0x00ffffffffffffffull); 4330 } else { 4331 tcg_gen_ori_i64(psw_mask, psw_mask, i2 << 56); 4332 } 4333 | 4088 /* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */ 4089 s->exit_to_mainloop = true; 4090 return DISAS_TOO_MANY; 4091} 4092 4093static DisasJumpType op_stap(DisasContext *s, DisasOps *o) 4094{ 4095 tcg_gen_ld32u_i64(o->out, cpu_env, offsetof(CPUS390XState, core_id)); --- 244 unchanged lines hidden (view full) --- 4340 4341 if (s->fields.op == 0xac) { 4342 tcg_gen_andi_i64(psw_mask, psw_mask, 4343 (i2 << 56) | 0x00ffffffffffffffull); 4344 } else { 4345 tcg_gen_ori_i64(psw_mask, psw_mask, i2 << 56); 4346 } 4347 |
4348 gen_check_psw_mask(s); 4349 |
|
4334 /* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */ 4335 s->exit_to_mainloop = true; 4336 return DISAS_TOO_MANY; 4337} 4338 4339static DisasJumpType op_stura(DisasContext *s, DisasOps *o) 4340{ 4341 tcg_gen_qemu_st_tl(o->in1, o->in2, MMU_REAL_IDX, s->insn->data); --- 2154 unchanged lines hidden --- | 4350 /* Exit to main loop to reevaluate s390_cpu_exec_interrupt. */ 4351 s->exit_to_mainloop = true; 4352 return DISAS_TOO_MANY; 4353} 4354 4355static DisasJumpType op_stura(DisasContext *s, DisasOps *o) 4356{ 4357 tcg_gen_qemu_st_tl(o->in1, o->in2, MMU_REAL_IDX, s->insn->data); --- 2154 unchanged lines hidden --- |