xref: /openbmc/qemu/include/hw/boards.h (revision fb0e843a11abae5b959a4b02be7aef617c023b4e)
1 /* Declarations for use by board files for creating devices.  */
2 
3 #ifndef HW_BOARDS_H
4 #define HW_BOARDS_H
5 
6 #include "sysemu/blockdev.h"
7 #include "hw/qdev.h"
8 
9 typedef struct QEMUMachineInitArgs {
10     const QEMUMachine *machine;
11     ram_addr_t ram_size;
12     const char *boot_order;
13     const char *kernel_filename;
14     const char *kernel_cmdline;
15     const char *initrd_filename;
16     const char *cpu_model;
17 } QEMUMachineInitArgs;
18 
19 typedef void QEMUMachineInitFunc(QEMUMachineInitArgs *args);
20 
21 typedef void QEMUMachineResetFunc(void);
22 
23 typedef void QEMUMachineHotAddCPUFunc(const int64_t id, Error **errp);
24 
25 typedef int QEMUMachineGetKvmtypeFunc(const char *arg);
26 
27 struct QEMUMachine {
28     const char *name;
29     const char *alias;
30     const char *desc;
31     QEMUMachineInitFunc *init;
32     QEMUMachineResetFunc *reset;
33     QEMUMachineHotAddCPUFunc *hot_add_cpu;
34     QEMUMachineGetKvmtypeFunc *kvm_type;
35     BlockInterfaceType block_default_type;
36     int max_cpus;
37     unsigned int no_serial:1,
38         no_parallel:1,
39         use_virtcon:1,
40         use_sclp:1,
41         no_floppy:1,
42         no_cdrom:1,
43         no_sdcard:1;
44     int is_default;
45     const char *default_machine_opts;
46     const char *default_boot_order;
47     GlobalProperty *compat_props;
48     struct QEMUMachine *next;
49     const char *hw_version;
50 };
51 
52 int qemu_register_machine(QEMUMachine *m);
53 QEMUMachine *find_default_machine(void);
54 
55 extern QEMUMachine *current_machine;
56 
57 #endif
58