[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-arm] [PATCH 00/13] target/arm: Implement semihosting v2.0
From: |
Peter Maydell |
Subject: |
[Qemu-arm] [PATCH 00/13] target/arm: Implement semihosting v2.0 |
Date: |
Tue, 10 Sep 2019 15:44:15 +0100 |
This patchset implements support in QEMU for v2.0 of the
Arm semihosting specification:
https://developer.arm.com/docs/100863/latest/preface
Specifically, v2.0 has:
* a mechanism for detection of optional extra features,
which works by allowing the guest to open a magic file
named ":semihosting-features" and read some feature
flags from it
* two defined extensions:
- STDOUT_STDERR lets the guest separately open stdout and
stderr via the ":tt" magic filename (v1.0 only allowed
access to stdout)
- EXIT_EXTENDED lets A32/T32 guests exit with a specified
exit status (otherwise only available to A64 guests).
This is something that people have been complaining
about for a long time.
(Technically some of the things we already support, like
having an A64 semihosting interface at all, are also part of
the v2.0 spec.)
This patchset:
* fixes some bugs relating to errnos in some cases
* makes semihosting hand out its own filedescriptors rather
than just passing out host fd numbers
* abstracts out the fd-related semihosting calls so they
indirect via a function table based on the type of the fd
* adds a new type of fd representing the magic file
":semihosting-features" which is used for feature-detection
* implements both of the extensions defined by the v2.0 spec
I've tested this by improving my semihosting test suite:
https://git.linaro.org/people/peter.maydell/semihosting-tests.git/
(if people have other guest binaries that make much use of
semihosting then testing would certainly be welcome.)
thanks
-- PMM
Peter Maydell (13):
target/arm/arm-semi: Capture errno in softmmu version of
set_swi_errno()
target/arm/arm-semi: Always set some kind of errno for failed calls
target/arm/arm-semi: Make semihosting code hand out its own file
descriptors
target/arm/arm-semi: clean up TaskState* usage in non-user-only code
target/arm/arm-semi: Factor out implementation of SYS_CLOSE
target/arm/arm-semi: Factor out implementation of SYS_WRITE
target/arm/arm-semi: Factor out implementation of SYS_READ
target/arm/arm-semi: Factor out implementation of SYS_ISTTY
target/arm/arm-semi: Factor out implementation of SYS_SEEK
target/arm/arm-semi: Factor out implementation of SYS_FLEN
target/arm/arm-semi: Implement support for semihosting feature
detection
target/arm/arm-semi: Implement SH_EXT_STDOUT_STDERR extension
target/arm/arm-semi: Implement SH_EXT_EXIT_EXTENDED extension
target/arm/arm-semi.c | 613 +++++++++++++++++++++++++++++++++++-------
1 file changed, 513 insertions(+), 100 deletions(-)
--
2.20.1