Leverage the common code introduced in commit c9cf636d48 ("machine: Add a valid_cpu_types property") to check for the single valid CPU type. This allows reporting an error for invalid CPUs:
$ qemu-system-avr -M 2009 -cpu avr51-avr-cpu qemu-system-avr: Invalid CPU model: avr51 The only valid type is: avr5 Reported-by: Iris Artin <i...@artins.org> Signed-off-by: Philippe Mathieu-Daudé <phi...@linaro.org> --- hw/avr/arduino.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/hw/avr/arduino.c b/hw/avr/arduino.c index 48ef478346..a8da2728f0 100644 --- a/hw/avr/arduino.c +++ b/hw/avr/arduino.c @@ -71,6 +71,10 @@ static void arduino_machine_class_init(ObjectClass *oc, void *data) static void arduino_duemilanove_class_init(ObjectClass *oc, void *data) { + static const char * const valid_cpu_types[] = { + AVR_CPU_TYPE_NAME("avr5"), + NULL + }; MachineClass *mc = MACHINE_CLASS(oc); ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc); @@ -80,12 +84,17 @@ static void arduino_duemilanove_class_init(ObjectClass *oc, void *data) */ mc->desc = "Arduino Duemilanove (ATmega168)", mc->alias = "2009"; + mc->valid_cpu_types = valid_cpu_types; amc->mcu_type = TYPE_ATMEGA168_MCU; amc->xtal_hz = 16 * 1000 * 1000; }; static void arduino_uno_class_init(ObjectClass *oc, void *data) { + static const char * const valid_cpu_types[] = { + AVR_CPU_TYPE_NAME("avr5"), + NULL + }; MachineClass *mc = MACHINE_CLASS(oc); ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc); @@ -95,12 +104,17 @@ static void arduino_uno_class_init(ObjectClass *oc, void *data) */ mc->desc = "Arduino UNO (ATmega328P)"; mc->alias = "uno"; + mc->valid_cpu_types = valid_cpu_types; amc->mcu_type = TYPE_ATMEGA328_MCU; amc->xtal_hz = 16 * 1000 * 1000; }; static void arduino_mega_class_init(ObjectClass *oc, void *data) { + static const char * const valid_cpu_types[] = { + AVR_CPU_TYPE_NAME("avr51"), + NULL + }; MachineClass *mc = MACHINE_CLASS(oc); ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc); @@ -110,12 +124,17 @@ static void arduino_mega_class_init(ObjectClass *oc, void *data) */ mc->desc = "Arduino Mega (ATmega1280)"; mc->alias = "mega"; + mc->valid_cpu_types = valid_cpu_types; amc->mcu_type = TYPE_ATMEGA1280_MCU; amc->xtal_hz = 16 * 1000 * 1000; }; static void arduino_mega2560_class_init(ObjectClass *oc, void *data) { + static const char * const valid_cpu_types[] = { + AVR_CPU_TYPE_NAME("avr6"), + NULL + }; MachineClass *mc = MACHINE_CLASS(oc); ArduinoMachineClass *amc = ARDUINO_MACHINE_CLASS(oc); @@ -125,6 +144,7 @@ static void arduino_mega2560_class_init(ObjectClass *oc, void *data) */ mc->desc = "Arduino Mega 2560 (ATmega2560)"; mc->alias = "mega2560"; + mc->valid_cpu_types = valid_cpu_types; amc->mcu_type = TYPE_ATMEGA2560_MCU; amc->xtal_hz = 16 * 1000 * 1000; /* CSTCE16M0V53-R0 */ }; -- 2.45.2