Revision fe7e8758 hw/armv7m.c

b/hw/armv7m.c
7 7
 * This code is licenced under the GPL.
8 8
 */
9 9

  
10
#include "hw.h"
10
#include "sysbus.h"
11 11
#include "arm-misc.h"
12 12
#include "sysemu.h"
13 13

  
......
140 140
                      const char *kernel_filename, const char *cpu_model)
141 141
{
142 142
    CPUState *env;
143
    qemu_irq *pic;
143
    DeviceState *nvic;
144
    /* FIXME: make this local state.  */
145
    static qemu_irq pic[64];
146
    qemu_irq *cpu_pic;
144 147
    uint32_t pc;
145 148
    int image_size;
146 149
    uint64_t entry;
147 150
    uint64_t lowaddr;
151
    int i;
148 152

  
149 153
    flash_size *= 1024;
150 154
    sram_size *= 1024;
......
176 180
                                 qemu_ram_alloc(sram_size) | IO_MEM_RAM);
177 181
    armv7m_bitband_init();
178 182

  
179
    pic = armv7m_nvic_init(env);
183
    nvic = qdev_create(NULL, "armv7m_nvic");
184
    qdev_set_prop_ptr(nvic, "cpu", env);
185
    qdev_init(nvic);
186
    cpu_pic = arm_pic_init_cpu(env);
187
    sysbus_connect_irq(sysbus_from_qdev(nvic), 0, cpu_pic[ARM_PIC_CPU_IRQ]);
188
    for (i = 0; i < 64; i++) {
189
        pic[i] = qdev_get_irq_sink(nvic, i);
190
    }
180 191

  
181 192
    image_size = load_elf(kernel_filename, 0, &entry, &lowaddr, NULL);
182 193
    if (image_size < 0) {

Also available in: Unified diff