mirror of
https://github.com/Motorhead1991/qemu.git
synced 2026-01-24 14:16:41 -07:00
target-s390x: PER store-using-real-address event support
This PER event happens each time the STURA or STURG instructions are used. As they use helpers, we can just save the event in the PER code there, if enabled. Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
311918b979
commit
2f54394997
1 changed files with 16 additions and 0 deletions
|
|
@ -1105,6 +1105,14 @@ void HELPER(stura)(CPUS390XState *env, uint64_t addr, uint64_t v1)
|
|||
CPUState *cs = CPU(s390_env_get_cpu(env));
|
||||
|
||||
stl_phys(cs->as, get_address(env, 0, 0, addr), (uint32_t)v1);
|
||||
|
||||
if ((env->psw.mask & PSW_MASK_PER) &&
|
||||
(env->cregs[9] & PER_CR9_EVENT_STORE) &&
|
||||
(env->cregs[9] & PER_CR9_EVENT_STORE_REAL)) {
|
||||
/* PSW is saved just before calling the helper. */
|
||||
env->per_address = env->psw.addr;
|
||||
env->per_perc_atmid = PER_CODE_EVENT_STORE_REAL | get_per_atmid(env);
|
||||
}
|
||||
}
|
||||
|
||||
void HELPER(sturg)(CPUS390XState *env, uint64_t addr, uint64_t v1)
|
||||
|
|
@ -1112,6 +1120,14 @@ void HELPER(sturg)(CPUS390XState *env, uint64_t addr, uint64_t v1)
|
|||
CPUState *cs = CPU(s390_env_get_cpu(env));
|
||||
|
||||
stq_phys(cs->as, get_address(env, 0, 0, addr), v1);
|
||||
|
||||
if ((env->psw.mask & PSW_MASK_PER) &&
|
||||
(env->cregs[9] & PER_CR9_EVENT_STORE) &&
|
||||
(env->cregs[9] & PER_CR9_EVENT_STORE_REAL)) {
|
||||
/* PSW is saved just before calling the helper. */
|
||||
env->per_address = env->psw.addr;
|
||||
env->per_perc_atmid = PER_CODE_EVENT_STORE_REAL | get_per_atmid(env);
|
||||
}
|
||||
}
|
||||
|
||||
/* load real address */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue