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-all
mailing list