Print this page
cpuid for ARMv7
*** 28,40 ****
extern "C" {
#endif
typedef struct arm_cpuid_cache {
boolean_t acc_exists;
! boolean_t acc_rcolor;
! uint8_t acc_assoc;
uint8_t acc_linesz;
uint32_t acc_size;
} arm_cpuid_cache_t;
typedef struct arm_cpuid {
uint32_t ac_ident;
--- 28,47 ----
extern "C" {
#endif
typedef struct arm_cpuid_cache {
boolean_t acc_exists;
! boolean_t acc_unified;
! boolean_t acc_wt;
! boolean_t acc_wb;
! boolean_t acc_ra;
! boolean_t acc_wa;
! uint16_t acc_sets;
uint8_t acc_linesz;
+ uint16_t acc_assoc;
+
+ boolean_t acc_rcolor;
uint32_t acc_size;
} arm_cpuid_cache_t;
typedef struct arm_cpuid {
uint32_t ac_ident;
*** 42,57 ****
uint32_t ac_dfr;
uint32_t ac_mmfr[4];
uint32_t ac_isar[6];
uint32_t ac_fpident;
uint32_t ac_mvfr[2];
! boolean_t ac_unifiedl1;
! arm_cpuid_cache_t ac_icache;
! arm_cpuid_cache_t ac_dcache;
} arm_cpuid_t;
! extern uint32_t arm_cpuid_idreg();
extern uint32_t arm_cpuid_pfr0();
extern uint32_t arm_cpuid_pfr1();
extern uint32_t arm_cpuid_dfr0();
extern uint32_t arm_cpuid_mmfr0();
extern uint32_t arm_cpuid_mmfr1();
--- 49,72 ----
uint32_t ac_dfr;
uint32_t ac_mmfr[4];
uint32_t ac_isar[6];
uint32_t ac_fpident;
uint32_t ac_mvfr[2];
! uint32_t ac_clidr;
!
! /*
! * ARM supports 7 levels of caches. Each level can have separate
! * I/D caches or a unified cache. We keep track of all these as a
! * two dimensional array. First, we select if we're dealing with a
! * I cache (B_TRUE) or a D/unified cache (B_FALSE), and then we
! * index on the level. Note that L1 caches are at index 0.
! */
! uint32_t ac_ccsidr[2][7];
! arm_cpuid_cache_t ac_caches[2][7];
} arm_cpuid_t;
! extern uint32_t arm_cpuid_midr();
extern uint32_t arm_cpuid_pfr0();
extern uint32_t arm_cpuid_pfr1();
extern uint32_t arm_cpuid_dfr0();
extern uint32_t arm_cpuid_mmfr0();
extern uint32_t arm_cpuid_mmfr1();
*** 66,76 ****
extern uint32_t arm_cpuid_vfpidreg();
extern uint32_t arm_cpuid_mvfr0();
extern uint32_t arm_cpuid_mvfr1();
! extern uint32_t arm_cpuid_ctr();
#ifdef __cplusplus
}
#endif
--- 81,92 ----
extern uint32_t arm_cpuid_vfpidreg();
extern uint32_t arm_cpuid_mvfr0();
extern uint32_t arm_cpuid_mvfr1();
! extern uint32_t arm_cpuid_clidr();
! extern uint32_t arm_cpuid_ccsidr(uint32_t level, boolean_t icache);
#ifdef __cplusplus
}
#endif