aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Cunningham <cc@localhost>2022-03-24 18:59:26 -0700
committerChristian Cunningham <cc@localhost>2022-03-24 18:59:45 -0700
commit180dfed61505cfe944755f7078d7b29063ea7734 (patch)
treec676af11f12f94121c763e55e2b10fc8017ec669
parent7753da66d7d72f441dadd76f357fd5ceb50e7c8f (diff)
Allow access to CNTPCT from user mode
-rw-r--r--kernel/sys/kernel.S5
-rw-r--r--usr/main.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/kernel/sys/kernel.S b/kernel/sys/kernel.S
index 71b22a1..df55cc1 100644
--- a/kernel/sys/kernel.S
+++ b/kernel/sys/kernel.S
@@ -19,6 +19,11 @@ kernel_main:
mov r0, #0x80000000
mcr p15, 0, r0, c9, c12, 1
+ // Allow access to CNTKCTL from PL0
+ mrc p15, 0, r0, c14, c1, 0
+ orr r0, #1
+ mcr p15, 0, r0, c14, c1, 0
+
// Intentional undefined instruction
// .word 0xf7f0a000
cpsie ai, #0x10
diff --git a/usr/main.c b/usr/main.c
index 56ddbcb..6eecc7c 100644
--- a/usr/main.c
+++ b/usr/main.c
@@ -41,4 +41,8 @@ void main(void)
subscribe_irq(SYS_TIMER_2_IRQ, loopt, &stime_2);
subscribe_irq(SYS_TIMER_3_IRQ, loopt, &stime_3);
add_thread(loop, 0, 0);
+ unsigned long long counter;
+ asm volatile ("mrrc p15, 0, %0, c14" : "=r"(counter));
+ draw_hex32(0, 20, counter>>32);
+ draw_hex32(9, 20, counter);
}