Commit 68af3f249157f2538fea806622c45f537d65c9bc
1 parent
0a645949
Add it_shift
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6547 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
4 changed files
with
12 additions
and
7 deletions
hw/mac_nvram.c
| ... | ... | @@ -40,6 +40,7 @@ do { printf("NVR: " fmt , ##args); } while (0) |
| 40 | 40 | struct MacIONVRAMState { |
| 41 | 41 | target_phys_addr_t size; |
| 42 | 42 | int mem_index; |
| 43 | + unsigned int it_shift; | |
| 43 | 44 | uint8_t *data; |
| 44 | 45 | }; |
| 45 | 46 | |
| ... | ... | @@ -75,7 +76,7 @@ static void macio_nvram_writeb (void *opaque, |
| 75 | 76 | { |
| 76 | 77 | MacIONVRAMState *s = opaque; |
| 77 | 78 | |
| 78 | - addr = (addr >> 4) & (s->size - 1); | |
| 79 | + addr = (addr >> s->it_shift) & (s->size - 1); | |
| 79 | 80 | s->data[addr] = value; |
| 80 | 81 | NVR_DPRINTF("writeb addr %04x val %x\n", (int)addr, value); |
| 81 | 82 | } |
| ... | ... | @@ -85,7 +86,7 @@ static uint32_t macio_nvram_readb (void *opaque, target_phys_addr_t addr) |
| 85 | 86 | MacIONVRAMState *s = opaque; |
| 86 | 87 | uint32_t value; |
| 87 | 88 | |
| 88 | - addr = (addr >> 4) & (s->size - 1); | |
| 89 | + addr = (addr >> s->it_shift) & (s->size - 1); | |
| 89 | 90 | value = s->data[addr]; |
| 90 | 91 | NVR_DPRINTF("readb addr %04x val %x\n", (int)addr, value); |
| 91 | 92 | |
| ... | ... | @@ -127,13 +128,15 @@ static void macio_nvram_reset(void *opaque) |
| 127 | 128 | { |
| 128 | 129 | } |
| 129 | 130 | |
| 130 | -MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size) | |
| 131 | +MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size, | |
| 132 | + unsigned int it_shift) | |
| 131 | 133 | { |
| 132 | 134 | MacIONVRAMState *s; |
| 133 | 135 | |
| 134 | 136 | s = qemu_mallocz(sizeof(MacIONVRAMState)); |
| 135 | 137 | s->data = qemu_mallocz(size); |
| 136 | 138 | s->size = size; |
| 139 | + s->it_shift = it_shift; | |
| 137 | 140 | |
| 138 | 141 | s->mem_index = cpu_register_io_memory(0, nvram_read, nvram_write, s); |
| 139 | 142 | *mem_index = s->mem_index; |
| ... | ... | @@ -150,7 +153,8 @@ void macio_nvram_map (void *opaque, target_phys_addr_t mem_base) |
| 150 | 153 | MacIONVRAMState *s; |
| 151 | 154 | |
| 152 | 155 | s = opaque; |
| 153 | - cpu_register_physical_memory(mem_base, s->size << 4, s->mem_index); | |
| 156 | + cpu_register_physical_memory(mem_base, s->size << s->it_shift, | |
| 157 | + s->mem_index); | |
| 154 | 158 | } |
| 155 | 159 | |
| 156 | 160 | /* Set up a system OpenBIOS NVRAM partition */ | ... | ... |
hw/ppc_chrp.c
| ... | ... | @@ -328,7 +328,7 @@ static void ppc_core99_init (ram_addr_t ram_size, int vga_ram_size, |
| 328 | 328 | graphic_depth = 15; |
| 329 | 329 | #if 0 /* XXX: this is ugly but needed for now, or OHW won't boot */ |
| 330 | 330 | /* The NewWorld NVRAM is not located in the MacIO device */ |
| 331 | - nvr = macio_nvram_init(&nvram_mem_index, 0x2000); | |
| 331 | + nvr = macio_nvram_init(&nvram_mem_index, 0x2000, 1); | |
| 332 | 332 | pmac_format_nvram_partition(nvr, 0x2000); |
| 333 | 333 | macio_nvram_map(nvr, 0xFFF04000); |
| 334 | 334 | nvram.opaque = nvr; | ... | ... |
hw/ppc_mac.h
| ... | ... | @@ -64,7 +64,8 @@ PCIBus *pci_pmac_init(qemu_irq *pic); |
| 64 | 64 | /* Mac NVRAM */ |
| 65 | 65 | typedef struct MacIONVRAMState MacIONVRAMState; |
| 66 | 66 | |
| 67 | -MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size); | |
| 67 | +MacIONVRAMState *macio_nvram_init (int *mem_index, target_phys_addr_t size, | |
| 68 | + unsigned int it_shift); | |
| 68 | 69 | void macio_nvram_map (void *opaque, target_phys_addr_t mem_base); |
| 69 | 70 | void pmac_format_nvram_partition (MacIONVRAMState *nvr, int len); |
| 70 | 71 | uint32_t macio_nvram_read (void *opaque, uint32_t addr); | ... | ... |
hw/ppc_oldworld.c
| ... | ... | @@ -357,7 +357,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, |
| 357 | 357 | adb_kbd_init(&adb_bus); |
| 358 | 358 | adb_mouse_init(&adb_bus); |
| 359 | 359 | |
| 360 | - nvr = macio_nvram_init(&nvram_mem_index, 0x2000); | |
| 360 | + nvr = macio_nvram_init(&nvram_mem_index, 0x2000, 4); | |
| 361 | 361 | pmac_format_nvram_partition(nvr, 0x2000); |
| 362 | 362 | |
| 363 | 363 | macio_init(pci_bus, PCI_DEVICE_ID_APPLE_343S1201, 1, pic_mem_index, | ... | ... |