Message ID | 1550076626-7202-1-git-send-email-sandra@codesourcery.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Fix breakpoint support in Nios II user-mode emulation. | expand |
CC'ing NiosII Maintainers On 13/02/2019 17:50, Sandra Loosemore wrote: > Nios II user-mode emulation was missing handling for EXCP_DEBUG, > making the gdb stub essentially useless. This patch adds the missing > piece. The new code was copied from the existing EXCP_TRAP handling > and is also similar to what other targets (e.g., arm) do with EXCP_DEBUG. > > Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> > --- > linux-user/nios2/cpu_loop.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c > index b96b1aa..5aa1eca 100644 > --- a/linux-user/nios2/cpu_loop.c > +++ b/linux-user/nios2/cpu_loop.c > @@ -73,6 +73,12 @@ void cpu_loop(CPUNios2State *env) > queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); > break; > } > + case EXCP_DEBUG: > + info.si_signo = TARGET_SIGTRAP; > + info.si_errno = 0; > + info.si_code = TARGET_TRAP_BRKPT; > + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); > + break; > case 0xaa: > switch (env->regs[R_PC]) { > /*case 0x1000:*/ /* TODO:__kuser_helper_version */ >
Ping? http://lists.nongnu.org/archive/html/qemu-devel/2019-02/msg03483.html -Sandra
On Wed, 13 Feb 2019 at 17:19, Sandra Loosemore <sandra@codesourcery.com> wrote: > > Nios II user-mode emulation was missing handling for EXCP_DEBUG, > making the gdb stub essentially useless. This patch adds the missing > piece. The new code was copied from the existing EXCP_TRAP handling > and is also similar to what other targets (e.g., arm) do with EXCP_DEBUG. > > Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> > --- > linux-user/nios2/cpu_loop.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c > index b96b1aa..5aa1eca 100644 > --- a/linux-user/nios2/cpu_loop.c > +++ b/linux-user/nios2/cpu_loop.c > @@ -73,6 +73,12 @@ void cpu_loop(CPUNios2State *env) > queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); > break; > } > + case EXCP_DEBUG: > + info.si_signo = TARGET_SIGTRAP; > + info.si_errno = 0; > + info.si_code = TARGET_TRAP_BRKPT; > + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); > + break; > case 0xaa: > switch (env->regs[R_PC]) { > /*case 0x1000:*/ /* TODO:__kuser_helper_version */ I don't know NiosII at all, but a quick check of the kernel sources suggests this is correct, so Reviewed-by: Peter Maydell <peter.maydell@linaro.org> thanks -- PMM
On 13/02/2019 17:50, Sandra Loosemore wrote: > Nios II user-mode emulation was missing handling for EXCP_DEBUG, > making the gdb stub essentially useless. This patch adds the missing > piece. The new code was copied from the existing EXCP_TRAP handling > and is also similar to what other targets (e.g., arm) do with EXCP_DEBUG. > > Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> > --- > linux-user/nios2/cpu_loop.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c > index b96b1aa..5aa1eca 100644 > --- a/linux-user/nios2/cpu_loop.c > +++ b/linux-user/nios2/cpu_loop.c > @@ -73,6 +73,12 @@ void cpu_loop(CPUNios2State *env) > queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); > break; > } > + case EXCP_DEBUG: > + info.si_signo = TARGET_SIGTRAP; > + info.si_errno = 0; > + info.si_code = TARGET_TRAP_BRKPT; > + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); > + break; > case 0xaa: > switch (env->regs[R_PC]) { > /*case 0x1000:*/ /* TODO:__kuser_helper_version */ > Applied to my linux-user branch. Thanks, Laurent
diff --git a/linux-user/nios2/cpu_loop.c b/linux-user/nios2/cpu_loop.c index b96b1aa..5aa1eca 100644 --- a/linux-user/nios2/cpu_loop.c +++ b/linux-user/nios2/cpu_loop.c @@ -73,6 +73,12 @@ void cpu_loop(CPUNios2State *env) queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); break; } + case EXCP_DEBUG: + info.si_signo = TARGET_SIGTRAP; + info.si_errno = 0; + info.si_code = TARGET_TRAP_BRKPT; + queue_signal(env, info.si_signo, QEMU_SI_FAULT, &info); + break; case 0xaa: switch (env->regs[R_PC]) { /*case 0x1000:*/ /* TODO:__kuser_helper_version */
Nios II user-mode emulation was missing handling for EXCP_DEBUG, making the gdb stub essentially useless. This patch adds the missing piece. The new code was copied from the existing EXCP_TRAP handling and is also similar to what other targets (e.g., arm) do with EXCP_DEBUG. Signed-off-by: Sandra Loosemore <sandra@codesourcery.com> --- linux-user/nios2/cpu_loop.c | 6 ++++++ 1 file changed, 6 insertions(+)