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