Revision e28f9884
b/hw/pc.c | ||
---|---|---|
63 | 63 |
static IOAPICState *ioapic; |
64 | 64 |
static PCIDevice *i440fx_state; |
65 | 65 |
|
66 |
typedef struct rom_reset_data { |
|
67 |
uint8_t *data; |
|
68 |
target_phys_addr_t addr; |
|
69 |
unsigned size; |
|
70 |
} RomResetData; |
|
71 |
|
|
72 |
static void option_rom_reset(void *_rrd) |
|
73 |
{ |
|
74 |
RomResetData *rrd = _rrd; |
|
75 |
|
|
76 |
cpu_physical_memory_write_rom(rrd->addr, rrd->data, rrd->size); |
|
77 |
} |
|
78 |
|
|
79 |
static void option_rom_setup_reset(target_phys_addr_t addr, unsigned size) |
|
80 |
{ |
|
81 |
RomResetData *rrd = qemu_malloc(sizeof *rrd); |
|
82 |
|
|
83 |
rrd->data = qemu_malloc(size); |
|
84 |
cpu_physical_memory_read(addr, rrd->data, size); |
|
85 |
rrd->addr = addr; |
|
86 |
rrd->size = size; |
|
87 |
qemu_register_reset(option_rom_reset, rrd); |
|
88 |
} |
|
89 |
|
|
66 | 90 |
static void ioport80_write(void *opaque, uint32_t addr, uint32_t data) |
67 | 91 |
{ |
68 | 92 |
} |
... | ... | |
806 | 830 |
} |
807 | 831 |
/* Round up optiom rom size to the next 2k boundary */ |
808 | 832 |
size = (size + 2047) & ~2047; |
833 |
option_rom_setup_reset(start, size); |
|
809 | 834 |
return size; |
810 | 835 |
} |
811 | 836 |
|
Also available in: Unified diff