Message ID | 1403262794-19963-1-git-send-email-hunterlaux@gmail.com |
---|---|
State | New |
Headers | show |
On 20 June 2014 12:13, Hunter Laux <hunterlaux@gmail.com> wrote: > OABI arm used a software interrupt(0xef9f0001) for breakpoints. > Since 2005 gdb has used the break instruction(0xe7f001f0) for EABI. > Apparently Steel Bank Common Lisp still uses the swi instruction. > > This is the kernel implementation: > http://lxr.free-electrons.com/source/arch/arm/kernel/traps.c#L598 > > Signed-off-by: Hunter Laux <hunterlaux@gmail.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
20.06.2014 15:13, Hunter Laux wrote: > OABI arm used a software interrupt(0xef9f0001) for breakpoints. > Since 2005 gdb has used the break instruction(0xe7f001f0) for EABI. > Apparently Steel Bank Common Lisp still uses the swi instruction. Applied to -trivial, despite the ugliness with the goto. Oh well. Thank you! /mjt
On Tue, Jun 24, 2014 at 07:58:36PM +0400, Michael Tokarev wrote: > 20.06.2014 15:13, Hunter Laux wrote: > > OABI arm used a software interrupt(0xef9f0001) for breakpoints. > > Since 2005 gdb has used the break instruction(0xe7f001f0) for EABI. > > Apparently Steel Bank Common Lisp still uses the swi instruction. > Applied to -trivial, despite the ugliness with the goto. Oh well. It was already in my yesterdays linux-user pull req ( which I need to resend with the name_to_handle_at/open_by_handle_at syscalls fixed ). Riku
24.06.2014 22:54, Riku Voipio wrote: > On Tue, Jun 24, 2014 at 07:58:36PM +0400, Michael Tokarev wrote: >> 20.06.2014 15:13, Hunter Laux wrote: >>> OABI arm used a software interrupt(0xef9f0001) for breakpoints. >>> Since 2005 gdb has used the break instruction(0xe7f001f0) for EABI. >>> Apparently Steel Bank Common Lisp still uses the swi instruction. > >> Applied to -trivial, despite the ugliness with the goto. Oh well. > > It was already in my yesterdays linux-user pull req ( which I need > to resend with the name_to_handle_at/open_by_handle_at syscalls fixed ). If it is the same patch, git should do the Right Thing when pulling your branch, without causing conflicts. You could notify me about you applying this patch to -linux-user branch. I haven't noticed this patch in your pull req, -- I don't always watch all pull requests. Thanks, /mjt
diff --git a/linux-user/arm/syscall.h b/linux-user/arm/syscall.h index ce2c2a8..e0d2cc3 100644 --- a/linux-user/arm/syscall.h +++ b/linux-user/arm/syscall.h @@ -29,6 +29,7 @@ struct target_pt_regs { #define ARM_THUMB_SYSCALL 0 #define ARM_NR_BASE 0xf0000 +#define ARM_NR_breakpoint (ARM_NR_BASE + 1) #define ARM_NR_cacheflush (ARM_NR_BASE + 2) #define ARM_NR_set_tls (ARM_NR_BASE + 5) diff --git a/linux-user/main.c b/linux-user/main.c index a87c6f7..9c3eddc 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -807,6 +807,9 @@ void cpu_loop(CPUARMState *env) cpu_set_tls(env, env->regs[0]); env->regs[0] = 0; break; + case ARM_NR_breakpoint: + env->regs[15] -= env->thumb ? 2 : 4; + goto excp_debug; default: gemu_log("qemu: Unsupported ARM syscall: 0x%x\n", n); @@ -850,6 +853,7 @@ void cpu_loop(CPUARMState *env) } break; case EXCP_DEBUG: + excp_debug: { int sig;
OABI arm used a software interrupt(0xef9f0001) for breakpoints. Since 2005 gdb has used the break instruction(0xe7f001f0) for EABI. Apparently Steel Bank Common Lisp still uses the swi instruction. This is the kernel implementation: http://lxr.free-electrons.com/source/arch/arm/kernel/traps.c#L598 Signed-off-by: Hunter Laux <hunterlaux@gmail.com> --- linux-user/arm/syscall.h | 1 + linux-user/main.c | 4 ++++ 2 files changed, 5 insertions(+)