qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 0/9] target-arm: Implement A64 semihosting


From: Christopher Covington
Subject: Re: [Qemu-devel] [PATCH 0/9] target-arm: Implement A64 semihosting
Date: Tue, 25 Aug 2015 16:40:57 -0400
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:36.0) Gecko/20100101 Thunderbird/36.0

Hi Peter,

On 08/13/2015 12:35 PM, Peter Maydell wrote:
> This patch series implements support for semihosting for the
> 64-bit ARM instruction set.
> 
> It owes a significant debt to the patches sent earlier
> by Christopher Covington (and with code written by Derek Hower).
> However, it is a full from-scratch rewrite (since there were
> several things which I felt those patches didn't take the
> right approach on). I mostly just looked at the earlier
> patches to check I hadn't missed anything.
> 
> The changes in the A64 API compared to the A32/T32 one are:
>  * input syscall number is in register W0
>  * return result is in register X0
>  * all argument parameter blocks are 64 bits wide, not 32
>  * there is a new SyncCacheRange syscall
>  * the SYS_EXIT syscall takes a parameter block and is able
>    to pass a guest exit status out
>  * the insn used to trigger semihosting is a HLT, not an
>    SVC or BKPT.
> 
> I've tested this for A32, T32 and A64 semihosting, for
> both usermode and system emulation, with and without gdb
> remote syscalls.
> 
> The test code I wrote to do the testing is here:
> https://git.linaro.org/people/peter.maydell/semihosting-tests.git/
> (not very exciting, but might be handy if anybody needs a
> basic "how to run C code starting with bare metal system
> emulation" template.)
> 
> The test series also includes a bugfix: we haven't correctly
> forwarded SYS_WRITE0 (print string to terminal) to gdb since
> the gdb hosted syscall support was added to QEMU back in 2007...

Your work on this is greatly appreciated.

Tested-by: Christopher Covington <address@hidden>

This works for simple Linux userspace angel-load, angel-store, and angel-exit
utilities as well as at least one newlib/libgloss test. Some more complicated
newlib/libgloss binaries don't run, but that appears to be because of
attempted vbar_el3 accesses.

If it's not much trouble, adding your semihosting tests to kvm-unit-tests
might be nice.

Thanks,
Christopher Covington

-- 
Qualcomm Innovation Center, Inc.
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project



reply via email to

[Prev in Thread] Current Thread [Next in Thread]