blob: f258c5924867f9100a693a5e19ff05536619b1ed [file]
#include <mach/mach.h>
#include <stdint.h>
// Define the SVE/SME/SME2 thread status structures
// flavors, and sizes so this can build against an
// older SDK which does not have these definitions
// yet.
#if !defined(ARM_SME_STATE)
#define _STRUCT_ARM_SME_STATE struct arm_sme_state
_STRUCT_ARM_SME_STATE {
uint64_t svcr;
uint64_t tpidr2_el0;
uint16_t svl_b;
};
#define _STRUCT_ARM_SVE_Z_STATE struct arm_sve_z_state
_STRUCT_ARM_SVE_Z_STATE { char z[16][256]; }
__attribute__((aligned(alignof(unsigned int))));
#define _STRUCT_ARM_SVE_P_STATE struct arm_sve_p_state
_STRUCT_ARM_SVE_P_STATE { char p[16][256 / 8]; }
__attribute__((aligned(alignof(unsigned int))));
#define _STRUCT_ARM_SME_ZA_STATE struct arm_sme_za_state
_STRUCT_ARM_SME_ZA_STATE { char za[4096]; }
__attribute__((aligned(alignof(unsigned int))));
#define _STRUCT_ARM_SME2_STATE struct arm_sme2_state
_STRUCT_ARM_SME2_STATE { char zt0[64]; }
__attribute__((aligned(alignof(unsigned int))));
#define ARM_SME_STATE 28
#define ARM_SVE_Z_STATE1 29
#define ARM_SVE_Z_STATE2 30
#define ARM_SVE_P_STATE 31
#define ARM_SME_ZA_STATE1 32
#define ARM_SME_ZA_STATE2 33
#define ARM_SME_ZA_STATE3 34
#define ARM_SME_ZA_STATE4 35
#define ARM_SME_ZA_STATE5 36
#define ARM_SME_ZA_STATE6 37
#define ARM_SME_ZA_STATE7 38
#define ARM_SME_ZA_STATE8 39
#define ARM_SME_ZA_STATE9 40
#define ARM_SME_ZA_STATE10 41
#define ARM_SME_ZA_STATE11 42
#define ARM_SME_ZA_STATE12 43
#define ARM_SME_ZA_STATE13 44
#define ARM_SME_ZA_STATE14 45
#define ARM_SME_ZA_STATE15 46
#define ARM_SME_ZA_STATE16 47
#define ARM_SME2_STATE 48
typedef _STRUCT_ARM_SME_STATE arm_sme_state_t;
typedef _STRUCT_ARM_SVE_Z_STATE arm_sve_z_state_t;
typedef _STRUCT_ARM_SVE_P_STATE arm_sve_p_state_t;
typedef _STRUCT_ARM_SME_ZA_STATE arm_sme_za_state_t;
typedef _STRUCT_ARM_SME2_STATE arm_sme2_state_t;
#define ARM_SME_STATE_COUNT \
((mach_msg_type_number_t)(sizeof(arm_sme_state_t) / sizeof(uint32_t)))
#define ARM_SVE_Z_STATE_COUNT \
((mach_msg_type_number_t)(sizeof(arm_sve_z_state_t) / sizeof(uint32_t)))
#define ARM_SVE_P_STATE_COUNT \
((mach_msg_type_number_t)(sizeof(arm_sve_p_state_t) / sizeof(uint32_t)))
#define ARM_SME_ZA_STATE_COUNT \
((mach_msg_type_number_t)(sizeof(arm_sme_za_state_t) / sizeof(uint32_t)))
#define ARM_SME2_STATE_COUNT \
((mach_msg_type_number_t)(sizeof(arm_sme2_state_t) / sizeof(uint32_t)))
#endif // !defined(ARM_SME_STATE)