From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MXymt-0003bl-3U for qemu-devel@nongnu.org; Mon, 03 Aug 2009 10:45:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MXymo-0003Ra-0B for qemu-devel@nongnu.org; Mon, 03 Aug 2009 10:45:18 -0400 Received: from [199.232.76.173] (port=34682 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MXymn-0003RE-Pt for qemu-devel@nongnu.org; Mon, 03 Aug 2009 10:45:13 -0400 Received: from mx20.gnu.org ([199.232.41.8]:47319) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MXymn-0005ae-Hn for qemu-devel@nongnu.org; Mon, 03 Aug 2009 10:45:13 -0400 Received: from mail.codesourcery.com ([65.74.133.4]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MXymm-0001JP-7a for qemu-devel@nongnu.org; Mon, 03 Aug 2009 10:45:12 -0400 From: Nathan Froyd Date: Mon, 3 Aug 2009 07:45:05 -0700 Message-Id: <1249310711-8873-1-git-send-email-froydnj@codesourcery.com> Subject: [Qemu-devel] [PATCH 0/6] target-mips: add MDI semihosting, v2 List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org 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()). Changes from v1: - Fix license text for new mips-semi.c file; - Ensure softmmu-semi.h compiles warning-free on other targets. -Nathan