Print this page
cpuid for ARMv7
@@ -22,11 +22,11 @@
#include <sys/asm_linkage.h>
#if defined(lint) || defined(__lint)
uint32_t
-arm_cpuid_idreg()
+arm_cpuid_midr()
{}
uint32_t
arm_cpuid_pfr0()
{}
@@ -89,20 +89,16 @@
uint32_t
arm_cpuid_mvfr1()
{}
-uint32_t
-arm_cpuid_ctr()
-{}
-
#else /* __lint */
- ENTRY(arm_cpuid_idreg)
+ ENTRY(arm_cpuid_midr)
mrc p15, 0, r0, c0, c0, 0
bx lr
- SET_SIZE(arm_cpuid_idreg)
+ SET_SIZE(arm_cpuid_midr)
ENTRY(arm_cpuid_pfr0)
mrc p15, 0, r0, c0, c1, 0
bx lr
SET_SIZE(arm_cpuid_pfr0)
@@ -179,11 +175,20 @@
ENTRY(arm_cpuid_mvfr1)
vmrs r0, MVFR1
bx lr
SET_SIZE(arm_cpuid_mvfr1)
+#endif /* __lint */
- ENTRY(arm_cpuid_ctr)
- mrc p15, 0, r0, c0, c0, 1
+ ENTRY(arm_cpuid_clidr)
+ mrc p15, 1, r0, c0, c0, 1
bx lr
- SET_SIZE(arm_cpuid_ctr)
-#endif /* __lint */
+ SET_SIZE(arm_cpuid_clidr)
+
+ ENTRY(arm_cpuid_ccsidr)
+ lsl r0, r0, #1
+ cmp r1, #0 /* icache == B_FALSE */
+ orrne r0, r0, #1
+ mcr p15, 2, r0, c0, c0, 0 /* write CSSELR */
+ mrc p15, 1, r0, c0, c0, 0 /* read selected CCSIDR */
+ bx lr
+ SET_SIZE(arm_cpuid_ccsidr)