1 /* 2 * hw/arm/linux-boot-if.h : interface for devices which need to behave 3 * specially for direct boot of an ARM Linux kernel 4 */ 5 6 #ifndef HW_ARM_LINUX_BOOT_IF_H 7 #define HW_ARM_LINUX_BOOT_IF_H 8 9 #include "qom/object.h" 10 11 #define TYPE_ARM_LINUX_BOOT_IF "arm-linux-boot-if" 12 typedef struct ARMLinuxBootIfClass ARMLinuxBootIfClass; 13 DECLARE_CLASS_CHECKERS(ARMLinuxBootIfClass, ARM_LINUX_BOOT_IF, 14 TYPE_ARM_LINUX_BOOT_IF) 15 #define ARM_LINUX_BOOT_IF(obj) \ 16 INTERFACE_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF) 17 18 typedef struct ARMLinuxBootIf ARMLinuxBootIf; 19 20 struct ARMLinuxBootIfClass { 21 /*< private >*/ 22 InterfaceClass parent_class; 23 24 /*< public >*/ 25 /** arm_linux_init: configure the device for a direct boot 26 * of an ARM Linux kernel (so that device reset puts it into 27 * the state the kernel expects after firmware initialization, 28 * rather than the true hardware reset state). This callback is 29 * called once after machine construction is complete (before the 30 * first system reset). 31 * 32 * @obj: the object implementing this interface 33 * @secure_boot: true if we are booting Secure, false for NonSecure 34 * (or for a CPU which doesn't support TrustZone) 35 */ 36 void (*arm_linux_init)(ARMLinuxBootIf *obj, bool secure_boot); 37 }; 38 39 #endif 40