qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH V2 0/2] Fix bug in nios2 and m68k semihosting
@ 2019-08-21 17:50 Sandra Loosemore
  2019-08-21 17:50 ` [Qemu-devel] [PATCH V2 1/2] target/nios2: Fix bug in semihosted exit handling Sandra Loosemore
  2019-08-21 17:50 ` [Qemu-devel] [PATCH V2 2/2] target/m68k: " Sandra Loosemore
  0 siblings, 2 replies; 3+ messages in thread
From: Sandra Loosemore @ 2019-08-21 17:50 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marek Vasut, Chris Wulff, Laurent Vivier

I noticed recently that the exit semihosting call on nios2 was
ignoring its parameter and always returning status 0 instead.  It
turns out the handler was retrieving the value of the wrong register.
Since the nios2 semihosting implementation was basically
cut-and-pasted from that for m68k, I checked m68k also and it had the
same bug.  This set of patches fixes both of them.

There are no changes to the actual patches from V1, only more
informative commit messages with links to the respective semihosting
protocol documents in newlib.

Sandra Loosemore (2):
  target/nios2: Fix bug in semihosted exit handling
  target/m68k: Fix bug in semihosted exit handling

 target/m68k/m68k-semi.c   | 4 ++--
 target/nios2/nios2-semi.c | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

-- 
2.8.1



^ permalink raw reply	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PATCH V2 1/2] target/nios2: Fix bug in semihosted exit handling
  2019-08-21 17:50 [Qemu-devel] [PATCH V2 0/2] Fix bug in nios2 and m68k semihosting Sandra Loosemore
@ 2019-08-21 17:50 ` Sandra Loosemore
  2019-08-21 17:50 ` [Qemu-devel] [PATCH V2 2/2] target/m68k: " Sandra Loosemore
  1 sibling, 0 replies; 3+ messages in thread
From: Sandra Loosemore @ 2019-08-21 17:50 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marek Vasut, Chris Wulff, Laurent Vivier

This patch fixes a bug that caused semihosted exit to always return
status 0; it was incorrectly using the value of register R_ARG0 (which
contains the HOSTED_EXIT request number) instead of register R_ARG1.

Note that per the newlib documentation for the nios2 semihosting protocol

https://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=libgloss/nios2/nios2-semi.txt;h=ded3a093c03dbae84cb95b4cd45bc3e0d751eda2;hb=HEAD

for the HOSTED_EXIT syscall the parameter is passed directly in the register
instead of in a parameter block pointed to by the register.

Signed-off-by: Sandra Loosemore <sandra@codesourcery.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
---
 target/nios2/nios2-semi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/nios2/nios2-semi.c b/target/nios2/nios2-semi.c
index d7a80dd..06c0861 100644
--- a/target/nios2/nios2-semi.c
+++ b/target/nios2/nios2-semi.c
@@ -215,8 +215,8 @@ void do_nios2_semihosting(CPUNios2State *env)
     args = env->regs[R_ARG1];
     switch (nr) {
     case HOSTED_EXIT:
-        gdb_exit(env, env->regs[R_ARG0]);
-        exit(env->regs[R_ARG0]);
+        gdb_exit(env, env->regs[R_ARG1]);
+        exit(env->regs[R_ARG1]);
     case HOSTED_OPEN:
         GET_ARG(0);
         GET_ARG(1);
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [Qemu-devel] [PATCH V2 2/2] target/m68k: Fix bug in semihosted exit handling
  2019-08-21 17:50 [Qemu-devel] [PATCH V2 0/2] Fix bug in nios2 and m68k semihosting Sandra Loosemore
  2019-08-21 17:50 ` [Qemu-devel] [PATCH V2 1/2] target/nios2: Fix bug in semihosted exit handling Sandra Loosemore
@ 2019-08-21 17:50 ` Sandra Loosemore
  1 sibling, 0 replies; 3+ messages in thread
From: Sandra Loosemore @ 2019-08-21 17:50 UTC (permalink / raw)
  To: qemu-devel; +Cc: Marek Vasut, Chris Wulff, Laurent Vivier

This patch fixes a bug that caused semihosted exit to always return
status 0; it was incorrectly using the value of D0 (which
contains the HOSTED_EXIT request number) instead of D1.

Note that per the newlib documentation for the m68k semihosting protocol

https://www.sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=blob;f=libgloss/m68k/m68k-semi.txt;h=50520c15292aa7edf7eef28e09fd9202ce75b153;hb=HEAD

for the HOSTED_EXIT syscall the parameter is passed directly in the register
instead of in a parameter block pointed to by the register.

Signed-off-by: Sandra Loosemore <sandra@codesourcery.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
---
 target/m68k/m68k-semi.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/target/m68k/m68k-semi.c b/target/m68k/m68k-semi.c
index 8e5fbfc..f189c92 100644
--- a/target/m68k/m68k-semi.c
+++ b/target/m68k/m68k-semi.c
@@ -194,8 +194,8 @@ void do_m68k_semihosting(CPUM68KState *env, int nr)
     args = env->dregs[1];
     switch (nr) {
     case HOSTED_EXIT:
-        gdb_exit(env, env->dregs[0]);
-        exit(env->dregs[0]);
+        gdb_exit(env, env->dregs[1]);
+        exit(env->dregs[1]);
     case HOSTED_OPEN:
         GET_ARG(0);
         GET_ARG(1);
-- 
2.8.1



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-08-21 18:53 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-21 17:50 [Qemu-devel] [PATCH V2 0/2] Fix bug in nios2 and m68k semihosting Sandra Loosemore
2019-08-21 17:50 ` [Qemu-devel] [PATCH V2 1/2] target/nios2: Fix bug in semihosted exit handling Sandra Loosemore
2019-08-21 17:50 ` [Qemu-devel] [PATCH V2 2/2] target/m68k: " Sandra Loosemore

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).