tlk: 6/19 update
[3rdparty/ote_partner/tlk.git] / arch / arm / arm / arch.c
index 7075b52..6a2d682 100644 (file)
@@ -71,6 +71,23 @@ void arch_early_init(void)
        en = (1<<31);
        __asm__ volatile("mcr   p15, 0, %0, c9, c12, 1" :: "r" (en));
 #endif
+
+#if ARM_CPU_CORTEX_A15
+       /* enable the cycle count register */
+       uint32_t reg;
+
+       /* read PMCR.N field to create event counter mask */
+       __asm__ volatile("mrc   p15, 0, %0, c9, c12, 0" : "=r" (reg));
+       reg = (1 << ((reg >> 11) & 0x1F)) - 1;
+
+       /* write PMINTENCLR to disable intrs on counter overflow */
+       reg |= 0x80000000;
+       __asm__ volatile("mcr   p15, 0, %0, c9, c14, 2" :: "r" (reg));
+
+       /* write PMUSERENR to enable performance monitor access */
+       reg = 0x1;
+       __asm__ volatile("mcr   p15, 0, %0, c9, c14, 0" :: "r" (reg));
+#endif
 }
 
 void arch_init(void)