Skip to main content

qemu_command_builder/
machine_type.rs

1use crate::to_command::{ToArg, ToCommand};
2use proptest_derive::Arbitrary;
3use std::str::FromStr;
4
5#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq, Arbitrary)]
6pub enum MachineTypeX86_64 {
7    /// microvm (i386)
8    Microvm,
9    /// Standard PC (i440FX + PIIX, 1996)
10    Pci440fx9_2,
11    /// Standard PC (i440FX + PIIX, 1996)
12    Pci440fx9_1,
13    /// Standard PC (i440FX + PIIX, 1996)
14    Pci440fx9_0,
15    /// Standard PC (i440FX + PIIX, 1996)
16    Pci440fx8_2,
17    /// Standard PC (i440FX + PIIX, 1996)
18    Pci440fx8_1,
19    /// Standard PC (i440FX + PIIX, 1996)
20    Pci440fx8_0,
21    /// Standard PC (i440FX + PIIX, 1996)
22    Pci440fx7_2,
23    /// Standard PC (i440FX + PIIX, 1996)
24    Pci440fx7_1,
25    /// Standard PC (i440FX + PIIX, 1996) (alias of pc-i440fx-10.0)
26    Pc,
27    /// Standard PC (i440FX + PIIX, 1996) (default)
28    Pci440fx10_0,
29    /// Standard PC (Q35 + ICH9, 2009)
30    Pcq359_2,
31    /// Standard PC (Q35 + ICH9, 2009)
32    Pcq359_1,
33    /// Standard PC (Q35 + ICH9, 2009)
34    Pcq359_0,
35    /// Standard PC (Q35 + ICH9, 2009)
36    Pcq358_2,
37    /// Standard PC (Q35 + ICH9, 2009)
38    Pcq358_1,
39    /// Standard PC (Q35 + ICH9, 2009)
40    Pcq358_0,
41    /// Standard PC (Q35 + ICH9, 2009)
42    Pcq357_2,
43    /// Standard PC (Q35 + ICH9, 2009)
44    Pcq357_1,
45    /// Standard PC (Q35 + ICH9, 2009) (alias of pc-q35-10.0)
46    Q35,
47    /// Standard PC (Q35 + ICH9, 2009)
48    Pcq3510_0,
49    /// ISA-only PC
50    Isapc,
51    /// empty machine
52    None,
53}
54
55impl ToCommand for MachineTypeX86_64 {
56    fn to_args(&self) -> Vec<String> {
57        let mut cmd = vec![];
58
59        match self {
60            MachineTypeX86_64::Microvm => {
61                cmd.push("microvm".to_string());
62            }
63            MachineTypeX86_64::Pci440fx9_2 => {
64                cmd.push("pc-i440fx-9.2".to_string());
65            }
66            MachineTypeX86_64::Pci440fx9_1 => {
67                cmd.push("pc-i440fx-9.1".to_string());
68            }
69            MachineTypeX86_64::Pci440fx9_0 => {
70                cmd.push("pc-i440fx-9.0".to_string());
71            }
72            MachineTypeX86_64::Pci440fx8_2 => {
73                cmd.push("pc-i440fx-8.2".to_string());
74            }
75            MachineTypeX86_64::Pci440fx8_1 => {
76                cmd.push("pc-i440fx-8.1".to_string());
77            }
78            MachineTypeX86_64::Pci440fx8_0 => {
79                cmd.push("pc-i440fx-8.0".to_string());
80            }
81            MachineTypeX86_64::Pci440fx7_2 => {
82                cmd.push("pc-i440fx-7.2".to_string());
83            }
84            MachineTypeX86_64::Pci440fx7_1 => {
85                cmd.push("pc-i440fx-7.1".to_string());
86            }
87            MachineTypeX86_64::Pc => {
88                cmd.push("pc".to_string());
89            }
90            MachineTypeX86_64::Pci440fx10_0 => {
91                cmd.push("pc-i440fx-10.0".to_string());
92            }
93            MachineTypeX86_64::Pcq359_2 => {
94                cmd.push("pc-q35-9.2".to_string());
95            }
96            MachineTypeX86_64::Pcq359_1 => {
97                cmd.push("pc-q35-9.1".to_string());
98            }
99            MachineTypeX86_64::Pcq359_0 => {
100                cmd.push("pc-q35-9.0".to_string());
101            }
102            MachineTypeX86_64::Pcq358_2 => {
103                cmd.push("pc-q35-8.2".to_string());
104            }
105            MachineTypeX86_64::Pcq358_1 => {
106                cmd.push("pc-q35-8.1".to_string());
107            }
108            MachineTypeX86_64::Pcq358_0 => {
109                cmd.push("pc-q35-8.0".to_string());
110            }
111            MachineTypeX86_64::Pcq357_2 => {
112                cmd.push("pc-q35-7.2".to_string());
113            }
114            MachineTypeX86_64::Pcq357_1 => {
115                cmd.push("pc-q35-7.1".to_string());
116            }
117            MachineTypeX86_64::Q35 => {
118                cmd.push("q35".to_string());
119            }
120            MachineTypeX86_64::Pcq3510_0 => {
121                cmd.push("pc-q35-10.0".to_string());
122            }
123            MachineTypeX86_64::Isapc => {
124                cmd.push("isapc".to_string());
125            }
126            MachineTypeX86_64::None => {
127                cmd.push("none".to_string());
128            }
129        }
130        cmd
131    }
132}
133
134impl ToArg for MachineTypeX86_64 {
135    fn to_arg(&self) -> &str {
136        match self {
137            MachineTypeX86_64::Microvm => "microvm",
138            MachineTypeX86_64::Pci440fx9_2 => "pc-i440fx-9.2",
139            MachineTypeX86_64::Pci440fx9_1 => "pc-i440fx-9.1",
140            MachineTypeX86_64::Pci440fx9_0 => "pc-i440fx-9.0",
141            MachineTypeX86_64::Pci440fx8_2 => "pc-i440fx-8.2",
142            MachineTypeX86_64::Pci440fx8_1 => "pc-i440fx-8.1",
143            MachineTypeX86_64::Pci440fx8_0 => "pc-i440fx-8.0",
144            MachineTypeX86_64::Pci440fx7_2 => "pc-i440fx-7.2",
145            MachineTypeX86_64::Pci440fx7_1 => "pc-i440fx-7.1",
146            MachineTypeX86_64::Pc => "pc",
147            MachineTypeX86_64::Pci440fx10_0 => "pc-i440fx-10.0",
148            MachineTypeX86_64::Pcq359_2 => "pc-q35-9.2",
149            MachineTypeX86_64::Pcq359_1 => "pc-q35-9.1",
150            MachineTypeX86_64::Pcq359_0 => "pc-q35-9.0",
151            MachineTypeX86_64::Pcq358_2 => "pc-q35-8.2",
152            MachineTypeX86_64::Pcq358_1 => "pc-q35-8.1",
153            MachineTypeX86_64::Pcq358_0 => "pc-q35-8.0",
154            MachineTypeX86_64::Pcq357_2 => "pc-q35-7.2",
155            MachineTypeX86_64::Pcq357_1 => "pc-q35-7.1",
156            MachineTypeX86_64::Q35 => "q35",
157            MachineTypeX86_64::Pcq3510_0 => "pc-q35-10.0",
158            MachineTypeX86_64::Isapc => "isapc",
159            MachineTypeX86_64::None => "none",
160        }
161    }
162}
163
164impl FromStr for MachineTypeX86_64 {
165    type Err = String;
166
167    fn from_str(s: &str) -> Result<Self, Self::Err> {
168        match s {
169            "microvm" => Ok(MachineTypeX86_64::Microvm),
170            "pc-i440fx-9.2" => Ok(MachineTypeX86_64::Pci440fx9_2),
171            "pc-i440fx-9.1" => Ok(MachineTypeX86_64::Pci440fx9_1),
172            "pc-i440fx-9.0" => Ok(MachineTypeX86_64::Pci440fx9_0),
173            "pc-i440fx-8.2" => Ok(MachineTypeX86_64::Pci440fx8_2),
174            "pc-i440fx-8.1" => Ok(MachineTypeX86_64::Pci440fx8_1),
175            "pc-i440fx-8.0" => Ok(MachineTypeX86_64::Pci440fx8_0),
176            "pc-i440fx-7.2" => Ok(MachineTypeX86_64::Pci440fx7_2),
177            "pc-i440fx-7.1" => Ok(MachineTypeX86_64::Pci440fx7_1),
178            "pc" => Ok(MachineTypeX86_64::Pc),
179            "pc-i440fx-10.0" => Ok(MachineTypeX86_64::Pci440fx10_0),
180            "pc-q35-9.2" => Ok(MachineTypeX86_64::Pcq359_2),
181            "pc-q35-9.1" => Ok(MachineTypeX86_64::Pcq359_1),
182            "pc-q35-9.0" => Ok(MachineTypeX86_64::Pcq359_0),
183            "pc-q35-8.2" => Ok(MachineTypeX86_64::Pcq358_2),
184            "pc-q35-8.1" => Ok(MachineTypeX86_64::Pcq358_1),
185            "pc-q35-8.0" => Ok(MachineTypeX86_64::Pcq358_0),
186            "pc-q35-7.2" => Ok(MachineTypeX86_64::Pcq357_2),
187            "pc-q35-7.1" => Ok(MachineTypeX86_64::Pcq357_1),
188            "q35" => Ok(MachineTypeX86_64::Q35),
189            "pc-q35-10.0" => Ok(MachineTypeX86_64::Pcq3510_0),
190            "isapc" => Ok(MachineTypeX86_64::Isapc),
191            "none" => Ok(MachineTypeX86_64::None),
192            other => Err(format!("{} is not a supported machine type", other)),
193        }
194    }
195}
196
197#[derive(Debug, Clone, Hash, Ord, PartialOrd, Eq, PartialEq, Arbitrary)]
198pub enum MachineTypeAarch64 {
199    /// Aspeed AST1030 MiniBMC (Cortex-M4)
200    Ast1030evb,
201    /// Aspeed AST2500 EVB (ARM1176)
202    Ast2500evb,
203    /// Aspeed AST2600 EVB (Cortex-A7)
204    Ast2600evb,
205    /// Aspeed AST2700 A0 EVB (Cortex-A35) (alias of ast2700a0-evb)
206    Ast2700evb,
207    /// Aspeed AST2700 A0 EVB (Cortex-A35)
208    Ast2700a0evb,
209    /// Aspeed AST2700 A1 EVB (Cortex-A35)
210    Ast2700a1evb,
211    /// B-L475E-IOT01A Discovery Kit (Cortex-M4)
212    Bl475eiot01a,
213    /// Facebook Bletchley BMC (Cortex-A7)
214    Bletchleybmc,
215    /// Bananapi M2U (Cortex-A7)
216    Bpim2u,
217    /// Canon PowerShot A1100 IS (ARM946)
218    Canona1100,
219    /// Sharp SL-5500 (Collie) PDA (SA-1110)
220    Collie,
221    /// cubietech cubieboard (Cortex-A8)
222    Cubieboard,
223    /// SmartFusion2 SOM kit from Emcraft (M2S010)
224    Emcraftsf2,
225    /// Facebook fby35 BMC (Cortex-A7)
226    Fby35bmc,
227    /// Meta Platforms fby35
228    Fby35,
229    /// Inspur FP5280G2 BMC (ARM1176)
230    Fp5280g2bmc,
231    /// Facebook Fuji BMC (Cortex-A7)
232    Fujibmc,
233    /// Bytedance G220A BMC (ARM1176)
234    G220abmc,
235    /// Calxeda Highbank (ECX-1000)
236    Highbank,
237    /// ARM i.MX25 PDK board (ARM926)
238    Imx25pdk,
239    /// NXP i.MX 8M Plus EVK Board
240    Imx8mpevk,
241    /// ARM Integrator/CP (ARM926EJ-S)
242    Integratorcp,
243    /// Kudo BMC (Cortex-A9)
244    Kudobmc,
245    /// ARM KZM Emulation Baseboard (ARM1136)
246    Kzm,
247    /// Stellaris LM3S6965EVB (Cortex-M3)
248    Lm3s6965evb,
249    /// Stellaris LM3S811EVB (Cortex-M3)
250    Lm3s811evb,
251    /// Freescale i.MX6UL Evaluation Kit (Cortex-A7)
252    Mcimx6ulevk,
253    /// Freescale i.MX7 DUAL SABRE (Cortex-A7)
254    Mcimx7dsabre,
255    /// BBC micro:bit (Cortex-M0)
256    Microbit,
257    /// Calxeda Midway (ECX-2000)
258    Midway,
259    /// Mori BMC (Cortex-A9)
260    Moribmc,
261    /// ARM MPS2 with AN385 FPGA image for Cortex-M3
262    Mps2an385,
263    /// ARM MPS2 with AN386 FPGA image for Cortex-M4
264    Mps2an386,
265    /// ARM MPS2 with AN500 FPGA image for Cortex-M7
266    Mps2an500,
267    /// ARM MPS2 with AN505 FPGA image for Cortex-M33
268    Mps2an505,
269    /// ARM MPS2 with AN511 DesignStart FPGA image for Cortex-M3
270    Mps2an511,
271    /// ARM MPS2 with AN521 FPGA image for dual Cortex-M33
272    Mps2an521,
273    /// ARM MPS3 with AN524 FPGA image for dual Cortex-M33
274    Mps3an524,
275    /// ARM MPS3 with AN536 FPGA image for Cortex-R52
276    Mps3an536,
277    /// ARM MPS3 with AN547 FPGA image for Cortex-M55
278    Mps3an547,
279    /// ARM Musca-A board (dual Cortex-M33)
280    Muscaa,
281    /// ARM Musca-B1 board (dual Cortex-M33)
282    Muscab1,
283    /// Marvell 88w8618 / MusicPal (ARM926EJ-S)
284    Musicpal,
285    /// Netduino 2 Machine (Cortex-M3)
286    Netduino2,
287    /// Netduino Plus 2 Machine (Cortex-M4)
288    Netduinoplus2,
289    /// empty machine
290    None,
291    /// Nuvoton NPCM750 Evaluation Board (Cortex-A9)
292    Npcm750evb,
293    /// Nuvoton NPCM845 Evaluation Board (Cortex-A35)
294    Npcm845evb,
295    /// Samsung NURI board (Exynos4210)
296    Nuri,
297    /// Olimex STM32-H405 (Cortex-M4)
298    Olimexstm32h405,
299    /// Orange Pi PC (Cortex-A7)
300    Orangepipc,
301    /// OpenPOWER Palmetto BMC (ARM926EJ-S)
302    Palmettobmc,
303    /// Qualcomm DC-SCM V1 BMC (Cortex A7)
304    QcomdcscmV1bmc,
305    /// Qualcomm DC-SCM V1/Firework BMC (Cortex A7)
306    Qcomfireworkbmc,
307    /// Quanta GBS (Cortex-A9)
308    Quantagbsbmc,
309    /// Quanta GSJ (Cortex-A9)
310    Quantagsj,
311    /// Quanta-Q71l BMC (ARM926EJ-S)
312    Quantaq71lbmc,
313    /// IBM Rainier BMC (Cortex-A7)
314    Rainierbmc,
315    /// Raspberry Pi Zero (revision 1.2)
316    Raspi0,
317    /// Raspberry Pi A+ (revision 1.1)
318    Raspi1ap,
319    /// Raspberry Pi 2B (revision 1.1)
320    Raspi2b,
321    /// Raspberry Pi 3A+ (revision 1.0)
322    Raspi3ap,
323    /// Raspberry Pi 3B (revision 1.2)
324    Raspi3b,
325    /// Raspberry Pi 4B (revision 1.5)
326    Raspi4b,
327    /// ARM RealView Emulation Baseboard (ARM926EJ-S)
328    Realvieweb,
329    /// ARM RealView Emulation Baseboard (ARM11MPCore)
330    Realviewebmpcore,
331    /// ARM RealView Platform Baseboard for Cortex-A8
332    Realviewpba8,
333    /// ARM RealView Platform Baseboard Explore for Cortex-A9
334    Realviewpbxa9,
335    /// OpenPOWER Romulus BMC (ARM1176)
336    Romulusbmc,
337    /// Freescale i.MX6 Quad SABRE Lite Board (Cortex-A9)
338    Sabrelite,
339    /// QEMU 'SBSA Reference' ARM Virtual Machine
340    Sbsaref,
341    /// Samsung SMDKC210 board (Exynos4210)
342    Smdkc210,
343    /// OCP SonoraPass BMC (ARM1176)
344    Sonorapassbmc,
345    /// ST STM32VLDISCOVERY (Cortex-M3)
346    Stm32vldiscovery,
347    /// Supermicro X11 SPI BMC (ARM1176)
348    Supermicrox11spibmc,
349    /// Supermicro X11 BMC (ARM926EJ-S)
350    Supermicrox11bmc,
351    /// Siemens SX1 (OMAP310) V2
352    Sx1,
353    /// Siemens SX1 (OMAP310) V1
354    Sx1V1,
355    /// Facebook Tiogapass BMC (ARM1176)
356    Tiogapassbmc,
357    /// ARM Versatile/AB (ARM926EJ-S)
358    Versatileab,
359    /// ARM Versatile/PB (ARM926EJ-S)
360    Versatilepb,
361    /// ARM Versatile Express for Cortex-A15
362    Vexpressa15,
363    /// ARM Versatile Express for Cortex-A9
364    Vexpressa9,
365    /// QEMU 10.0 ARM Virtual Machine (alias of virt-10.0)
366    Virt,
367    /// QEMU 10.0 ARM Virtual Machine
368    Virt10_0,
369    /// QEMU 7.1 ARM Virtual Machine
370    Virt7_1,
371    /// QEMU 7.2 ARM Virtual Machine
372    Virt7_2,
373    /// QEMU 8.0 ARM Virtual Machine
374    Virt8_0,
375    /// QEMU 8.1 ARM Virtual Machine
376    Virt8_1,
377    /// QEMU 8.2 ARM Virtual Machine
378    Virt8_2,
379    /// QEMU 9.0 ARM Virtual Machine
380    Virt9_0,
381    /// QEMU 9.1 ARM Virtual Machine
382    Virt9_1,
383    /// QEMU 9.2 ARM Virtual Machine
384    Virt9_2,
385    /// OpenPOWER Witherspoon BMC (ARM1176)
386    Witherspoonbmc,
387    /// Xilinx Zynq 7000 Platform Baseboard for Cortex-A9
388    Xilinxzynqa9,
389    /// Xilinx Versal Virtual development board
390    XlnxVersalvirt,
391    /// Xilinx ZynqMP ZCU102 board with 4xA53s and 2xR5Fs based on the value of smp
392    Xlnxzcu102,
393    /// Facebook YosemiteV2 BMC (ARM1176)
394    Yosemitev2bmc,
395}
396
397impl ToCommand for MachineTypeAarch64 {
398    fn to_args(&self) -> Vec<String> {
399        let mut cmd = vec![];
400
401        match self {
402            MachineTypeAarch64::Ast1030evb => {
403                cmd.push("ast1030-evb".to_string());
404            }
405            MachineTypeAarch64::Ast2500evb => {
406                cmd.push("ast2500-evb".to_string());
407            }
408            MachineTypeAarch64::Ast2600evb => {
409                cmd.push("ast2600-evb".to_string());
410            }
411            MachineTypeAarch64::Ast2700evb => {
412                cmd.push("ast2700-evb".to_string());
413            }
414            MachineTypeAarch64::Ast2700a0evb => {
415                cmd.push("ast2700a0-evb".to_string());
416            }
417            MachineTypeAarch64::Ast2700a1evb => {
418                cmd.push("ast2700a1-evb".to_string());
419            }
420            MachineTypeAarch64::Bl475eiot01a => {
421                cmd.push("b-l475e-iot01a".to_string());
422            }
423            MachineTypeAarch64::Bletchleybmc => {
424                cmd.push("bletchley-bmc".to_string());
425            }
426            MachineTypeAarch64::Bpim2u => {
427                cmd.push("bpim2u".to_string());
428            }
429            MachineTypeAarch64::Canona1100 => {
430                cmd.push("canon-a1100".to_string());
431            }
432            MachineTypeAarch64::Collie => {
433                cmd.push("collie".to_string());
434            }
435            MachineTypeAarch64::Cubieboard => {
436                cmd.push("cubieboard".to_string());
437            }
438            MachineTypeAarch64::Emcraftsf2 => {
439                cmd.push("emcraft-sf2".to_string());
440            }
441            MachineTypeAarch64::Fby35bmc => {
442                cmd.push("fby35-bmc".to_string());
443            }
444            MachineTypeAarch64::Fby35 => {
445                cmd.push("fby35".to_string());
446            }
447            MachineTypeAarch64::Fp5280g2bmc => {
448                cmd.push("fp5280g2-bmc".to_string());
449            }
450            MachineTypeAarch64::Fujibmc => {
451                cmd.push("fuji-bmc".to_string());
452            }
453            MachineTypeAarch64::G220abmc => {
454                cmd.push("g220a-bmc".to_string());
455            }
456            MachineTypeAarch64::Highbank => {
457                cmd.push("highbank".to_string());
458            }
459            MachineTypeAarch64::Imx25pdk => {
460                cmd.push("imx25-pdk".to_string());
461            }
462            MachineTypeAarch64::Imx8mpevk => {
463                cmd.push("imx8mp-evk".to_string());
464            }
465            MachineTypeAarch64::Integratorcp => {
466                cmd.push("integratorcp".to_string());
467            }
468            MachineTypeAarch64::Kudobmc => {
469                cmd.push("kudo-bmc".to_string());
470            }
471            MachineTypeAarch64::Kzm => {
472                cmd.push("kzm".to_string());
473            }
474            MachineTypeAarch64::Lm3s6965evb => {
475                cmd.push("lm3s6965evb".to_string());
476            }
477            MachineTypeAarch64::Lm3s811evb => {
478                cmd.push("lm3s811evb".to_string());
479            }
480            MachineTypeAarch64::Mcimx6ulevk => {
481                cmd.push("mcimx6ul-evk".to_string());
482            }
483            MachineTypeAarch64::Mcimx7dsabre => {
484                cmd.push("mcimx7d-sabre".to_string());
485            }
486            MachineTypeAarch64::Microbit => {
487                cmd.push("microbit".to_string());
488            }
489            MachineTypeAarch64::Midway => {
490                cmd.push("midway".to_string());
491            }
492            MachineTypeAarch64::Moribmc => {
493                cmd.push("mori-bmc".to_string());
494            }
495            MachineTypeAarch64::Mps2an385 => {
496                cmd.push("mps2-an385".to_string());
497            }
498            MachineTypeAarch64::Mps2an386 => {
499                cmd.push("mps2-an386".to_string());
500            }
501            MachineTypeAarch64::Mps2an500 => {
502                cmd.push("mps2-an500".to_string());
503            }
504            MachineTypeAarch64::Mps2an505 => {
505                cmd.push("mps2-an505".to_string());
506            }
507            MachineTypeAarch64::Mps2an511 => {
508                cmd.push("mps2-an511".to_string());
509            }
510            MachineTypeAarch64::Mps2an521 => {
511                cmd.push("mps2-an521".to_string());
512            }
513            MachineTypeAarch64::Mps3an524 => {
514                cmd.push("mps3-an524".to_string());
515            }
516            MachineTypeAarch64::Mps3an536 => {
517                cmd.push("mps3-an536".to_string());
518            }
519            MachineTypeAarch64::Mps3an547 => {
520                cmd.push("mps3-an547".to_string());
521            }
522            MachineTypeAarch64::Muscaa => {
523                cmd.push("musca-a".to_string());
524            }
525            MachineTypeAarch64::Muscab1 => {
526                cmd.push("musca-b1".to_string());
527            }
528            MachineTypeAarch64::Musicpal => {
529                cmd.push("musicpal".to_string());
530            }
531            MachineTypeAarch64::Netduino2 => {
532                cmd.push("netduino2".to_string());
533            }
534            MachineTypeAarch64::Netduinoplus2 => {
535                cmd.push("netduinoplus2".to_string());
536            }
537            MachineTypeAarch64::None => {
538                cmd.push("none".to_string());
539            }
540            MachineTypeAarch64::Npcm750evb => {
541                cmd.push("npcm750-evb".to_string());
542            }
543            MachineTypeAarch64::Npcm845evb => {
544                cmd.push("npcm845-evb".to_string());
545            }
546            MachineTypeAarch64::Nuri => {
547                cmd.push("nuri".to_string());
548            }
549            MachineTypeAarch64::Olimexstm32h405 => {
550                cmd.push("olimex-stm32-h405".to_string());
551            }
552            MachineTypeAarch64::Orangepipc => {
553                cmd.push("orangepi-pc".to_string());
554            }
555            MachineTypeAarch64::Palmettobmc => {
556                cmd.push("palmetto-bmc".to_string());
557            }
558            MachineTypeAarch64::QcomdcscmV1bmc => {
559                cmd.push("qcom-dc-scm-v1-bmc".to_string());
560            }
561            MachineTypeAarch64::Qcomfireworkbmc => {
562                cmd.push("qcom-firework-bmc".to_string());
563            }
564            MachineTypeAarch64::Quantagbsbmc => {
565                cmd.push("quanta-gbs-bmc".to_string());
566            }
567            MachineTypeAarch64::Quantagsj => {
568                cmd.push("quanta-gsj".to_string());
569            }
570            MachineTypeAarch64::Quantaq71lbmc => {
571                cmd.push("quanta-q71l-bmc".to_string());
572            }
573            MachineTypeAarch64::Rainierbmc => {
574                cmd.push("rainier-bmc".to_string());
575            }
576            MachineTypeAarch64::Raspi0 => {
577                cmd.push("raspi0".to_string());
578            }
579            MachineTypeAarch64::Raspi1ap => {
580                cmd.push("raspi1ap".to_string());
581            }
582            MachineTypeAarch64::Raspi2b => {
583                cmd.push("raspi2b".to_string());
584            }
585            MachineTypeAarch64::Raspi3ap => {
586                cmd.push("raspi3ap".to_string());
587            }
588            MachineTypeAarch64::Raspi3b => {
589                cmd.push("raspi3b".to_string());
590            }
591            MachineTypeAarch64::Raspi4b => {
592                cmd.push("raspi4b".to_string());
593            }
594            MachineTypeAarch64::Realvieweb => {
595                cmd.push("realview-eb".to_string());
596            }
597            MachineTypeAarch64::Realviewebmpcore => {
598                cmd.push("realview-eb-mpcore".to_string());
599            }
600            MachineTypeAarch64::Realviewpba8 => {
601                cmd.push("realview-pb-a8".to_string());
602            }
603            MachineTypeAarch64::Realviewpbxa9 => {
604                cmd.push("realview-pbx-a9".to_string());
605            }
606            MachineTypeAarch64::Romulusbmc => {
607                cmd.push("romulus-bmc".to_string());
608            }
609            MachineTypeAarch64::Sabrelite => {
610                cmd.push("sabrelite".to_string());
611            }
612            MachineTypeAarch64::Sbsaref => {
613                cmd.push("sbsa-ref".to_string());
614            }
615            MachineTypeAarch64::Smdkc210 => {
616                cmd.push("smdkc210".to_string());
617            }
618            MachineTypeAarch64::Sonorapassbmc => {
619                cmd.push("sonorapass-bmc".to_string());
620            }
621            MachineTypeAarch64::Stm32vldiscovery => {
622                cmd.push("stm32vldiscovery".to_string());
623            }
624            MachineTypeAarch64::Supermicrox11spibmc => {
625                cmd.push("supermicro-x11spi-bmc".to_string());
626            }
627            MachineTypeAarch64::Supermicrox11bmc => {
628                cmd.push("supermicrox11-bmc".to_string());
629            }
630            MachineTypeAarch64::Sx1 => {
631                cmd.push("sx1".to_string());
632            }
633            MachineTypeAarch64::Sx1V1 => {
634                cmd.push("sx1-v1".to_string());
635            }
636            MachineTypeAarch64::Tiogapassbmc => {
637                cmd.push("tiogapass-bmc".to_string());
638            }
639            MachineTypeAarch64::Versatileab => {
640                cmd.push("versatileab".to_string());
641            }
642            MachineTypeAarch64::Versatilepb => {
643                cmd.push("versatilepb".to_string());
644            }
645            MachineTypeAarch64::Vexpressa15 => {
646                cmd.push("vexpress-a15".to_string());
647            }
648            MachineTypeAarch64::Vexpressa9 => {
649                cmd.push("vexpress-a9".to_string());
650            }
651            MachineTypeAarch64::Virt => {
652                cmd.push("virt".to_string());
653            }
654            MachineTypeAarch64::Virt10_0 => {
655                cmd.push("virt-10.0".to_string());
656            }
657            MachineTypeAarch64::Virt7_1 => {
658                cmd.push("virt-7.1".to_string());
659            }
660            MachineTypeAarch64::Virt7_2 => {
661                cmd.push("virt-7.2".to_string());
662            }
663            MachineTypeAarch64::Virt8_0 => {
664                cmd.push("virt-8.0".to_string());
665            }
666            MachineTypeAarch64::Virt8_1 => {
667                cmd.push("virt-8.1".to_string());
668            }
669            MachineTypeAarch64::Virt8_2 => {
670                cmd.push("virt-8.2".to_string());
671            }
672            MachineTypeAarch64::Virt9_0 => {
673                cmd.push("virt-9.0".to_string());
674            }
675            MachineTypeAarch64::Virt9_1 => {
676                cmd.push("virt-9.1".to_string());
677            }
678            MachineTypeAarch64::Virt9_2 => {
679                cmd.push("virt-9.2".to_string());
680            }
681            MachineTypeAarch64::Witherspoonbmc => {
682                cmd.push("witherspoon-bmc".to_string());
683            }
684            MachineTypeAarch64::Xilinxzynqa9 => {
685                cmd.push("xilinx-zynq-a9".to_string());
686            }
687            MachineTypeAarch64::XlnxVersalvirt => {
688                cmd.push("xlnx-versal-virt".to_string());
689            }
690            MachineTypeAarch64::Xlnxzcu102 => {
691                cmd.push("xlnx-zcu102".to_string());
692            }
693            MachineTypeAarch64::Yosemitev2bmc => {
694                cmd.push("yosemitev2-bmc".to_string());
695            }
696        }
697        cmd
698    }
699}
700
701impl ToArg for MachineTypeAarch64 {
702    fn to_arg(&self) -> &str {
703        match self {
704            MachineTypeAarch64::Ast1030evb => "ast1030-evb",
705            MachineTypeAarch64::Ast2500evb => "ast2500-evb",
706            MachineTypeAarch64::Ast2600evb => "ast2600-evb",
707            MachineTypeAarch64::Ast2700evb => "ast2700-evb",
708            MachineTypeAarch64::Ast2700a0evb => "ast2700a0-evb",
709            MachineTypeAarch64::Ast2700a1evb => "ast2700a1-evb",
710            MachineTypeAarch64::Bl475eiot01a => "b-l475e-iot01a",
711            MachineTypeAarch64::Bletchleybmc => "bletchley-bmc",
712            MachineTypeAarch64::Bpim2u => "bpim2u",
713            MachineTypeAarch64::Canona1100 => "canon-a1100",
714            MachineTypeAarch64::Collie => "collie",
715            MachineTypeAarch64::Cubieboard => "cubieboard",
716            MachineTypeAarch64::Emcraftsf2 => "emcraft-sf2",
717            MachineTypeAarch64::Fby35bmc => "fby35-bmc",
718            MachineTypeAarch64::Fby35 => "fby35",
719            MachineTypeAarch64::Fp5280g2bmc => "fp5280g2-bmc",
720            MachineTypeAarch64::Fujibmc => "fuji-bmc",
721            MachineTypeAarch64::G220abmc => "g220a-bmc",
722            MachineTypeAarch64::Highbank => "highbank",
723            MachineTypeAarch64::Imx25pdk => "imx25-pdk",
724            MachineTypeAarch64::Imx8mpevk => "imx8mp-evk",
725            MachineTypeAarch64::Integratorcp => "integratorcp",
726            MachineTypeAarch64::Kudobmc => "kudo-bmc",
727            MachineTypeAarch64::Kzm => "kzm",
728            MachineTypeAarch64::Lm3s6965evb => "lm3s6965evb",
729            MachineTypeAarch64::Lm3s811evb => "lm3s811evb",
730            MachineTypeAarch64::Mcimx6ulevk => "mcimx6ul-evk",
731            MachineTypeAarch64::Mcimx7dsabre => "mcimx7d-sabre",
732            MachineTypeAarch64::Microbit => "microbit",
733            MachineTypeAarch64::Midway => "midway",
734            MachineTypeAarch64::Moribmc => "mori-bmc",
735            MachineTypeAarch64::Mps2an385 => "mps2-an385",
736            MachineTypeAarch64::Mps2an386 => "mps2-an386",
737            MachineTypeAarch64::Mps2an500 => "mps2-an500",
738            MachineTypeAarch64::Mps2an505 => "mps2-an505",
739            MachineTypeAarch64::Mps2an511 => "mps2-an511",
740            MachineTypeAarch64::Mps2an521 => "mps2-an521",
741            MachineTypeAarch64::Mps3an524 => "mps3-an524",
742            MachineTypeAarch64::Mps3an536 => "mps3-an536",
743            MachineTypeAarch64::Mps3an547 => "mps3-an547",
744            MachineTypeAarch64::Muscaa => "musca-a",
745            MachineTypeAarch64::Muscab1 => "musca-b1",
746            MachineTypeAarch64::Musicpal => "musicpal",
747            MachineTypeAarch64::Netduino2 => "netduino2",
748            MachineTypeAarch64::Netduinoplus2 => "netduinoplus2",
749            MachineTypeAarch64::None => "none",
750            MachineTypeAarch64::Npcm750evb => "npcm750-evb",
751            MachineTypeAarch64::Npcm845evb => "npcm845-evb",
752            MachineTypeAarch64::Nuri => "nuri",
753            MachineTypeAarch64::Olimexstm32h405 => "olimex-stm32-h405",
754            MachineTypeAarch64::Orangepipc => "orangepi-pc",
755            MachineTypeAarch64::Palmettobmc => "palmetto-bmc",
756            MachineTypeAarch64::QcomdcscmV1bmc => "qcom-dc-scm-v1-bmc",
757            MachineTypeAarch64::Qcomfireworkbmc => "qcom-firework-bmc",
758            MachineTypeAarch64::Quantagbsbmc => "quanta-gbs-bmc",
759            MachineTypeAarch64::Quantagsj => "quanta-gsj",
760            MachineTypeAarch64::Quantaq71lbmc => "quanta-q71l-bmc",
761            MachineTypeAarch64::Rainierbmc => "rainier-bmc",
762            MachineTypeAarch64::Raspi0 => "raspi0",
763            MachineTypeAarch64::Raspi1ap => "raspi1ap",
764            MachineTypeAarch64::Raspi2b => "raspi2b",
765            MachineTypeAarch64::Raspi3ap => "raspi3ap",
766            MachineTypeAarch64::Raspi3b => "raspi3b",
767            MachineTypeAarch64::Raspi4b => "raspi4b",
768            MachineTypeAarch64::Realvieweb => "realview-eb",
769            MachineTypeAarch64::Realviewebmpcore => "realview-eb-mpcore",
770            MachineTypeAarch64::Realviewpba8 => "realview-pb-a8",
771            MachineTypeAarch64::Realviewpbxa9 => "realview-pbx-a9",
772            MachineTypeAarch64::Romulusbmc => "romulus-bmc",
773            MachineTypeAarch64::Sabrelite => "sabrelite",
774            MachineTypeAarch64::Sbsaref => "sbsa-ref",
775            MachineTypeAarch64::Smdkc210 => "smdkc210",
776            MachineTypeAarch64::Sonorapassbmc => "sonorapass-bmc",
777            MachineTypeAarch64::Stm32vldiscovery => "stm32vldiscovery",
778            MachineTypeAarch64::Supermicrox11spibmc => "supermicro-x11spi-bmc",
779            MachineTypeAarch64::Supermicrox11bmc => "supermicrox11-bmc",
780            MachineTypeAarch64::Sx1 => "sx1",
781            MachineTypeAarch64::Sx1V1 => "sx1-v1",
782            MachineTypeAarch64::Tiogapassbmc => "tiogapass-bmc",
783            MachineTypeAarch64::Versatileab => "versatileab",
784            MachineTypeAarch64::Versatilepb => "versatilepb",
785            MachineTypeAarch64::Vexpressa15 => "vexpress-a15",
786            MachineTypeAarch64::Vexpressa9 => "vexpress-a9",
787            MachineTypeAarch64::Virt => "virt",
788            MachineTypeAarch64::Virt10_0 => "virt-10.0",
789            MachineTypeAarch64::Virt7_1 => "virt-7.1",
790            MachineTypeAarch64::Virt7_2 => "virt-7.2",
791            MachineTypeAarch64::Virt8_0 => "virt-8.0",
792            MachineTypeAarch64::Virt8_1 => "virt-8.1",
793            MachineTypeAarch64::Virt8_2 => "virt-8.2",
794            MachineTypeAarch64::Virt9_0 => "virt-9.0",
795            MachineTypeAarch64::Virt9_1 => "virt-9.1",
796            MachineTypeAarch64::Virt9_2 => "virt-9.2",
797            MachineTypeAarch64::Witherspoonbmc => "witherspoon-bmc",
798            MachineTypeAarch64::Xilinxzynqa9 => "xilinx-zynq-a9",
799            MachineTypeAarch64::XlnxVersalvirt => "xlnx-versal-virt",
800            MachineTypeAarch64::Xlnxzcu102 => "xlnx-zcu102",
801            MachineTypeAarch64::Yosemitev2bmc => "yosemitev2-bmc",
802        }
803    }
804}
805
806impl FromStr for MachineTypeAarch64 {
807    type Err = ();
808
809    fn from_str(s: &str) -> Result<Self, Self::Err> {
810        match s {
811            "ast1030-evb" => Ok(MachineTypeAarch64::Ast1030evb),
812            "ast2500-evb" => Ok(MachineTypeAarch64::Ast2500evb),
813            "ast2600-evb" => Ok(MachineTypeAarch64::Ast2600evb),
814            "ast2700-evb" => Ok(MachineTypeAarch64::Ast2700evb),
815            "ast2700a0-evb" => Ok(MachineTypeAarch64::Ast2700a0evb),
816            "ast2700a1-evb" => Ok(MachineTypeAarch64::Ast2700a1evb),
817            "b-l475e-iot01a" => Ok(MachineTypeAarch64::Bl475eiot01a),
818            "bletchley-bmc" => Ok(MachineTypeAarch64::Bletchleybmc),
819            "bpim2u" => Ok(MachineTypeAarch64::Bpim2u),
820            "canon-a1100" => Ok(MachineTypeAarch64::Canona1100),
821            "collie" => Ok(MachineTypeAarch64::Collie),
822            "cubieboard" => Ok(MachineTypeAarch64::Cubieboard),
823            "emcraft-sf2" => Ok(MachineTypeAarch64::Emcraftsf2),
824            "fby35-bmc" => Ok(MachineTypeAarch64::Fby35bmc),
825            "fby35" => Ok(MachineTypeAarch64::Fby35),
826            "fp5280g2-bmc" => Ok(MachineTypeAarch64::Fp5280g2bmc),
827            "fuji-bmc" => Ok(MachineTypeAarch64::Fujibmc),
828            "g220a-bmc" => Ok(MachineTypeAarch64::G220abmc),
829            "highbank" => Ok(MachineTypeAarch64::Highbank),
830            "imx25-pdk" => Ok(MachineTypeAarch64::Imx25pdk),
831            "imx8mp-evk" => Ok(MachineTypeAarch64::Imx8mpevk),
832            "integratorcp" => Ok(MachineTypeAarch64::Integratorcp),
833            "kudo-bmc" => Ok(MachineTypeAarch64::Kudobmc),
834            "kzm" => Ok(MachineTypeAarch64::Kzm),
835            "lm3s6965evb" => Ok(MachineTypeAarch64::Lm3s6965evb),
836            "lm3s811evb" => Ok(MachineTypeAarch64::Lm3s811evb),
837            "mcimx6ul-evk" => Ok(MachineTypeAarch64::Mcimx6ulevk),
838            "mcimx7d-sabre" => Ok(MachineTypeAarch64::Mcimx7dsabre),
839            "microbit" => Ok(MachineTypeAarch64::Microbit),
840            "midway" => Ok(MachineTypeAarch64::Midway),
841            "mori-bmc" => Ok(MachineTypeAarch64::Moribmc),
842            "mps2-an385" => Ok(MachineTypeAarch64::Mps2an385),
843            "mps2-an386" => Ok(MachineTypeAarch64::Mps2an386),
844            "mps2-an500" => Ok(MachineTypeAarch64::Mps2an500),
845            "mps2-an505" => Ok(MachineTypeAarch64::Mps2an505),
846            "mps2-an511" => Ok(MachineTypeAarch64::Mps2an511),
847            "mps2-an521" => Ok(MachineTypeAarch64::Mps2an521),
848            "mps3-an524" => Ok(MachineTypeAarch64::Mps3an524),
849            "mps3-an536" => Ok(MachineTypeAarch64::Mps3an536),
850            "mps3-an547" => Ok(MachineTypeAarch64::Mps3an547),
851            "musca-a" => Ok(MachineTypeAarch64::Muscaa),
852            "musca-b1" => Ok(MachineTypeAarch64::Muscab1),
853            "musicpal" => Ok(MachineTypeAarch64::Musicpal),
854            "netduino2" => Ok(MachineTypeAarch64::Netduino2),
855            "netduinoplus2" => Ok(MachineTypeAarch64::Netduinoplus2),
856            "none" => Ok(MachineTypeAarch64::None),
857            "npcm750-evb" => Ok(MachineTypeAarch64::Npcm750evb),
858            "npcm845-evb" => Ok(MachineTypeAarch64::Npcm845evb),
859            "nuri" => Ok(MachineTypeAarch64::Nuri),
860            "olimex-stm32-h405" => Ok(MachineTypeAarch64::Olimexstm32h405),
861            "orangepi-pc" => Ok(MachineTypeAarch64::Orangepipc),
862            "palmetto-bmc" => Ok(MachineTypeAarch64::Palmettobmc),
863            "qcom-dc-scm-v1-bmc" => Ok(MachineTypeAarch64::QcomdcscmV1bmc),
864            "qcom-firework-bmc" => Ok(MachineTypeAarch64::Qcomfireworkbmc),
865            "quanta-gbs-bmc" => Ok(MachineTypeAarch64::Quantagbsbmc),
866            "quanta-gsj" => Ok(MachineTypeAarch64::Quantagsj),
867            "quanta-q71l-bmc" => Ok(MachineTypeAarch64::Quantaq71lbmc),
868            "rainier-bmc" => Ok(MachineTypeAarch64::Rainierbmc),
869            "raspi0" => Ok(MachineTypeAarch64::Raspi0),
870            "raspi1ap" => Ok(MachineTypeAarch64::Raspi1ap),
871            "raspi2b" => Ok(MachineTypeAarch64::Raspi2b),
872            "raspi3ap" => Ok(MachineTypeAarch64::Raspi3ap),
873            "raspi3b" => Ok(MachineTypeAarch64::Raspi3b),
874            "raspi4b" => Ok(MachineTypeAarch64::Raspi4b),
875            "realview-eb" => Ok(MachineTypeAarch64::Realvieweb),
876            "realview-eb-mpcore" => Ok(MachineTypeAarch64::Realviewebmpcore),
877            "realview-pb-a8" => Ok(MachineTypeAarch64::Realviewpba8),
878            "realview-pbx-a9" => Ok(MachineTypeAarch64::Realviewpbxa9),
879            "romulus-bmc" => Ok(MachineTypeAarch64::Romulusbmc),
880            "sabrelite" => Ok(MachineTypeAarch64::Sabrelite),
881            "sbsa-ref" => Ok(MachineTypeAarch64::Sbsaref),
882            "smdkc210" => Ok(MachineTypeAarch64::Smdkc210),
883            "sonorapass-bmc" => Ok(MachineTypeAarch64::Sonorapassbmc),
884            "stm32vldiscovery" => Ok(MachineTypeAarch64::Stm32vldiscovery),
885            "supermicro-x11spi-bmc" => Ok(MachineTypeAarch64::Supermicrox11spibmc),
886            "supermicrox11-bmc" => Ok(MachineTypeAarch64::Supermicrox11bmc),
887            "sx1" => Ok(MachineTypeAarch64::Sx1),
888            "sx1-v1" => Ok(MachineTypeAarch64::Sx1V1),
889            "tiogapass-bmc" => Ok(MachineTypeAarch64::Tiogapassbmc),
890            "versatileab" => Ok(MachineTypeAarch64::Versatileab),
891            "versatilepb" => Ok(MachineTypeAarch64::Versatilepb),
892            "vexpress-a15" => Ok(MachineTypeAarch64::Vexpressa15),
893            "vexpress-a9" => Ok(MachineTypeAarch64::Vexpressa9),
894            "virt" => Ok(MachineTypeAarch64::Virt),
895            "virt-10.0" => Ok(MachineTypeAarch64::Virt10_0),
896            "virt-7.1" => Ok(MachineTypeAarch64::Virt7_1),
897            "virt-7.2" => Ok(MachineTypeAarch64::Virt7_2),
898            "virt-8.0" => Ok(MachineTypeAarch64::Virt8_0),
899            "virt-8.1" => Ok(MachineTypeAarch64::Virt8_1),
900            "virt-8.2" => Ok(MachineTypeAarch64::Virt8_2),
901            "virt-9.0" => Ok(MachineTypeAarch64::Virt9_0),
902            "virt-9.1" => Ok(MachineTypeAarch64::Virt9_1),
903            "virt-9.2" => Ok(MachineTypeAarch64::Virt9_2),
904            "witherspoon-bmc" => Ok(MachineTypeAarch64::Witherspoonbmc),
905            "xilinx-zynq-a9" => Ok(MachineTypeAarch64::Xilinxzynqa9),
906            "xlnx-versal-virt" => Ok(MachineTypeAarch64::XlnxVersalvirt),
907            "xlnx-zcu102" => Ok(MachineTypeAarch64::Xlnxzcu102),
908            "yosemitev2-bmc" => Ok(MachineTypeAarch64::Yosemitev2bmc),
909            _ => Err(()),
910        }
911    }
912}