From: "Keith Packard" <keithp@keithp.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: "Alex Bennée" <alex.bennee@linaro.org>,
"QEMU Developers" <qemu-devel@nongnu.org>
Subject: Re: [PATCH] Semihost SYS_READC implementation (v4)
Date: Mon, 04 Nov 2019 21:10:52 -0800 [thread overview]
Message-ID: <87eeymx603.fsf@keithp.com> (raw)
In-Reply-To: <CAFEAcA-nnkHuj4y8+vFu5=virUoxwarg=kqQvUWeN73SDs+TzA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 2458 bytes --]
Peter Maydell <peter.maydell@linaro.org> writes:
> I'm going to push for somebody actually writing out a
> document and putting it somewhere that we can point to
> and say "that's the authoritative spec", please...
> it doesn't have to be a big formal thing, but I do
> think you want it written down, because the whole point
> is for multiple implementations and users to interoperate.
That happened in June -- I was just looking at the wrong version of the
spec. In the current version, which can be found here:
https://riscv.org/specifications/
The RISC-V Instruction Set Manual
Volume I: Unprivileged ISA
Document Version 20190608-Base-Ratified
Section 2.8 says:
Another use of EBREAK is to support “semihosting”, where the
execution environment includes a debugger that can provide
services over an alternate system call interface built around
the EBREAK instruction. Because the RISC-V base ISA does not
provide more than one EBREAK instruction, RISC-V semihosting
uses a special sequence of instructions to distinguish a
semihosting EBREAK from a debugger inserted EBREAK.
slli x0, x0, 0x1f # Entry NOP
ebreak # Break to debugger
srai x0, x0, 7 # NOP encoding the semihosting call number 7
Note that these three instructions must be 32-bit-wide
instructions, i.e., they mustn’t be among the compressed 16-bit
instructions described in Chapter 16.
The shift NOP instructions are still considered available for
use as HINTS.
Semihosting is a form of service call and would be more
naturally encoded as an ECALL using an existing ABI, but this
would require the debugger to be able to intercept ECALLs, which
is a newer addition to the debug standard. We intend to move
over to using ECALLs with a standard ABI, in which case,
semihosting can share a service ABI with an existing standard.
We note that ARM processors have also moved to using SVC instead
of BKPT for semihosting calls in newer designs.
I'd like to get the READC patch landed and then post the RISC-V patch
afterwards as the RISC-V patch currently includes READC support.
--
-keith
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
next prev parent reply other threads:[~2019-11-05 5:11 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-10-23 19:26 [PATCH] Semihost SYS_READC implementation (v3) Keith Packard
2019-10-24 17:33 ` no-reply
2019-10-24 18:54 ` Paolo Bonzini
2019-10-24 22:46 ` [PATCH] Semihost SYS_READC implementation (v4) Keith Packard
2019-10-25 9:51 ` Alex Bennée
2019-10-25 16:36 ` Keith Packard
2019-10-25 16:49 ` Peter Maydell
2019-10-25 19:15 ` Keith Packard
2019-10-25 20:53 ` Peter Maydell
2019-10-25 23:18 ` Keith Packard
2019-11-04 20:42 ` [PATCH] Semihost SYS_READC implementation (v6) Keith Packard
2019-12-17 8:38 ` Alex Bennée
2019-12-17 9:08 ` Paolo Bonzini
2019-12-17 9:51 ` Alex Bennée
2019-12-17 10:04 ` Paolo Bonzini
2019-12-17 12:14 ` [RFC PATCH] semihosting: suspend recieving CPU when blocked (HACK, WIP) Alex Bennée
2019-12-17 12:22 ` Paolo Bonzini
2019-12-17 13:42 ` Alex Bennée
2019-12-17 13:48 ` Paolo Bonzini
2019-12-17 14:18 ` Alex Bennée
2019-12-17 14:39 ` Paolo Bonzini
2019-12-17 14:39 ` Paolo Bonzini
2019-12-18 17:36 ` Alex Bennée
2019-12-18 21:23 ` Paolo Bonzini
2019-11-05 5:10 ` Keith Packard [this message]
2019-11-11 14:51 ` [PATCH] Semihost SYS_READC implementation (v4) Peter Maydell
2019-11-14 15:46 ` Alistair Francis
2019-11-14 17:43 ` Keith Packard
2019-11-14 17:39 ` Keith Packard
2019-11-14 17:47 ` Peter Maydell
2019-11-14 19:20 ` Peter Maydell
2019-11-14 16:14 ` Peter Maydell
2019-11-14 18:05 ` Keith Packard
2019-11-14 18:18 ` Peter Maydell
2019-11-14 19:18 ` Richard Henderson
2019-11-14 19:29 ` Peter Maydell
2019-11-14 20:52 ` Richard Henderson
2019-11-14 21:04 ` Peter Maydell
2019-11-14 22:26 ` Keith Packard
2019-11-15 10:54 ` Peter Maydell
2019-11-15 23:40 ` Keith Packard
2019-10-25 17:02 ` Alex Bennée
2019-10-25 18:17 ` no-reply
2019-10-25 18:20 ` no-reply
2019-10-24 17:43 ` [PATCH] Semihost SYS_READC implementation (v3) no-reply
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=87eeymx603.fsf@keithp.com \
--to=keithp@keithp.com \
--cc=alex.bennee@linaro.org \
--cc=peter.maydell@linaro.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 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).