svn commit: r252425 - head/sys/arm/arm

Aleksandr Rybalko ray at FreeBSD.org
Sun Jun 30 19:52:42 UTC 2013


Author: ray
Date: Sun Jun 30 19:52:41 2013
New Revision: 252425
URL: http://svnweb.freebsd.org/changeset/base/252425

Log:
  Decrypt magic numbers - define names for fields of Generic Timer's CNTKCTL reg.
  
  Submitted by:	Ruslan Bukin <br at bsdpad.com>

Modified:
  head/sys/arm/arm/generic_timer.c

Modified: head/sys/arm/arm/generic_timer.c
==============================================================================
--- head/sys/arm/arm/generic_timer.c	Sun Jun 30 19:36:17 2013	(r252424)
+++ head/sys/arm/arm/generic_timer.c	Sun Jun 30 19:52:41 2013	(r252425)
@@ -66,7 +66,22 @@ __FBSDID("$FreeBSD$");
 #define	GENERIC_TIMER_REG_CTRL		0
 #define	GENERIC_TIMER_REG_TVAL		1
 
-#define	CNTPSIRQ	29
+#define	GENERIC_TIMER_CNTKCTL_PL0PTEN	(1 << 9) /* Physical timer registers
+						    access from PL0 */
+#define	GENERIC_TIMER_CNTKCTL_PL0VTEN	(1 << 8) /* Virtual timer registers
+						    access from PL0 */
+#define	GENERIC_TIMER_CNTKCTL_EVNTI	(1 << 4) /* Virtual counter
+						    event bits */
+#define	GENERIC_TIMER_CNTKCTL_EVNTDIR	(1 << 3) /* Virtual counter
+						    event transition */
+#define	GENERIC_TIMER_CNTKCTL_EVNTEN	(1 << 2) /* Enables events from
+						    the virtual counter */
+#define	GENERIC_TIMER_CNTKCTL_PL0VCTEN	(1 << 1) /* CNTVCT and CNTFRQ
+						    access from PL0 */
+#define	GENERIC_TIMER_CNTKCTL_PL0PCTEN	(1 << 0) /* CNTPCT and CNTFRQ
+						    access from PL0 */
+
+#define	GENERIC_TIMER_CNTPSIRQ	29
 
 struct arm_tmr_softc {
 	struct resource		*irq_res;
@@ -167,7 +182,11 @@ disable_user_access(void)
 	uint32_t cntkctl;
 
 	__asm volatile("mrc p15, 0, %0, c14, c1, 0" : "=r" (cntkctl));
-	cntkctl &= ~((3 << 8) | (7 << 0));
+	cntkctl &= ~(GENERIC_TIMER_CNTKCTL_PL0PTEN |
+		GENERIC_TIMER_CNTKCTL_PL0VTEN |
+		GENERIC_TIMER_CNTKCTL_EVNTEN |
+		GENERIC_TIMER_CNTKCTL_PL0VCTEN |
+		GENERIC_TIMER_CNTKCTL_PL0PCTEN);
 	__asm volatile("mcr p15, 0, %0, c14, c1, 0" : : "r" (cntkctl));
 	isb();
 }
@@ -270,7 +289,8 @@ arm_tmr_attach(device_t dev)
 
 	rid = 0;
 	sc->irq_res = bus_alloc_resource(dev, SYS_RES_IRQ, &rid,
-	    CNTPSIRQ, CNTPSIRQ, 1, RF_SHAREABLE | RF_ACTIVE);
+	    GENERIC_TIMER_CNTPSIRQ, GENERIC_TIMER_CNTPSIRQ,
+	    1, RF_SHAREABLE | RF_ACTIVE);
 
 	arm_tmr_sc = sc;
 


More information about the svn-src-head mailing list