[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 06/11] armv7m: Make NVIC expose a memory region
From: |
Alex Bennée |
Subject: |
Re: [Qemu-devel] [PATCH 06/11] armv7m: Make NVIC expose a memory region rather than mapping itself |
Date: |
Tue, 28 Feb 2017 14:04:02 +0000 |
User-agent: |
mu4e 0.9.19; emacs 25.2.7 |
Peter Maydell <address@hidden> writes:
> Make the NVIC device expose a memory region for its users
> to map, rather than mapping itself into the system memory
> space on realize, and get the one user (the ARMv7M object)
> to do this.
>
> Signed-off-by: Peter Maydell <address@hidden>
Reviewed-by: Alex Bennée <address@hidden>
> ---
> hw/arm/armv7m.c | 7 ++++++-
> hw/intc/armv7m_nvic.c | 7 ++-----
> 2 files changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/hw/arm/armv7m.c b/hw/arm/armv7m.c
> index 638c597..fb21f74 100644
> --- a/hw/arm/armv7m.c
> +++ b/hw/arm/armv7m.c
> @@ -172,6 +172,7 @@ static void armv7m_realize(DeviceState *dev, Error **errp)
> {
> /* here realize our children */
> ARMv7MState *s = ARMV7M(dev);
> + SysBusDevice *sbd;
> Error *err = NULL;
> int i;
> char **cpustr;
> @@ -233,10 +234,14 @@ static void armv7m_realize(DeviceState *dev, Error
> **errp)
> qdev_pass_gpios(DEVICE(&s->nvic), dev, "SYSRESETREQ");
>
> /* Wire the NVIC up to the CPU */
> - sysbus_connect_irq(SYS_BUS_DEVICE(&s->nvic), 0,
> + sbd = SYS_BUS_DEVICE(&s->nvic);
> + sysbus_connect_irq(sbd, 0,
> qdev_get_gpio_in(DEVICE(s->cpu), ARM_CPU_IRQ));
> s->cpu->env.nvic = &s->nvic;
>
> + memory_region_add_subregion(&s->container, 0xe000e000,
> + sysbus_mmio_get_region(sbd, 0));
> +
> for (i = 0; i < ARRAY_SIZE(s->bitband); i++) {
> Object *obj = OBJECT(&s->bitband[i]);
> SysBusDevice *sbd = SYS_BUS_DEVICE(&s->bitband[i]);
> diff --git a/hw/intc/armv7m_nvic.c b/hw/intc/armv7m_nvic.c
> index f2ada39..c814e16 100644
> --- a/hw/intc/armv7m_nvic.c
> +++ b/hw/intc/armv7m_nvic.c
> @@ -19,7 +19,6 @@
> #include "hw/arm/arm.h"
> #include "hw/arm/armv7m_nvic.h"
> #include "target/arm/cpu.h"
> -#include "exec/address-spaces.h"
> #include "qemu/log.h"
> #include "trace.h"
>
> @@ -1043,10 +1042,8 @@ static void armv7m_nvic_realize(DeviceState *dev,
> Error **errp)
> "nvic_sysregs", 0x1000);
> memory_region_add_subregion(&s->container, 0, &s->sysregmem);
>
> - /* Map the whole thing into system memory at the location required
> - * by the v7M architecture.
> - */
> - memory_region_add_subregion(get_system_memory(), 0xe000e000,
> &s->container);
> + sysbus_init_mmio(SYS_BUS_DEVICE(dev), &s->container);
> +
> s->systick.timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, systick_timer_tick,
> s);
> }
--
Alex Bennée
- Re: [Qemu-devel] [Qemu-arm] [PATCH 10/11] stm32f205: Create armv7m object without using armv7m_init(), (continued)
- [Qemu-devel] [PATCH 05/11] armv7m: Make ARMv7M object take memory region link, Peter Maydell, 2017/02/20
- [Qemu-devel] [PATCH 11/11] stm32f205: Rename 'nvic' local to 'armv7m', Peter Maydell, 2017/02/20
- [Qemu-devel] [PATCH 06/11] armv7m: Make NVIC expose a memory region rather than mapping itself, Peter Maydell, 2017/02/20
- Re: [Qemu-devel] [PATCH 06/11] armv7m: Make NVIC expose a memory region rather than mapping itself,
Alex Bennée <=
- [Qemu-devel] [PATCH 09/11] armv7m: Split systick out from NVIC, Peter Maydell, 2017/02/20
- [Qemu-devel] [PATCH 03/11] armv7m: QOMify the armv7m container, Peter Maydell, 2017/02/20
- [Qemu-devel] [PATCH 07/11] armv7m: Make bitband device take the address space to access, Peter Maydell, 2017/02/20