Introduce the 'malta-strict' machine, aiming to have the same limitations as real hardware.
Start with 32 MB which is the default on the CoreLV, and allow up to 256 MB which is the maximum this card can accept. See datasheet 'MIPS Document Number: MD00051 Revision 01.07'. Example when asking a too big amount of memory: $ qemu-system-mips -M malta-strict -bios /dev/null -m 512 qemu-system-mips: Too much memory for this machine: 512 MiB, maximum 256 MiB Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- hw/mips/malta.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/hw/mips/malta.c b/hw/mips/malta.c index fd4964e8b0..ac4a618751 100644 --- a/hw/mips/malta.c +++ b/hw/mips/malta.c @@ -1478,12 +1478,34 @@ static void malta_machine_default_class_init(ObjectClass *oc, void *data) mmc->max_ramsize = 2 * GiB; } +static void malta_machine_strict_class_init(ObjectClass *oc, void *data) +{ + MachineClass *mc = MACHINE_CLASS(oc); + MaltaMachineClass *mmc = MALTA_MACHINE_CLASS(oc); + + mc->desc = "MIPS Malta Core LV (physically limited as real hardware)"; + mc->block_default_type = IF_PFLASH; + mc->max_cpus = 1; +#ifdef TARGET_MIPS64 + mc->default_cpu_type = MIPS_CPU_TYPE_NAME("5Kc"); +#else + mc->default_cpu_type = MIPS_CPU_TYPE_NAME("4Kc"); +#endif + mc->default_ram_size = 32 * MiB; + mmc->max_ramsize = 256 * MiB; /* 32 MByte PC100 SDRAM DIMMs x 4 slots */ +}; + static const TypeInfo malta_machine_types[] = { { .name = MACHINE_TYPE_NAME("malta"), .parent = TYPE_MALTA_MACHINE, .class_init = malta_machine_default_class_init, }, + { + .name = MACHINE_TYPE_NAME("malta-strict"), + .parent = TYPE_MALTA_MACHINE, + .class_init = malta_machine_strict_class_init, + }, { .name = TYPE_MALTA_MACHINE, .parent = TYPE_MACHINE, -- 2.21.3