Fix memory allocation on mainstone2 and convert to qemu_ram_alloc.
authorbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 5 Jan 2008 19:29:17 +0000 (19:29 +0000)
committerbalrog <balrog@c046a42c-6fe2-441c-8c8c-71466251a162>
Sat, 5 Jan 2008 19:29:17 +0000 (19:29 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3889 c046a42c-6fe2-441c-8c8c-71466251a162

Changelog
hw/mainstone.c

index 3f3d7f0..05045b8 100644 (file)
--- a/Changelog
+++ b/Changelog
@@ -19,7 +19,7 @@
   - OMAP310 MPU emulation plus Palm T|E machine (Andrzej Zaborowski)
   - ARM v6, v7, NEON SIMD and SMP emulation (Paul Brook/CodeSourcery)
   - Gumstix boards: connex and verdex emulation (Thorsten Zitterell)
-  - Intel mainstone board emulation (Armin Kuster)
+  - Intel mainstone II board emulation (Armin Kuster)
   - VMware SVGA II graphics card support (Andrzej Zaborowski)
 
 version 0.9.0:
index 63f1784..5856791 100644 (file)
@@ -64,19 +64,24 @@ static void mainstone_common_init(int ram_size, int vga_ram_size,
                 const char *kernel_cmdline, const char *initrd_filename,
                 const char *cpu_model, enum mainstone_model_e model, int arm_id)
 {
-    uint32_t mainstone_ram = 0x04000000;
-    uint32_t mainstone_rom = 0x00800000;
+    uint32_t mainstone_ram   = 0x04000000;
+    uint32_t mainstone_rom   = 0x00800000;
+    uint32_t mainstone_flash = 0x02000000;
+    uint32_t sector_len = 256 * 1024;
+    target_phys_addr_t mainstone_flash_base[] = { MST_FLASH_0, MST_FLASH_1 };
     struct pxa2xx_state_s *cpu;
     qemu_irq *mst_irq;
-    int index;
+    int i, index;
 
     if (!cpu_model)
         cpu_model = "pxa270-c5";
 
     /* Setup CPU & memory */
-    if (ram_size < mainstone_ram + mainstone_rom + PXA2XX_INTERNAL_SIZE) {
+    if (ram_size < mainstone_ram + mainstone_rom + 2 * mainstone_flash +
+                    PXA2XX_INTERNAL_SIZE) {
         fprintf(stderr, "This platform requires %i bytes of memory\n",
-                        mainstone_ram + mainstone_rom + PXA2XX_INTERNAL_SIZE);
+                        mainstone_ram + mainstone_rom + 2 * mainstone_flash +
+                        PXA2XX_INTERNAL_SIZE);
         exit(1);
     }
 
@@ -88,32 +93,21 @@ static void mainstone_common_init(int ram_size, int vga_ram_size,
     cpu->env->regs[15] = PXA2XX_SDRAM_BASE;
 
     /* There are two 32MiB flash devices on the board */
-    index = drive_get_index(IF_PFLASH, 0, 0);
-    if (index == -1) {
-        fprintf(stderr, "Two flash images must be given with the "
-                "'pflash' parameter\n");
-        exit(1);
-    }
-    if (!pflash_cfi01_register(MST_FLASH_0,
-                         mainstone_ram + PXA2XX_INTERNAL_SIZE,
-                         drives_table[index].bdrv,
-                         256 * 1024, 128, 4, 0, 0, 0, 0)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
-        exit(1);
-    }
-
-    index = drive_get_index(IF_PFLASH, 0, 1);
-    if (index == -1) {
-        fprintf(stderr, "Two flash images must be given with the "
-                "'pflash' parameter\n");
-        exit(1);
-    }
-    if (!pflash_cfi01_register(MST_FLASH_1,
-                         mainstone_ram + PXA2XX_INTERNAL_SIZE,
-                         drives_table[index].bdrv,
-                         256 * 1024, 128, 4, 0, 0, 0, 0)) {
-        fprintf(stderr, "qemu: Error registering flash memory.\n");
-        exit(1);
+    for (i = 0; i < 2; i ++) {
+        index = drive_get_index(IF_PFLASH, 0, i);
+        if (index == -1) {
+            fprintf(stderr, "Two flash images must be given with the "
+                    "'pflash' parameter\n");
+            exit(1);
+        }
+
+        if (!pflash_cfi01_register(mainstone_flash_base[i],
+                                qemu_ram_alloc(mainstone_flash),
+                                drives_table[index].bdrv, sector_len,
+                                mainstone_flash / sector_len, 4, 0, 0, 0, 0)) {
+            fprintf(stderr, "qemu: Error registering flash memory.\n");
+            exit(1);
+        }
     }
 
     mst_irq = mst_irq_init(cpu, MST_FPGA_PHYS, PXA2XX_PIC_GPIO_0);