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