svn commit: r266083 - in head/sys/arm: arm include

Michael Tuexen tuexen at freebsd.org
Tue Jun 17 09:52:48 UTC 2014


On 16 Jun 2014, at 22:13, Mark R V Murray <markm at FreeBSD.org> wrote:
Hi Mark,

I just adopted the comments to the code change. So here is the improved patch:

Index: cpufunc.c
===================================================================
--- cpufunc.c	(revision 267575)
+++ cpufunc.c	(working copy)
@@ -1404,18 +1404,36 @@
 static __inline void
 cpu_scc_setup_ccnt(void)
 {
-/* This is how you give userland access to the CCNT and PMCn
- * registers.
- * BEWARE! This gives write access also, which may not be what
- * you want!
- */
+#if defined(CPU_ARM1136) || defined(CPU_ARM1176)
 #ifdef _PMC_USER_READ_WRITE_
-	/* Set PMUSERENR[0] to allow userland access */
+	/* This is how you give userland access to the CCNT and PMCn
+	 * registers.
+	 * BEWARE! This gives write access also, which may not be what
+	 * you want!
+	 * Use the Secure User and Non-secure Access Validation Control Register
+	 * to allow userland access 
+	 */
+	__asm volatile ("mcr	p15, 0, %0, c15, c9, 0\n\t"
+			:
+			: "r"(0x00000001));
+#endif
+	/* Set PMCR[2,0] to enable counters and reset CCNT */
+	__asm volatile ("mcr	p15, 0, %0, c15, c12, 0\n\t"
+			:
+			: "r"(0x00000005));
+#else
+#ifdef _PMC_USER_READ_WRITE_
+	/* This is how you give userland access to the CCNT and PMCn
+	 * registers.
+	 * BEWARE! This gives write access also, which may not be what
+	 * you want!
+	 * Set PMUSERENR[0] to allow userland access
+	 */
 	__asm volatile ("mcr	p15, 0, %0, c9, c14, 0\n\t"
 			:
 			: "r"(0x00000001));
 #endif
-        /* Set up the PMCCNTR register as a cyclecounter:
+	/* Set up the PMCCNTR register as a cyclecounter:
 	 * Set PMINTENCLR to 0xFFFFFFFF to block interrupts
 	 * Set PMCR[2,0] to enable counters and reset CCNT
 	 * Set PMCNTENSET to 0x80000000 to enable CCNT */
@@ -1426,6 +1444,7 @@
 			: "r"(0xFFFFFFFF),
 			  "r"(0x00000005),
 			  "r"(0x80000000));
+#endif
 }
 #endif

Let me know if I can help.

Best regards
Michael
> 
> On 16 Jun 2014, at 20:38, Michael Tuexen <tuexen at freebsd.org> wrote:
>> Hmm, the documentation reads
> 
> Which docs are you using?
> 
> I’m using DDI0360F. (And that could easily be a wrong choice).
> 
> M
> -- 
> Mark R V Murray
> 
> 



More information about the svn-src-head mailing list