qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Nathan Froyd <froydnj@codesourcery.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 0/6] target-mips: add MDI semihosting
Date: Fri, 17 Jul 2009 13:33:16 -0700	[thread overview]
Message-ID: <1247862802-13033-1-git-send-email-froydnj@codesourcery.com> (raw)

This patch series adds semihosting for bare-metal 32-bit MIPS targets
that follows the MDI semihosting model used in MIPS's development
product.

The semihosting protocol works as follows:

- All semihosted calls go through _mdi_syscall, which in the absence of
  simulator support, returns ENOSYS;

- The address of _mdi_syscall is stored in a special section, .sdeosabi;

- When an MDI semihosting-aware simulator is used, a breakpoint is
  placed at _mdi_syscall;

- When this breakpoint is hit, the simulator performs the requested
  action and returns control to the program.

Discovering the address of _mdi_syscall is straightforward when the
program is passed in via -kernel.  We extended the ELF loader interface
slightly so that the caller could inspect the sections of the binary and
act on the contents of the sections if they so chose.  Things are
slightly trickier when using QEMU as a GDB remote target, as the program
will not be provided via -kernel, but via `load' from within GDB.  This
second method requires that we implement qSymbol support in the GDB
stub so we can directly ask GDB where _mdi_syscall is.

The patches have been built for {mips,mips64}-softmmu targets and tested
with the libstdc++ testsuite (which exercises things like read(),
write(), and lseek()).

-Nathan

             reply	other threads:[~2009-07-17 20:33 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-17 20:33 Nathan Froyd [this message]
2009-07-17 20:33 ` [Qemu-devel] [PATCH 1/6] sysemu: add section_callback argument to ELF loader Nathan Froyd
2009-07-17 20:33 ` [Qemu-devel] [PATCH 2/6] add softmmu_target_strlen Nathan Froyd
2009-07-17 20:33 ` [Qemu-devel] [PATCH 3/6] add implementation of MIPS semihosting Nathan Froyd
2009-07-18  7:22   ` Blue Swirl
2009-07-20 15:24     ` Nathan Froyd
2009-07-17 20:33 ` [Qemu-devel] [PATCH 4/6] target-mips: add MDI semihosting support to mipssim machine Nathan Froyd
2009-07-17 20:33 ` [Qemu-devel] [PATCH 5/6] enable --semihosting option for TARGET_MIPS Nathan Froyd
2009-07-17 20:33 ` [Qemu-devel] [PATCH 6/6] gdbstub: add qSymbol handling " Nathan Froyd

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=1247862802-13033-1-git-send-email-froydnj@codesourcery.com \
    --to=froydnj@codesourcery.com \
    --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).