qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] armv7-m: exit on external reset request


From: Peter Crosthwaite
Subject: Re: [Qemu-devel] [PATCH] armv7-m: exit on external reset request
Date: Fri, 9 Oct 2015 11:18:47 -0700

On Fri, Oct 9, 2015 at 10:25 AM, Michael Davidsaver
<address@hidden> wrote:
>
>
> On 10/09/2015 12:59 PM, Peter Maydell wrote:
>> On 8 October 2015 at 16:40, Michael Davidsaver <address@hidden> wrote:
>>> ...
>>>      case 0xd0c: /* Application Interrupt/Reset Control.  */
>>>          if ((value >> 16) == 0x05fa) {
>>> +            if (value & 4) {
>>> +                qemu_system_reset_request();
>>> +            }
> ...
>>
>> Strictly speaking what this bit does is assert a signal out of
>> the CPU to some external power management or similar device
>> in the SoC, which then is responsible for doing the reset.
>> So just calling qemu_system_reset_request() here is a bit of
>> a shortcut. But maybe it's a pragmatic shortcut?
>
> I'm not sure what you mean by shortcut?  Most targets have some way to 
> trigger qemu to exit.  I actually compiled a list recently (see below).  I 
> couldn't find one for the lm3s6965evb machine, thus this patch.
>

We should check the lm3s docs to see what the implementation of this
signal is. I think it would be better for SoC (or board) level to
install the GPIO handler to do the reset. As far as target-arm is
concerned this is then just a GPIO.

> FYI, one of my interests in QEMU is to automate testing of low level code.  
> Being able to cause the qemu process to exit when the tests complete is quite 
> helpful (simplifies the test runner)
>

Nice!

Regards,
Peter

>
> qemu_system_reset_request()
>   highbank.c -> register write
>   integratorcp.c -> register write
>   musicpal.c -> register write  (musicpal board)
>   omap1.c -> register write
>   omap2.c -> register write
>   pc.c -> register write (port 92)
>   pckbd.c -> register write (two different registers)
>   lpc_ich9.c -> register write
>   arm_sysctl.c -> register write (vexpress only or board_ids 0x100, 0x178, 
> 0x182 only, )
>   cuda.c -> register write
>   slavio_misc.c -> register write
>   zynq_slcr.c -> register write  (xilinx-zynq-a9 board)
>   apb.c -> register write
>   bonito.c -> register write
>   piix.c -> register write
>   mpc8544_guts.c -> register write
>   ppc.c -> e500 only ppce500_irq_init() w/ PPCE500_INPUT_MCK
>   ppc405_uc.c -> store_40x_dbcr0()
>   spapr_hcall.c -> KVM only
>   spapr_rtas.c -> register RTAS_SYSTEM_REBOOT
>   etraxfs_timer.c -> watchdog timer expire
>   m48t59.c -> watchdog timer expire
>   milkymist-sysctl.c -> register write
>   pxa2xx_timer.c -> watchdog timer expire (bsp option)
>   watchdog.c -> generic watchdog timer expire
>   xtfpga.c -> register write
>
> cpu_exit()
>   pc.c -> DMA_init
>   prep.c -> DMA_init (broken)
>   spapr_rtas.c -> register RTAS_STOP_SELF
>



reply via email to

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