bsd-user/arm/arget_arch_cpu.h: Move EXCP_DEBUG and EXCP_BKPT together
Implement EXCP_DEBUG and EXCP_BKPT the same, as is done in linux-user. The prior adjustment of register 15 isn't needed, so remove that. Remove a redunant comment (that code in FreeBSD never handled break points). It's unclear why BKPT was an alias for system calls, but FreeBSD doesn't do that today. Signed-off-by: Warner Losh <imp@bsdimp.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
cfdee273c4
commit
a3ed97cee5
@ -65,19 +65,7 @@ static inline void target_cpu_loop(CPUARMState *env)
|
||||
}
|
||||
break;
|
||||
case EXCP_SWI:
|
||||
case EXCP_BKPT:
|
||||
{
|
||||
/*
|
||||
* system call
|
||||
* See arm/arm/trap.c cpu_fetch_syscall_args()
|
||||
*/
|
||||
if (trapnr == EXCP_BKPT) {
|
||||
if (env->thumb) {
|
||||
env->regs[15] += 2;
|
||||
} else {
|
||||
env->regs[15] += 4;
|
||||
}
|
||||
}
|
||||
n = env->regs[7];
|
||||
if (bsd_type == target_freebsd) {
|
||||
int ret;
|
||||
@ -172,14 +160,8 @@ static inline void target_cpu_loop(CPUARMState *env)
|
||||
queue_signal(env, info.si_signo, &info);
|
||||
break;
|
||||
case EXCP_DEBUG:
|
||||
{
|
||||
|
||||
info.si_signo = TARGET_SIGTRAP;
|
||||
info.si_errno = 0;
|
||||
info.si_code = TARGET_TRAP_BRKPT;
|
||||
info.si_addr = env->exception.vaddress;
|
||||
queue_signal(env, info.si_signo, &info);
|
||||
}
|
||||
case EXCP_BKPT:
|
||||
force_sig_fault(TARGET_SIGTRAP, TARGET_TRAP_BRKPT, env->regs[15]);
|
||||
break;
|
||||
case EXCP_YIELD:
|
||||
/* nothing to do here for user-mode, just resume guest code */
|
||||
|
Loading…
Reference in New Issue
Block a user