Message ID | 1416338963-97608-2-git-send-email-ilg@livius.net |
---|---|
State | New |
Headers | show |
On 18 November 2014 19:29, Liviu Ionescu <ilg@livius.net> wrote: > Signed-off-by: Liviu Ionescu <ilg@livius.net> > --- > 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_HEAPINFO 0x16 > #define TARGET_SYS_EXIT 0x18 > > +/* 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
On 18 Nov 2014, at 21:48, Peter Maydell <peter.maydell@linaro.org> 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
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_HEAPINFO 0x16 #define TARGET_SYS_EXIT 0x18 +/* 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);
Signed-off-by: Liviu Ionescu <ilg@livius.net> --- target-arm/arm-semi.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-)