Decrypt magic numbers - define names for fields of Generic Timer's CNTKCTL reg.

Submitted by:	Ruslan Bukin <br@bsdpad.com>
This commit is contained in:
Aleksandr Rybalko 2013-06-30 19:52:41 +00:00
parent 247602e3ea
commit 8f1bc52dfb

View File

@ -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;