mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
target-s390: Reorg exception handling
Make the user path more like the system path. Prepare for more kinds of runtime exceptions. Rename ILC to ILEN to make it clear that we want to pass around a full instruction length, rather than a "code" that happens to be stored one bit left in a larger field. Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
parent
3fde06f5fb
commit
d5a103cd6e
7 changed files with 242 additions and 261 deletions
|
@ -41,7 +41,7 @@
|
|||
#define HELPER_LOG(x...)
|
||||
#endif
|
||||
|
||||
/* raise an exception */
|
||||
/* Raise an exception statically from a TB. */
|
||||
void HELPER(exception)(CPUS390XState *env, uint32_t excp)
|
||||
{
|
||||
HELPER_LOG("%s: exception %d\n", __func__, excp);
|
||||
|
@ -50,7 +50,7 @@ void HELPER(exception)(CPUS390XState *env, uint32_t excp)
|
|||
}
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
void program_interrupt(CPUS390XState *env, uint32_t code, int ilc)
|
||||
void program_interrupt(CPUS390XState *env, uint32_t code, int ilen)
|
||||
{
|
||||
qemu_log_mask(CPU_LOG_INT, "program interrupt at %#" PRIx64 "\n",
|
||||
env->psw.addr);
|
||||
|
@ -61,7 +61,7 @@ void program_interrupt(CPUS390XState *env, uint32_t code, int ilc)
|
|||
#endif
|
||||
} else {
|
||||
env->int_pgm_code = code;
|
||||
env->int_pgm_ilc = ilc;
|
||||
env->int_pgm_ilen = ilen;
|
||||
env->exception_index = EXCP_PGM;
|
||||
cpu_loop_exit(env);
|
||||
}
|
||||
|
@ -105,7 +105,7 @@ uint64_t HELPER(diag)(CPUS390XState *env, uint32_t num, uint64_t mem,
|
|||
}
|
||||
|
||||
if (r) {
|
||||
program_interrupt(env, PGM_OPERATION, ILC_LATER_INC);
|
||||
program_interrupt(env, PGM_OPERATION, ILEN_LATER_INC);
|
||||
}
|
||||
|
||||
return r;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue