mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -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
|
@ -138,8 +138,8 @@ static void mb_cpu_class_init(ObjectClass *oc, void *data)
|
|||
|
||||
cc->do_interrupt = mb_cpu_do_interrupt;
|
||||
cc->dump_state = mb_cpu_dump_state;
|
||||
cpu_class_set_do_unassigned_access(cc, mb_cpu_unassigned_access);
|
||||
dc->vmsd = &vmstate_mb_cpu;
|
||||
|
||||
dc->props = mb_properties;
|
||||
}
|
||||
|
||||
|
|
|
@ -367,8 +367,9 @@ static inline void cpu_get_tb_cpu_state(CPUMBState *env, target_ulong *pc,
|
|||
}
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
void cpu_unassigned_access(CPUMBState *env1, hwaddr addr,
|
||||
int is_write, int is_exec, int is_asi, int size);
|
||||
void mb_cpu_unassigned_access(CPUState *cpu, hwaddr addr,
|
||||
bool is_write, bool is_exec, int is_asi,
|
||||
unsigned size);
|
||||
#endif
|
||||
|
||||
static inline bool cpu_has_work(CPUState *cpu)
|
||||
|
|
|
@ -495,12 +495,21 @@ void helper_mmu_write(CPUMBState *env, uint32_t rn, uint32_t v)
|
|||
mmu_write(env, rn, v);
|
||||
}
|
||||
|
||||
void cpu_unassigned_access(CPUMBState *env, hwaddr addr,
|
||||
int is_write, int is_exec, int is_asi, int size)
|
||||
void mb_cpu_unassigned_access(CPUState *cs, hwaddr addr,
|
||||
bool is_write, bool is_exec, int is_asi,
|
||||
unsigned size)
|
||||
{
|
||||
MicroBlazeCPU *cpu;
|
||||
CPUMBState *env;
|
||||
|
||||
qemu_log_mask(CPU_LOG_INT, "Unassigned " TARGET_FMT_plx " wr=%d exe=%d\n",
|
||||
addr, is_write, is_exec);
|
||||
if (!env || !(env->sregs[SR_MSR] & MSR_EE)) {
|
||||
addr, is_write ? 1 : 0, is_exec ? 1 : 0);
|
||||
if (cs == NULL) {
|
||||
return;
|
||||
}
|
||||
cpu = MICROBLAZE_CPU(cs);
|
||||
env = &cpu->env;
|
||||
if (!(env->sregs[SR_MSR] & MSR_EE)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue