From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-arm@nongnu.org
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-arm] [PATCH 13/13] target/arm/arm-semi: Implement SH_EXT_EXIT_EXTENDED extension
Date: Thu, 12 Sep 2019 13:07:58 +0100 [thread overview]
Message-ID: <878sqtzpi9.fsf@linaro.org> (raw)
In-Reply-To: <20190910144428.32597-14-peter.maydell@linaro.org>
Peter Maydell <peter.maydell@linaro.org> writes:
> SH_EXT_EXIT_EXTENDED is a v2.0 semihosting extension: it
> indicates that the implementation supports the SYS_EXIT_EXTENDED
> function. This function allows both A64 and A32/T32 guests to
> exit with a specified exit status, unlike the older SYS_EXIT
> function which only allowed this for A64 guests. Implement
> this extension.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Aside from the ordering nit mentioned in the previous commit:
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> target/arm/arm-semi.c | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c
> index 0df8d4d69d6..3900bd4e1e6 100644
> --- a/target/arm/arm-semi.c
> +++ b/target/arm/arm-semi.c
> @@ -66,6 +66,7 @@ typedef void TaskState;
> #define TARGET_SYS_HEAPINFO 0x16
> #define TARGET_SYS_EXIT 0x18
> #define TARGET_SYS_SYNCCACHE 0x19
> +#define TARGET_SYS_EXIT_EXTENDED 0x20
>
> /* ADP_Stopped_ApplicationExit is used for exit(0),
> * anything else is implemented as exit(1) */
> @@ -485,7 +486,7 @@ static const uint8_t featurefile_data[] = {
> SHFB_MAGIC_1,
> SHFB_MAGIC_2,
> SHFB_MAGIC_3,
> - SH_EXT_STDOUT_STDERR, /* Feature byte 0 */
> + SH_EXT_EXIT_EXTENDED | SH_EXT_STDOUT_STDERR, /* Feature byte 0 */
> };
>
> static void init_featurefile_guestfd(int guestfd)
> @@ -1026,11 +1027,14 @@ target_ulong do_arm_semihosting(CPUARMState *env)
> return 0;
> }
> case TARGET_SYS_EXIT:
> - if (is_a64(env)) {
> + case TARGET_SYS_EXIT_EXTENDED:
> + if (nr == TARGET_SYS_EXIT_EXTENDED || is_a64(env)) {
> /*
> - * The A64 version of this call takes a parameter block,
> + * The A64 version of SYS_EXIT takes a parameter block,
> * so the application-exit type can return a subcode which
> * is the exit status code from the application.
> + * SYS_EXIT_EXTENDED is an a new-in-v2.0 optional function
> + * which allows A32/T32 guests to also provide a status code.
> */
> GET_ARG(0);
> GET_ARG(1);
> @@ -1042,8 +1046,10 @@ target_ulong do_arm_semihosting(CPUARMState *env)
> }
> } else {
> /*
> - * ARM specifies only Stopped_ApplicationExit as normal
> - * exit, everything else is considered an error
> + * The A32/T32 version of SYS_EXIT specifies only
> + * Stopped_ApplicationExit as normal exit, but does not
> + * allow the guest to specify the exit status code.
> + * Everything else is considered an error.
> */
> ret = (args == ADP_Stopped_ApplicationExit) ? 0 : 1;
> }
--
Alex Bennée
WARNING: multiple messages have this Message-ID (diff)
From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-arm@nongnu.org
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [Qemu-arm] [PATCH 13/13] target/arm/arm-semi: Implement SH_EXT_EXIT_EXTENDED extension
Date: Thu, 12 Sep 2019 13:07:58 +0100 [thread overview]
Message-ID: <878sqtzpi9.fsf@linaro.org> (raw)
In-Reply-To: <20190910144428.32597-14-peter.maydell@linaro.org>
Peter Maydell <peter.maydell@linaro.org> writes:
> SH_EXT_EXIT_EXTENDED is a v2.0 semihosting extension: it
> indicates that the implementation supports the SYS_EXIT_EXTENDED
> function. This function allows both A64 and A32/T32 guests to
> exit with a specified exit status, unlike the older SYS_EXIT
> function which only allowed this for A64 guests. Implement
> this extension.
>
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Aside from the ordering nit mentioned in the previous commit:
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> target/arm/arm-semi.c | 16 +++++++++++-----
> 1 file changed, 11 insertions(+), 5 deletions(-)
>
> diff --git a/target/arm/arm-semi.c b/target/arm/arm-semi.c
> index 0df8d4d69d6..3900bd4e1e6 100644
> --- a/target/arm/arm-semi.c
> +++ b/target/arm/arm-semi.c
> @@ -66,6 +66,7 @@ typedef void TaskState;
> #define TARGET_SYS_HEAPINFO 0x16
> #define TARGET_SYS_EXIT 0x18
> #define TARGET_SYS_SYNCCACHE 0x19
> +#define TARGET_SYS_EXIT_EXTENDED 0x20
>
> /* ADP_Stopped_ApplicationExit is used for exit(0),
> * anything else is implemented as exit(1) */
> @@ -485,7 +486,7 @@ static const uint8_t featurefile_data[] = {
> SHFB_MAGIC_1,
> SHFB_MAGIC_2,
> SHFB_MAGIC_3,
> - SH_EXT_STDOUT_STDERR, /* Feature byte 0 */
> + SH_EXT_EXIT_EXTENDED | SH_EXT_STDOUT_STDERR, /* Feature byte 0 */
> };
>
> static void init_featurefile_guestfd(int guestfd)
> @@ -1026,11 +1027,14 @@ target_ulong do_arm_semihosting(CPUARMState *env)
> return 0;
> }
> case TARGET_SYS_EXIT:
> - if (is_a64(env)) {
> + case TARGET_SYS_EXIT_EXTENDED:
> + if (nr == TARGET_SYS_EXIT_EXTENDED || is_a64(env)) {
> /*
> - * The A64 version of this call takes a parameter block,
> + * The A64 version of SYS_EXIT takes a parameter block,
> * so the application-exit type can return a subcode which
> * is the exit status code from the application.
> + * SYS_EXIT_EXTENDED is an a new-in-v2.0 optional function
> + * which allows A32/T32 guests to also provide a status code.
> */
> GET_ARG(0);
> GET_ARG(1);
> @@ -1042,8 +1046,10 @@ target_ulong do_arm_semihosting(CPUARMState *env)
> }
> } else {
> /*
> - * ARM specifies only Stopped_ApplicationExit as normal
> - * exit, everything else is considered an error
> + * The A32/T32 version of SYS_EXIT specifies only
> + * Stopped_ApplicationExit as normal exit, but does not
> + * allow the guest to specify the exit status code.
> + * Everything else is considered an error.
> */
> ret = (args == ADP_Stopped_ApplicationExit) ? 0 : 1;
> }
--
Alex Bennée
next prev parent reply other threads:[~2019-09-12 12:07 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-10 14:44 [Qemu-arm] [PATCH 00/13] target/arm: Implement semihosting v2.0 Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-10 14:44 ` [Qemu-arm] [PATCH 01/13] target/arm/arm-semi: Capture errno in softmmu version of set_swi_errno() Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 10:39 ` [Qemu-arm] " Alex Bennée
2019-09-12 10:39 ` [Qemu-devel] " Alex Bennée
2019-09-12 10:49 ` Peter Maydell
2019-09-12 10:49 ` [Qemu-devel] " Peter Maydell
2019-09-10 14:44 ` [Qemu-arm] [PATCH 02/13] target/arm/arm-semi: Always set some kind of errno for failed calls Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 10:42 ` [Qemu-arm] " Alex Bennée
2019-09-12 10:42 ` [Qemu-devel] " Alex Bennée
2019-09-12 10:50 ` Peter Maydell
2019-09-12 10:50 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:09 ` Alex Bennée
2019-09-12 11:09 ` [Qemu-devel] " Alex Bennée
2019-09-10 14:44 ` [Qemu-arm] [PATCH 03/13] target/arm/arm-semi: Make semihosting code hand out its own file descriptors Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:02 ` [Qemu-arm] " Alex Bennée
2019-09-12 11:02 ` [Qemu-devel] " Alex Bennée
2019-09-10 14:44 ` [Qemu-arm] [PATCH 04/13] target/arm/arm-semi: clean up TaskState* usage in non-user-only code Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:42 ` [Qemu-arm] " Alex Bennée
2019-09-12 11:42 ` [Qemu-devel] " Alex Bennée
2019-09-12 11:49 ` Peter Maydell
2019-09-10 14:44 ` [Qemu-arm] [PATCH 05/13] target/arm/arm-semi: Factor out implementation of SYS_CLOSE Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:13 ` [Qemu-arm] " Alex Bennée
2019-09-12 11:13 ` [Qemu-devel] " Alex Bennée
2019-09-10 14:44 ` [Qemu-devel] [PATCH 06/13] target/arm/arm-semi: Factor out implementation of SYS_WRITE Peter Maydell
2019-09-12 11:18 ` Alex Bennée
2019-09-10 14:44 ` [Qemu-arm] [PATCH 07/13] target/arm/arm-semi: Factor out implementation of SYS_READ Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:19 ` [Qemu-arm] " Alex Bennée
2019-09-12 11:19 ` [Qemu-devel] " Alex Bennée
2019-09-10 14:44 ` [Qemu-arm] [PATCH 08/13] target/arm/arm-semi: Factor out implementation of SYS_ISTTY Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:20 ` [Qemu-arm] " Alex Bennée
2019-09-12 11:20 ` [Qemu-devel] " Alex Bennée
2019-09-10 14:44 ` [Qemu-devel] [PATCH 09/13] target/arm/arm-semi: Factor out implementation of SYS_SEEK Peter Maydell
2019-09-12 11:43 ` Alex Bennée
2019-09-10 14:44 ` [Qemu-arm] [PATCH 10/13] target/arm/arm-semi: Factor out implementation of SYS_FLEN Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:43 ` [Qemu-arm] " Alex Bennée
2019-09-12 11:43 ` [Qemu-devel] " Alex Bennée
2019-09-10 14:44 ` [Qemu-arm] [PATCH 11/13] target/arm/arm-semi: Implement support for semihosting feature detection Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-10 17:00 ` [Qemu-arm] " Peter Maydell
2019-09-10 17:00 ` [Qemu-devel] " Peter Maydell
2019-09-12 11:56 ` [Qemu-arm] " Alex Bennée
2019-09-12 11:56 ` [Qemu-devel] " Alex Bennée
2019-09-10 14:44 ` [Qemu-devel] [PATCH 12/13] target/arm/arm-semi: Implement SH_EXT_STDOUT_STDERR extension Peter Maydell
2019-09-12 12:05 ` Alex Bennée
2019-09-12 12:09 ` [Qemu-arm] " Peter Maydell
2019-09-12 12:09 ` [Qemu-devel] [Qemu-arm] " Peter Maydell
2019-09-10 14:44 ` [Qemu-arm] [PATCH 13/13] target/arm/arm-semi: Implement SH_EXT_EXIT_EXTENDED extension Peter Maydell
2019-09-10 14:44 ` [Qemu-devel] " Peter Maydell
2019-09-12 12:07 ` Alex Bennée [this message]
2019-09-12 12:07 ` [Qemu-devel] [Qemu-arm] " Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=878sqtzpi9.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.