public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
From: Mike Frysinger <vapier@gentoo.org>
To: Andrew Burgess <aburgess@redhat.com>
Cc: jaydeep.patil@imgtec.com, gdb-patches@sourceware.org,
	joseph.faulls@imgtec.com, bhushan.attarde@imgtec.com
Subject: Re: [PATCH v2 1/3] [sim/riscv] Add basic semi-hosting support
Date: Tue, 12 Dec 2023 22:43:53 -0500	[thread overview]
Message-ID: <ZXkoed0AJH1ScYNS@vapier> (raw)
In-Reply-To: <87y1dze3m5.fsf@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 2448 bytes --]

On 12 Dec 2023 17:24, Andrew Burgess wrote:
> Mike Frysinger <vapier@gentoo.org> writes:
> > On 30 Oct 2023 13:00, jaydeep.patil@imgtec.com wrote:
> >> Added support for basic semi-hosting calls OPEN, EXIT and GET_CMDLINE.
> >
> > what host environment are you implementing ?  none of the syscalls you've
> > defined match what have long been in the riscv libgloss port.  those are
> > the only ones i'd really expect at this point to be wired up.
> 
> This would be the RISC-V semihosting target, which is included in
> newlib (since 2020), but is separate to libgloss.

included where exactly ?  newlib/libc/machine/riscv/ has no syscalls afaict.
the word "semi" doesn't really appear anywhere in the codebase.

if you're referring to this commit, it's in libgloss, not newlib.
https://sourceware.org/git/?p=newlib-cygwin.git;a=commit;h=865cd30dcc2f00c81c8b3624a9f3464138cd24a5

looking at libgloss/riscv/machine/syscall.h, i see it defines the two sets
in parallel -- SYS_xxx and SEMIHOST_xxx.

the question is why does libgloss have both ?  if the riscv libgloss SYS_xxx
are only used by libgloss, and no one is implementing that (the sim hasn't),
and SEMIHOST_xxx are used by everyone, why not only use the semihost interface
and drop the SYS_xxx (and rename SEMIHOST_xxx to SYS_xxx).

where exactly is the riscv semihost standard defined such that people are
implementing the same API (source files) & ABI (the stub that processes the
ebreak calls) ?

> Where libgloss syscalls use ecall, the semihosting uses ebreak with two
> specific nop instructions (one before, one after the ebreak).

the calling convention doesn't really matter to the sim.  it can do either.

the question is whether we want to support them simultaneously, or only one
at a time.  what are other stubs doing ?

> Do you see any reason why we can't support both of these syscall
> libraries?  Potentially we could have a switch to select between them,
> but I'm inclined to say we should just support both until someone comes
> with a use-case where supporting both is a bad idea...  But maybe you
> have some deeper insights here.

supporting them both isn't a problem.  the port, as written, isn't following
our existing conventions for integrating with syscalls, but before i went down
that hole, i wanted to understand at a higher level the diff between the two.
the patch def needs a lot of work either way.
-mike

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2023-12-13  3:43 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-10-30 13:00 [PATCH v2 0/3] sim: riscv: Compressed instruction simulation and " jaydeep.patil
2023-10-30 13:00 ` [PATCH v2 1/3] [sim/riscv] Add basic " jaydeep.patil
2023-11-29  7:57   ` Mike Frysinger
2023-12-12 17:24     ` Andrew Burgess
2023-12-13  3:43       ` Mike Frysinger [this message]
2023-12-18 12:44         ` Andrew Burgess
2023-12-18 23:06           ` Mike Frysinger
2023-12-19  6:13     ` [EXTERNAL] " Jaydeep Patil
2023-12-20  1:45       ` Mike Frysinger
2023-12-20  8:52         ` Jaydeep Patil
2023-12-12 17:57   ` Andrew Burgess
2023-10-30 13:00 ` [PATCH v2 2/3] [sim/riscv] Add support for compressed integer instruction set jaydeep.patil
2023-11-29  7:58   ` Mike Frysinger
2023-12-19  6:11     ` [EXTERNAL] " Jaydeep Patil
2023-12-20  1:32       ` Mike Frysinger
2023-10-30 13:00 ` [PATCH v2 3/3] [sim/riscv] Add semi-hosting support jaydeep.patil
2023-11-13 12:07 ` [PATCH v2 0/3] sim: riscv: Compressed instruction simulation and " Jaydeep Patil

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=ZXkoed0AJH1ScYNS@vapier \
    --to=vapier@gentoo.org \
    --cc=aburgess@redhat.com \
    --cc=bhushan.attarde@imgtec.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jaydeep.patil@imgtec.com \
    --cc=joseph.faulls@imgtec.com \
    /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 read-only IMAP folder(s) and NNTP newsgroup(s).