[Qemu-devel] [PATCH] pass semihosting exit code back to system

2014-11-18 Thread Liviu Ionescu
Signed-off-by: Liviu Ionescu 
---
 target-arm/arm-semi.c | 12 ++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c
index ebb5235..4b982ad 100644
--- a/target-arm/arm-semi.c
+++ b/target-arm/arm-semi.c
@@ -58,6 +58,11 @@
 #define TARGET_SYS_HEAPINFO0x16
 #define TARGET_SYS_EXIT0x18
 
+/* ADP_Stopped_ApplicationExit is used for exit(0),
+ * anything else is implemented as exit(1) */
+#define ADP_Stopped_ApplicationExit ((2 << 16) + 38)
+#define ADP_Stopped_RunTimeError((2 << 16) + 35)
+
 #ifndef O_BINARY
 #define O_BINARY 0
 #endif
@@ -551,8 +556,11 @@ uint32_t do_arm_semihosting(CPUARMState *env)
 return 0;
 }
 case TARGET_SYS_EXIT:
-gdb_exit(env, 0);
-exit(0);
+/* ARM specifies only Stopped_ApplicationExit as normal
+ * exit, everything else is considered an error */
+ret = (args == ADP_Stopped_ApplicationExit) ? 0 : 1;
+gdb_exit(env, ret);
+exit(ret);
 default:
 fprintf(stderr, "qemu: Unsupported SemiHosting SWI 0x%02x\n", nr);
 cpu_dump_state(cs, stderr, fprintf, 0);
-- 
1.9.3 (Apple Git-50)




Re: [Qemu-devel] [PATCH] pass semihosting exit code back to system

2014-11-18 Thread Peter Maydell
On 18 November 2014 19:29, Liviu Ionescu  wrote:
> Signed-off-by: Liviu Ionescu 
> ---
>  target-arm/arm-semi.c | 12 ++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/target-arm/arm-semi.c b/target-arm/arm-semi.c
> index ebb5235..4b982ad 100644
> --- a/target-arm/arm-semi.c
> +++ b/target-arm/arm-semi.c
> @@ -58,6 +58,11 @@
>  #define TARGET_SYS_HEAPINFO0x16
>  #define TARGET_SYS_EXIT0x18
>
> +/* ADP_Stopped_ApplicationExit is used for exit(0),
> + * anything else is implemented as exit(1) */
> +#define ADP_Stopped_ApplicationExit ((2 << 16) + 38)
> +#define ADP_Stopped_RunTimeError((2 << 16) + 35)

The ARM documentation seems to define this value as
0x20026 rather than with a shift-and-decimal-value, so
I'd rather follow that. Otherwise this patch looks good.

Again, I can take the patch into my queue and fix this nit
as I do so, or you can reroll if you'd rather do it yourself.

thanks
-- PMM



Re: [Qemu-devel] [PATCH] pass semihosting exit code back to system

2014-11-18 Thread Liviu Ionescu

On 18 Nov 2014, at 21:48, Peter Maydell  wrote:

> The ARM documentation seems to define this value as
> 0x20026 rather than with a shift-and-decimal-value, so
> I'd rather follow that.

right, I changed it and resent.

regards,

Liviu