mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
target-lm32: stop VM on illegal or unknown instruction
Instead of translating the instruction to a no-op, pause the VM and display a message to the user. As a side effect, this also works for instructions where the operands are only known at runtime. Signed-off-by: Michael Walle <michael@walle.cc>
This commit is contained in:
parent
8c5edce5b7
commit
667ff9612b
3 changed files with 86 additions and 38 deletions
|
@ -8,6 +8,10 @@
|
|||
|
||||
#include "exec/softmmu_exec.h"
|
||||
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
#include "sysemu/sysemu.h"
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_USER_ONLY)
|
||||
#define MMUSUFFIX _mmu
|
||||
#define SHIFT 0
|
||||
|
@ -39,6 +43,19 @@ void HELPER(hlt)(CPULM32State *env)
|
|||
cpu_loop_exit(env);
|
||||
}
|
||||
|
||||
void HELPER(ill)(CPULM32State *env)
|
||||
{
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
CPUState *cs = CPU(lm32_env_get_cpu(env));
|
||||
fprintf(stderr, "VM paused due to illegal instruction. "
|
||||
"Connect a debugger or switch to the monitor console "
|
||||
"to find out more.\n");
|
||||
qemu_system_vmstop_request(RUN_STATE_PAUSED);
|
||||
cs->halted = 1;
|
||||
raise_exception(env, EXCP_HALTED);
|
||||
#endif
|
||||
}
|
||||
|
||||
void HELPER(wcsr_bp)(CPULM32State *env, uint32_t bp, uint32_t idx)
|
||||
{
|
||||
uint32_t addr = bp & ~1;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue