Commit 4edebb0e8e14a5b934114b5ff74cb86437bb2532
1 parent
3d29fbef
Set limits for memory size to avoid overlap with devices
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2823 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
8 additions
and
3 deletions
hw/sun4m.c
... | ... | @@ -478,8 +478,13 @@ static const struct hwdef hwdefs[] = { |
478 | 478 | static void sun4m_common_init(int ram_size, int boot_device, DisplayState *ds, |
479 | 479 | const char *kernel_filename, const char *kernel_cmdline, |
480 | 480 | const char *initrd_filename, const char *cpu_model, |
481 | - unsigned int machine) | |
481 | + unsigned int machine, int max_ram) | |
482 | 482 | { |
483 | + if (ram_size > max_ram) { | |
484 | + fprintf(stderr, "qemu: Too much memory for this machine: %d, maximum %d\n", | |
485 | + ram_size / (1024 * 1024), max_ram / (1024 * 1024)); | |
486 | + exit(1); | |
487 | + } | |
483 | 488 | sun4m_hw_init(&hwdefs[machine], ram_size, ds, cpu_model); |
484 | 489 | |
485 | 490 | sun4m_load_kernel(hwdefs[machine].vram_size, ram_size, boot_device, |
... | ... | @@ -497,7 +502,7 @@ static void ss5_init(int ram_size, int vga_ram_size, int boot_device, |
497 | 502 | cpu_model = "Fujitsu MB86904"; |
498 | 503 | sun4m_common_init(ram_size, boot_device, ds, kernel_filename, |
499 | 504 | kernel_cmdline, initrd_filename, cpu_model, |
500 | - 0); | |
505 | + 0, 0x10000000); | |
501 | 506 | } |
502 | 507 | |
503 | 508 | /* SPARCstation 10 hardware initialisation */ |
... | ... | @@ -510,7 +515,7 @@ static void ss10_init(int ram_size, int vga_ram_size, int boot_device, |
510 | 515 | cpu_model = "TI SuperSparc II"; |
511 | 516 | sun4m_common_init(ram_size, boot_device, ds, kernel_filename, |
512 | 517 | kernel_cmdline, initrd_filename, cpu_model, |
513 | - 1); | |
518 | + 1, 0x20000000); // XXX tcx overlap, actually first 4GB ok | |
514 | 519 | } |
515 | 520 | |
516 | 521 | QEMUMachine ss5_machine = { | ... | ... |