qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [4246] RAM usage information in machine definition.


From: Andrzej Zaborowski
Subject: [Qemu-devel] [4246] RAM usage information in machine definition.
Date: Thu, 24 Apr 2008 17:59:28 +0000

Revision: 4246
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=4246
Author:   balrog
Date:     2008-04-24 17:59:27 +0000 (Thu, 24 Apr 2008)

Log Message:
-----------
RAM usage information in machine definition.

Modified Paths:
--------------
    trunk/exec.c
    trunk/hw/an5206.c
    trunk/hw/boards.h
    trunk/hw/etraxfs.c
    trunk/hw/gumstix.c
    trunk/hw/integratorcp.c
    trunk/hw/mainstone.c
    trunk/hw/mcf5208.c
    trunk/hw/mips_jazz.c
    trunk/hw/mips_malta.c
    trunk/hw/mips_mipssim.c
    trunk/hw/mips_r4k.c
    trunk/hw/nseries.c
    trunk/hw/palm.c
    trunk/hw/pc.c
    trunk/hw/ppc405_boards.c
    trunk/hw/ppc_chrp.c
    trunk/hw/ppc_oldworld.c
    trunk/hw/ppc_prep.c
    trunk/hw/r2d.c
    trunk/hw/realview.c
    trunk/hw/shix.c
    trunk/hw/spitz.c
    trunk/hw/stellaris.c
    trunk/hw/sun4m.c
    trunk/hw/sun4u.c
    trunk/sysemu.h
    trunk/vl.c

Modified: trunk/exec.c
===================================================================
--- trunk/exec.c        2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/exec.c        2008-04-24 17:59:27 UTC (rev 4246)
@@ -2093,7 +2093,7 @@
 ram_addr_t qemu_ram_alloc(unsigned int size)
 {
     ram_addr_t addr;
-    if ((phys_ram_alloc_offset + size) >= phys_ram_size) {
+    if ((phys_ram_alloc_offset + size) > phys_ram_size) {
         fprintf(stderr, "Not enough memory (requested_size = %u, max memory = 
%d)\n",
                 size, phys_ram_size);
         abort();

Modified: trunk/hw/an5206.c
===================================================================
--- trunk/hw/an5206.c   2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/an5206.c   2008-04-24 17:59:27 UTC (rev 4246)
@@ -91,4 +91,5 @@
     "an5206",
     "Arnewsh 5206",
     an5206_init,
+    512,
 };

Modified: trunk/hw/boards.h
===================================================================
--- trunk/hw/boards.h   2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/boards.h   2008-04-24 17:59:27 UTC (rev 4246)
@@ -14,6 +14,8 @@
     const char *name;
     const char *desc;
     QEMUMachineInitFunc *init;
+#define RAMSIZE_FIXED  (1 << 0)
+    size_t ram_require;
     struct QEMUMachine *next;
 } QEMUMachine;
 

Modified: trunk/hw/etraxfs.c
===================================================================
--- trunk/hw/etraxfs.c  2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/etraxfs.c  2008-04-24 17:59:27 UTC (rev 4246)
@@ -124,4 +124,5 @@
     "bareetraxfs",
     "Bare ETRAX FS board",
     bareetraxfs_init,
+    0x800000,
 };

Modified: trunk/hw/gumstix.c
===================================================================
--- trunk/hw/gumstix.c  2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/gumstix.c  2008-04-24 17:59:27 UTC (rev 4246)
@@ -125,10 +125,12 @@
     "connex",
     "Gumstix Connex (PXA255)",
     connex_init,
+    (0x05000000 + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED,
 };
 
 QEMUMachine verdex_machine = {
     "verdex",
     "Gumstix Verdex (PXA270)",
     verdex_init,
+    (0x12000000 + PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED,
 };

Modified: trunk/hw/integratorcp.c
===================================================================
--- trunk/hw/integratorcp.c     2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/integratorcp.c     2008-04-24 17:59:27 UTC (rev 4246)
@@ -231,7 +231,7 @@
    integratorcm_write
 };
 
-static void integratorcm_init(int memsz, uint32_t flash_offset)
+static void integratorcm_init(int memsz)
 {
     int iomemtype;
     integratorcm_state *s;
@@ -258,7 +258,7 @@
     }
     memcpy(integrator_spd + 73, "QEMU-MEMORY", 11);
     s->cm_init = 0x00000112;
-    s->flash_offset = flash_offset;
+    s->flash_offset = qemu_ram_alloc(0x100000);
 
     iomemtype = cpu_register_io_memory(0, integratorcm_readfn,
                                        integratorcm_writefn, s);
@@ -480,7 +480,7 @@
                      const char *initrd_filename, const char *cpu_model)
 {
     CPUState *env;
-    uint32_t bios_offset;
+    uint32_t ram_offset;
     qemu_irq *pic;
     qemu_irq *cpu_pic;
     int sd;
@@ -492,15 +492,15 @@
         fprintf(stderr, "Unable to find CPU definition\n");
         exit(1);
     }
-    bios_offset = ram_size + vga_ram_size;
+    ram_offset = qemu_ram_alloc(ram_size);
     /* ??? On a real system the first 1Mb is mapped as SSRAM or boot flash.  */
     /* ??? RAM shoud repeat to fill physical memory space.  */
     /* SDRAM at address zero*/
-    cpu_register_physical_memory(0, ram_size, IO_MEM_RAM);
+    cpu_register_physical_memory(0, ram_size, ram_offset | IO_MEM_RAM);
     /* And again at address 0x80000000 */
-    cpu_register_physical_memory(0x80000000, ram_size, IO_MEM_RAM);
+    cpu_register_physical_memory(0x80000000, ram_size, ram_offset | 
IO_MEM_RAM);
 
-    integratorcm_init(ram_size >> 20, bios_offset);
+    integratorcm_init(ram_size >> 20);
     cpu_pic = arm_pic_init_cpu(env);
     pic = icp_pic_init(0x14000000, cpu_pic[ARM_PIC_CPU_IRQ],
                        cpu_pic[ARM_PIC_CPU_FIQ]);
@@ -543,4 +543,5 @@
     "integratorcp",
     "ARM Integrator/CP (ARM926EJ-S)",
     integratorcp_init,
+    0x100000,
 };

Modified: trunk/hw/mainstone.c
===================================================================
--- trunk/hw/mainstone.c        2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/mainstone.c        2008-04-24 17:59:27 UTC (rev 4246)
@@ -59,6 +59,10 @@
 
 enum mainstone_model_e { mainstone };
 
+#define MAINSTONE_RAM  0x04000000
+#define MAINSTONE_ROM  0x00800000
+#define MAINSTONE_FLASH        0x02000000
+
 static struct arm_boot_info mainstone_binfo = {
     .loader_start = PXA2XX_SDRAM_BASE,
     .ram_size = 0x04000000,
@@ -69,9 +73,6 @@
                 const char *kernel_cmdline, const char *initrd_filename,
                 const char *cpu_model, enum mainstone_model_e model, int 
arm_id)
 {
-    uint32_t mainstone_ram   = mainstone_binfo.ram_size;
-    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;
@@ -82,17 +83,17 @@
         cpu_model = "pxa270-c5";
 
     /* Setup CPU & memory */
-    if (ram_size < mainstone_ram + mainstone_rom + 2 * mainstone_flash +
+    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 + 2 * mainstone_flash +
+                        MAINSTONE_RAM + MAINSTONE_ROM + 2 * MAINSTONE_FLASH +
                         PXA2XX_INTERNAL_SIZE);
         exit(1);
     }
 
-    cpu = pxa270_init(mainstone_ram, ds, cpu_model);
-    cpu_register_physical_memory(0, mainstone_rom,
-                    qemu_ram_alloc(mainstone_rom) | IO_MEM_ROM);
+    cpu = pxa270_init(mainstone_binfo.ram_size, ds, cpu_model);
+    cpu_register_physical_memory(0, MAINSTONE_ROM,
+                    qemu_ram_alloc(MAINSTONE_ROM) | IO_MEM_ROM);
 
     /* Setup initial (reset) machine state */
     cpu->env->regs[15] = mainstone_binfo.loader_start;
@@ -107,9 +108,9 @@
         }
 
         if (!pflash_cfi01_register(mainstone_flash_base[i],
-                                qemu_ram_alloc(mainstone_flash),
+                                qemu_ram_alloc(MAINSTONE_FLASH),
                                 drives_table[index].bdrv, sector_len,
-                                mainstone_flash / sector_len, 4, 0, 0, 0, 0)) {
+                                MAINSTONE_FLASH / sector_len, 4, 0, 0, 0, 0)) {
             fprintf(stderr, "qemu: Error registering flash memory.\n");
             exit(1);
         }
@@ -146,4 +147,6 @@
     "mainstone",
     "Mainstone II (PXA27x)",
     mainstone_init,
+    (MAINSTONE_RAM + MAINSTONE_ROM + 2 * MAINSTONE_FLASH +
+     PXA2XX_INTERNAL_SIZE) | RAMSIZE_FIXED,
 };

Modified: trunk/hw/mcf5208.c
===================================================================
--- trunk/hw/mcf5208.c  2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/mcf5208.c  2008-04-24 17:59:27 UTC (rev 4246)
@@ -308,4 +308,5 @@
     "mcf5208evb",
     "MCF5206EVB",
     mcf5208evb_init,
+    16384,
 };

Modified: trunk/hw/mips_jazz.c
===================================================================
--- trunk/hw/mips_jazz.c        2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/mips_jazz.c        2008-04-24 17:59:27 UTC (rev 4246)
@@ -277,10 +277,12 @@
     "magnum",
     "MIPS Magnum",
     mips_magnum_init,
+    MAGNUM_BIOS_SIZE + VGA_RAM_SIZE,
 };
 
 QEMUMachine mips_pica61_machine = {
     "pica61",
     "Acer Pica 61",
     mips_pica61_init,
+    MAGNUM_BIOS_SIZE + VGA_RAM_SIZE,
 };

Modified: trunk/hw/mips_malta.c
===================================================================
--- trunk/hw/mips_malta.c       2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/mips_malta.c       2008-04-24 17:59:27 UTC (rev 4246)
@@ -949,4 +949,5 @@
     "malta",
     "MIPS Malta Core LV",
     mips_malta_init,
+    VGA_RAM_SIZE + BIOS_SIZE,
 };

Modified: trunk/hw/mips_mipssim.c
===================================================================
--- trunk/hw/mips_mipssim.c     2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/mips_mipssim.c     2008-04-24 17:59:27 UTC (rev 4246)
@@ -195,4 +195,5 @@
     "mipssim",
     "MIPS MIPSsim platform",
     mips_mipssim_init,
+    BIOS_SIZE + VGA_RAM_SIZE /* unused */,
 };

Modified: trunk/hw/mips_r4k.c
===================================================================
--- trunk/hw/mips_r4k.c 2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/mips_r4k.c 2008-04-24 17:59:27 UTC (rev 4246)
@@ -286,4 +286,5 @@
     "mips",
     "mips r4k platform",
     mips_r4k_init,
+    VGA_RAM_SIZE + BIOS_SIZE,
 };

Modified: trunk/hw/nseries.c
===================================================================
--- trunk/hw/nseries.c  2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/nseries.c  2008-04-24 17:59:27 UTC (rev 4246)
@@ -941,4 +941,5 @@
     "n800",
     "Nokia N800 aka. RX-34 tablet (OMAP2420)",
     n800_init,
+    (0x08000000 + 0x00010000 + OMAP242X_SRAM_SIZE) | RAMSIZE_FIXED,
 };

Modified: trunk/hw/palm.c
===================================================================
--- trunk/hw/palm.c     2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/palm.c     2008-04-24 17:59:27 UTC (rev 4246)
@@ -274,4 +274,5 @@
     "cheetah",
     "Palm Tungsten|E aka. Cheetah PDA (OMAP310)",
     palmte_init,
+    (0x02000000 + 0x00800000 + OMAP15XX_SRAM_SIZE) | RAMSIZE_FIXED,
 };

Modified: trunk/hw/pc.c
===================================================================
--- trunk/hw/pc.c       2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/pc.c       2008-04-24 17:59:27 UTC (rev 4246)
@@ -39,6 +39,8 @@
 #define VGABIOS_FILENAME "vgabios.bin"
 #define VGABIOS_CIRRUS_FILENAME "vgabios-cirrus.bin"
 
+#define PC_MAX_BIOS_SIZE (4 * 1024 * 1024)
+
 /* Leave a chunk of memory at the top of RAM for the BIOS ACPI tables.  */
 #define ACPI_DATA_SIZE       0x10000
 
@@ -1018,10 +1020,12 @@
     "pc",
     "Standard PC",
     pc_init_pci,
+    VGA_RAM_SIZE + PC_MAX_BIOS_SIZE,
 };
 
 QEMUMachine isapc_machine = {
     "isapc",
     "ISA-only PC",
     pc_init_isa,
+    VGA_RAM_SIZE + PC_MAX_BIOS_SIZE,
 };

Modified: trunk/hw/ppc405_boards.c
===================================================================
--- trunk/hw/ppc405_boards.c    2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/ppc405_boards.c    2008-04-24 17:59:27 UTC (rev 4246)
@@ -360,6 +360,7 @@
     "ref405ep",
     "ref405ep",
     ref405ep_init,
+    (128 * 1024 * 1024 + 4096 + 512 * 1024 + BIOS_SIZE) | RAMSIZE_FIXED,
 };
 
 /*****************************************************************************/
@@ -642,4 +643,5 @@
     "taihu",
     "taihu",
     taihu_405ep_init,
+    (128 * 1024 * 1024 + 4096 + BIOS_SIZE + 32 * 1024 * 1024) | RAMSIZE_FIXED,
 };

Modified: trunk/hw/ppc_chrp.c
===================================================================
--- trunk/hw/ppc_chrp.c 2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/ppc_chrp.c 2008-04-24 17:59:27 UTC (rev 4246)
@@ -335,4 +335,5 @@
     "mac99",
     "Mac99 based PowerMAC",
     ppc_core99_init,
+    BIOS_SIZE + VGA_RAM_SIZE,
 };

Modified: trunk/hw/ppc_oldworld.c
===================================================================
--- trunk/hw/ppc_oldworld.c     2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/ppc_oldworld.c     2008-04-24 17:59:27 UTC (rev 4246)
@@ -370,4 +370,5 @@
     "g3bw",
     "Heathrow based PowerMAC",
     ppc_heathrow_init,
+    BIOS_SIZE + VGA_RAM_SIZE,
 };

Modified: trunk/hw/ppc_prep.c
===================================================================
--- trunk/hw/ppc_prep.c 2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/ppc_prep.c 2008-04-24 17:59:27 UTC (rev 4246)
@@ -764,4 +764,5 @@
     "prep",
     "PowerPC PREP platform",
     ppc_prep_init,
+    BIOS_SIZE + VGA_RAM_SIZE,
 };

Modified: trunk/hw/r2d.c
===================================================================
--- trunk/hw/r2d.c      2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/r2d.c      2008-04-24 17:59:27 UTC (rev 4246)
@@ -69,5 +69,6 @@
 QEMUMachine r2d_machine = {
     "r2d",
     "r2d-plus board",
-    r2d_init
+    r2d_init,
+    SDRAM_SIZE | RAMSIZE_FIXED
 };

Modified: trunk/hw/realview.c
===================================================================
--- trunk/hw/realview.c 2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/realview.c 2008-04-24 17:59:27 UTC (rev 4246)
@@ -199,5 +199,6 @@
 QEMUMachine realview_machine = {
     "realview",
     "ARM RealView Emulation Baseboard (ARM926EJ-S)",
-    realview_init
+    realview_init,
+    0x1000
 };

Modified: trunk/hw/shix.c
===================================================================
--- trunk/hw/shix.c     2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/shix.c     2008-04-24 17:59:27 UTC (rev 4246)
@@ -110,5 +110,6 @@
 QEMUMachine shix_machine = {
     "shix",
     "shix card",
-    shix_init
+    shix_init,
+    (0x00004000 + 0x01000000 + 0x01000000) | RAMSIZE_FIXED
 };

Modified: trunk/hw/spitz.c
===================================================================
--- trunk/hw/spitz.c    2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/spitz.c    2008-04-24 17:59:27 UTC (rev 4246)
@@ -1180,6 +1180,9 @@
 /* Board init.  */
 enum spitz_model_e { spitz, akita, borzoi, terrier };
 
+#define SPITZ_RAM      0x04000000
+#define SPITZ_ROM      0x00800000
+
 static struct arm_boot_info spitz_binfo = {
     .loader_start = PXA2XX_SDRAM_BASE,
     .ram_size = 0x04000000,
@@ -1190,8 +1193,6 @@
                 const char *kernel_cmdline, const char *initrd_filename,
                 const char *cpu_model, enum spitz_model_e model, int arm_id)
 {
-    uint32_t spitz_ram = spitz_binfo.ram_size;
-    uint32_t spitz_rom = 0x00800000;
     struct pxa2xx_state_s *cpu;
     struct scoop_info_s *scp;
 
@@ -1199,17 +1200,17 @@
         cpu_model = (model == terrier) ? "pxa270-c5" : "pxa270-c0";
 
     /* Setup CPU & memory */
-    if (ram_size < spitz_ram + spitz_rom + PXA2XX_INTERNAL_SIZE) {
+    if (ram_size < SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE) {
         fprintf(stderr, "This platform requires %i bytes of memory\n",
-                        spitz_ram + spitz_rom + PXA2XX_INTERNAL_SIZE);
+                        SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE);
         exit(1);
     }
-    cpu = pxa270_init(spitz_ram, ds, cpu_model);
+    cpu = pxa270_init(spitz_binfo.ram_size, ds, cpu_model);
 
     sl_flash_register(cpu, (model == spitz) ? FLASH_128M : FLASH_1024M);
 
-    cpu_register_physical_memory(0, spitz_rom,
-                    qemu_ram_alloc(spitz_rom) | IO_MEM_ROM);
+    cpu_register_physical_memory(0, SPITZ_ROM,
+                    qemu_ram_alloc(SPITZ_ROM) | IO_MEM_ROM);
 
     /* Setup peripherals */
     spitz_keyboard_register(cpu);
@@ -1285,22 +1286,26 @@
     "akita",
     "Akita PDA (PXA270)",
     akita_init,
+    SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED,
 };
 
 QEMUMachine spitzpda_machine = {
     "spitz",
     "Spitz PDA (PXA270)",
     spitz_init,
+    SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED,
 };
 
 QEMUMachine borzoipda_machine = {
     "borzoi",
     "Borzoi PDA (PXA270)",
     borzoi_init,
+    SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED,
 };
 
 QEMUMachine terrierpda_machine = {
     "terrier",
     "Terrier PDA (PXA270)",
     terrier_init,
+    SPITZ_RAM + SPITZ_ROM + PXA2XX_INTERNAL_SIZE + RAMSIZE_FIXED,
 };

Modified: trunk/hw/stellaris.c
===================================================================
--- trunk/hw/stellaris.c        2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/stellaris.c        2008-04-24 17:59:27 UTC (rev 4246)
@@ -1189,10 +1189,12 @@
     "lm3s811evb",
     "Stellaris LM3S811EVB",
     lm3s811evb_init,
+    (64 * 1024 * 1024 + 8 * 1024 * 1024) | RAMSIZE_FIXED,
 };
 
 QEMUMachine lm3s6965evb_machine = {
     "lm3s6965evb",
     "Stellaris LM3S6965EVB",
     lm3s6965evb_init,
+    (256 * 1024 * 1024 + 64 * 1024 * 1024) | RAMSIZE_FIXED,
 };

Modified: trunk/hw/sun4m.c
===================================================================
--- trunk/hw/sun4m.c    2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/sun4m.c    2008-04-24 17:59:27 UTC (rev 4246)
@@ -1213,60 +1213,70 @@
     "SS-5",
     "Sun4m platform, SPARCstation 5",
     ss5_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine ss10_machine = {
     "SS-10",
     "Sun4m platform, SPARCstation 10",
     ss10_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine ss600mp_machine = {
     "SS-600MP",
     "Sun4m platform, SPARCserver 600MP",
     ss600mp_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine ss20_machine = {
     "SS-20",
     "Sun4m platform, SPARCstation 20",
     ss20_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine ss2_machine = {
     "SS-2",
     "Sun4c platform, SPARCstation 2",
     ss2_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine voyager_machine = {
     "Voyager",
     "Sun4m platform, SPARCstation Voyager",
     vger_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine ss_lx_machine = {
     "LX",
     "Sun4m platform, SPARCstation LX",
     ss_lx_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine ss4_machine = {
     "SS-4",
     "Sun4m platform, SPARCstation 4",
     ss4_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine scls_machine = {
     "SPARCClassic",
     "Sun4m platform, SPARCClassic",
     scls_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine sbook_machine = {
     "SPARCbook",
     "Sun4m platform, SPARCbook",
     sbook_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 static const struct sun4d_hwdef sun4d_hwdefs[] = {
@@ -1503,10 +1513,12 @@
     "SS-1000",
     "Sun4d platform, SPARCserver 1000",
     ss1000_init,
+    PROM_SIZE_MAX + 0x00100000,
 };
 
 QEMUMachine ss2000_machine = {
     "SS-2000",
     "Sun4d platform, SPARCcenter 2000",
     ss2000_init,
+    PROM_SIZE_MAX + 0x00100000,
 };

Modified: trunk/hw/sun4u.c
===================================================================
--- trunk/hw/sun4u.c    2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/hw/sun4u.c    2008-04-24 17:59:27 UTC (rev 4246)
@@ -385,4 +385,5 @@
     "sun4u",
     "Sun4u platform",
     sun4u_init,
+    PROM_SIZE_MAX + VGA_RAM_SIZE,
 };

Modified: trunk/sysemu.h
===================================================================
--- trunk/sysemu.h      2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/sysemu.h      2008-04-24 17:59:27 UTC (rev 4246)
@@ -108,8 +108,6 @@
 extern unsigned int nb_prom_envs;
 #endif
 
-/* XXX: make it dynamic */
-#define MAX_BIOS_SIZE (4 * 1024 * 1024)
 #if defined (TARGET_PPC)
 #define BIOS_SIZE (1024 * 1024)
 #elif defined (TARGET_SPARC64)

Modified: trunk/vl.c
===================================================================
--- trunk/vl.c  2008-04-24 17:20:25 UTC (rev 4245)
+++ trunk/vl.c  2008-04-24 17:59:27 UTC (rev 4246)
@@ -8277,7 +8277,7 @@
     machine = first_machine;
     cpu_model = NULL;
     initrd_filename = NULL;
-    ram_size = DEFAULT_RAM_SIZE * 1024 * 1024;
+    ram_size = -1;
     vga_ram_size = VGA_RAM_SIZE;
 #ifdef CONFIG_GDBSTUB
     use_gdbstub = 0;
@@ -8963,8 +8963,26 @@
 #endif
 
     /* init the memory */
-    phys_ram_size = ram_size + vga_ram_size + MAX_BIOS_SIZE;
+    phys_ram_size = machine->ram_require & ~RAMSIZE_FIXED;
 
+    if (machine->ram_require & RAMSIZE_FIXED) {
+        if (ram_size > 0) {
+            if (ram_size < phys_ram_size) {
+                fprintf(stderr, "Machine `%s' requires %i bytes of memory\n",
+                                machine->name, phys_ram_size);
+                exit(-1);
+            }
+
+            phys_ram_size = ram_size;
+        } else
+            ram_size = phys_ram_size;
+    } else {
+        if (ram_size < 0)
+            ram_size = DEFAULT_RAM_SIZE * 1024 * 1024;
+
+        phys_ram_size += ram_size;
+    }
+
     phys_ram_base = qemu_vmalloc(phys_ram_size);
     if (!phys_ram_base) {
         fprintf(stderr, "Could not allocate physical memory\n");






reply via email to

[Prev in Thread] Current Thread [Next in Thread]