1*fdd8201dSApple OSS Distributions /*! 2*fdd8201dSApple OSS Distributions * @header 3*fdd8201dSApple OSS Distributions * Image4 object specifications. 4*fdd8201dSApple OSS Distributions */ 5*fdd8201dSApple OSS Distributions #ifndef __IMG4_OBJECT_H 6*fdd8201dSApple OSS Distributions #define __IMG4_OBJECT_H 7*fdd8201dSApple OSS Distributions 8*fdd8201dSApple OSS Distributions #ifndef __IMG4_INDIRECT 9*fdd8201dSApple OSS Distributions #error "Please #include <img4/firmware.h> instead of this file directly" 10*fdd8201dSApple OSS Distributions #endif // __IMG4_INDIRECT 11*fdd8201dSApple OSS Distributions 12*fdd8201dSApple OSS Distributions OS_ASSUME_NONNULL_BEGIN 13*fdd8201dSApple OSS Distributions 14*fdd8201dSApple OSS Distributions /*! 15*fdd8201dSApple OSS Distributions * @typedef img4_object_spec_t 16*fdd8201dSApple OSS Distributions * An opaque type which describes information about Image4 objects for use by 17*fdd8201dSApple OSS Distributions * the runtime. 18*fdd8201dSApple OSS Distributions */ 19*fdd8201dSApple OSS Distributions IMG4_API_AVAILABLE_20200508 20*fdd8201dSApple OSS Distributions typedef struct _img4_object_spec img4_object_spec_t; 21*fdd8201dSApple OSS Distributions 22*fdd8201dSApple OSS Distributions /*! 23*fdd8201dSApple OSS Distributions * @const IMG4_FIRMWARE_SPEC 24*fdd8201dSApple OSS Distributions * The object specification for an {@link img4_firmware_t} object. 25*fdd8201dSApple OSS Distributions */ 26*fdd8201dSApple OSS Distributions #if !XNU_KERNEL_PRIVATE 27*fdd8201dSApple OSS Distributions IMG4_API_AVAILABLE_20200508 28*fdd8201dSApple OSS Distributions OS_EXPORT 29*fdd8201dSApple OSS Distributions const img4_object_spec_t _img4_firmware_spec; 30*fdd8201dSApple OSS Distributions #define IMG4_FIRMWARE_SPEC (&_img4_firmware_spec) 31*fdd8201dSApple OSS Distributions #else 32*fdd8201dSApple OSS Distributions #define IMG4_FIRMWARE_SPEC (img4if->i4if_v7.firmware_spec) 33*fdd8201dSApple OSS Distributions #endif 34*fdd8201dSApple OSS Distributions 35*fdd8201dSApple OSS Distributions /*! 36*fdd8201dSApple OSS Distributions * @const IMG4_FIRMWARE_SIZE_RECOMMENDED 37*fdd8201dSApple OSS Distributions * A constant describing the recommended stack allocation required for a 38*fdd8201dSApple OSS Distributions * {@link img4_firmware_t} object. 39*fdd8201dSApple OSS Distributions */ 40*fdd8201dSApple OSS Distributions #define IMG4_FIRMWARE_SIZE_RECOMMENDED (1280u) 41*fdd8201dSApple OSS Distributions 42*fdd8201dSApple OSS Distributions /*! 43*fdd8201dSApple OSS Distributions * @const IMG4_CHIP_SPEC 44*fdd8201dSApple OSS Distributions * The object specification for an {@link img4_chip_t} object. 45*fdd8201dSApple OSS Distributions */ 46*fdd8201dSApple OSS Distributions #if !XNU_KERNEL_PRIVATE 47*fdd8201dSApple OSS Distributions IMG4_API_AVAILABLE_20200508 48*fdd8201dSApple OSS Distributions OS_EXPORT 49*fdd8201dSApple OSS Distributions const img4_object_spec_t _img4_chip_spec; 50*fdd8201dSApple OSS Distributions #define IMG4_CHIP_SPEC (&_img4_chip_spec) 51*fdd8201dSApple OSS Distributions #else 52*fdd8201dSApple OSS Distributions #define IMG4_CHIP_SPEC (img4if->i4if_v7.chip_spec) 53*fdd8201dSApple OSS Distributions #endif 54*fdd8201dSApple OSS Distributions 55*fdd8201dSApple OSS Distributions /*! 56*fdd8201dSApple OSS Distributions * @const IMG4_CHIP_SIZE_RECOMMENDED 57*fdd8201dSApple OSS Distributions * A constant describing the recommended stack allocation required for a 58*fdd8201dSApple OSS Distributions * {@link img4_chip_t} object. 59*fdd8201dSApple OSS Distributions */ 60*fdd8201dSApple OSS Distributions #define IMG4_CHIP_SIZE_RECOMMENDED (256u) 61*fdd8201dSApple OSS Distributions 62*fdd8201dSApple OSS Distributions /*! 63*fdd8201dSApple OSS Distributions * @const IMG4_PMAP_DATA_SPEC 64*fdd8201dSApple OSS Distributions * The object specification for an {@link img4_pmap_data_t} object. 65*fdd8201dSApple OSS Distributions */ 66*fdd8201dSApple OSS Distributions #if !XNU_KERNEL_PRIVATE 67*fdd8201dSApple OSS Distributions IMG4_API_AVAILABLE_20210521 68*fdd8201dSApple OSS Distributions OS_EXPORT 69*fdd8201dSApple OSS Distributions const img4_object_spec_t _img4_pmap_data_spec; 70*fdd8201dSApple OSS Distributions #define IMG4_PMAP_DATA_SPEC (&_img4_pmap_data_spec) 71*fdd8201dSApple OSS Distributions #else 72*fdd8201dSApple OSS Distributions #define IMG4_PMAP_DATA_SPEC (img4if->i4if_v13.pmap_data_spec) 73*fdd8201dSApple OSS Distributions #endif 74*fdd8201dSApple OSS Distributions 75*fdd8201dSApple OSS Distributions /*! 76*fdd8201dSApple OSS Distributions * @const IMG4_CHIP_SIZE_RECOMMENDED 77*fdd8201dSApple OSS Distributions * A constant describing the recommended stack allocation required for a 78*fdd8201dSApple OSS Distributions * {@link img4_pmap_data_t} object. 79*fdd8201dSApple OSS Distributions */ 80*fdd8201dSApple OSS Distributions #define IMG4_PMAP_DATA_SIZE_RECOMMENDED (2048u) 81*fdd8201dSApple OSS Distributions 82*fdd8201dSApple OSS Distributions OS_ASSUME_NONNULL_END 83*fdd8201dSApple OSS Distributions 84*fdd8201dSApple OSS Distributions #endif // __IMG4_OBJECT_H 85