mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-30 05:21:55 -06:00
cpu: Turn cpu_unassigned_access() into a CPUState hook
Use it for all targets, but be careful not to pass invalid CPUState. cpu_single_env can be NULL, e.g. on Xen. Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
ce927ed9e4
commit
c658b94f6e
16 changed files with 124 additions and 45 deletions
|
@ -263,6 +263,7 @@ static void alpha_cpu_class_init(ObjectClass *oc, void *data)
|
|||
cc->class_by_name = alpha_cpu_class_by_name;
|
||||
cc->do_interrupt = alpha_cpu_do_interrupt;
|
||||
cc->dump_state = alpha_cpu_dump_state;
|
||||
cpu_class_set_do_unassigned_access(cc, alpha_cpu_unassigned_access);
|
||||
device_class_set_vmsd(dc, &vmstate_alpha_cpu);
|
||||
}
|
||||
|
||||
|
|
|
@ -457,9 +457,9 @@ uint64_t cpu_alpha_load_fpcr (CPUAlphaState *env);
|
|||
void cpu_alpha_store_fpcr (CPUAlphaState *env, uint64_t val);
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
void swap_shadow_regs(CPUAlphaState *env);
|
||||
QEMU_NORETURN void cpu_unassigned_access(CPUAlphaState *env1,
|
||||
hwaddr addr, int is_write,
|
||||
int is_exec, int unused, int size);
|
||||
QEMU_NORETURN void alpha_cpu_unassigned_access(CPUState *cpu, hwaddr addr,
|
||||
bool is_write, bool is_exec,
|
||||
int unused, unsigned size);
|
||||
#endif
|
||||
|
||||
/* Bits in TB->FLAGS that control how translation is processed. */
|
||||
|
|
|
@ -109,11 +109,15 @@ static void do_unaligned_access(CPUAlphaState *env, target_ulong addr,
|
|||
cpu_loop_exit(env);
|
||||
}
|
||||
|
||||
void cpu_unassigned_access(CPUAlphaState *env, hwaddr addr,
|
||||
int is_write, int is_exec, int unused, int size)
|
||||
void alpha_cpu_unassigned_access(CPUState *cs, hwaddr addr,
|
||||
bool is_write, bool is_exec, int unused,
|
||||
unsigned size)
|
||||
{
|
||||
AlphaCPU *cpu = ALPHA_CPU(cs);
|
||||
CPUAlphaState *env = &cpu->env;
|
||||
|
||||
env->trap_arg0 = addr;
|
||||
env->trap_arg1 = is_write;
|
||||
env->trap_arg1 = is_write ? 1 : 0;
|
||||
dynamic_excp(env, 0, EXCP_MCHK, 0);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue