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 */
--
2.8.1
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
© 2016 - 2025 Red Hat, Inc.