aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/cpu/irq.c4
-rw-r--r--src/sys/core.c1
-rw-r--r--src/util/status.c9
-rw-r--r--src/util/time.c14
4 files changed, 28 insertions, 0 deletions
diff --git a/src/cpu/irq.c b/src/cpu/irq.c
index f1d8fb6..fb73b8a 100644
--- a/src/cpu/irq.c
+++ b/src/cpu/irq.c
@@ -102,6 +102,8 @@ void c_irq_handler(void)
} else if (source & (1 << 3)) {
c_timer();
return;
+ } else {
+ uart_string("Unknown Interrupt Detected!");
}
return;
}
@@ -196,6 +198,8 @@ void c_fiq_handler(void)
} else if (source & (1 << 3)) {
c_timer();
return;
+ } else {
+ uart_string("Unknown Interrupt Detected!");
}
return;
}
diff --git a/src/sys/core.c b/src/sys/core.c
index 0b4b91a..d658d90 100644
--- a/src/sys/core.c
+++ b/src/sys/core.c
@@ -33,6 +33,7 @@ void sysinit(void)
cmdidx = 0;
for(int i = 0; i < 2048; i++)
cmd[i] = 0;
+ *(unsigned long*) SYS_TIMER_C0 = 60000000; // 60 second trigger
///...
// Route GPU interrupts to Core 0
diff --git a/src/util/status.c b/src/util/status.c
index dd2b899..7abf931 100644
--- a/src/util/status.c
+++ b/src/util/status.c
@@ -162,6 +162,15 @@ void status(void)
"and %0, %0, #3" : "=r"(coren) :: "cc");
write_string(&g_Drawer, "Status Updated by Core #");
write_10(&g_Drawer, coren);
+ write_string(&g_Drawer, "\nSys Timer Status: ");
+ coren = *(unsigned long*)SYS_TIMER_CS;
+ write_10(&g_Drawer, coren);
+ write_string(&g_Drawer, " : ");
+ unsigned long long tval = get_time();
+ write_hex32(&g_Drawer, (tval >> 32));
+ write_hex32(&g_Drawer, tval);
+ write_char(&g_Drawer, '\n');
+ write_10(&g_Drawer, ((unsigned long)tval)/1000000);
g_Drawer.x = x;
g_Drawer.y = y;
diff --git a/src/util/time.c b/src/util/time.c
index a0c539b..e9e5716 100644
--- a/src/util/time.c
+++ b/src/util/time.c
@@ -51,3 +51,17 @@ unsigned long read_cntfrq(void)
asm volatile ("mrc p15, 0, %0, c14, c0, 0" : "=r"(val) );
return val;
}
+
+unsigned long long get_time(void)
+{
+ union {
+ unsigned long long tval;
+ struct {
+ unsigned long high;
+ unsigned long low;
+ } tvalb;
+ } t;
+ t.tvalb.low = *(unsigned long*)SYS_TIMER_CLO;
+ t.tvalb.high = *(unsigned long*)SYS_TIMER_CHI;
+ return t.tval;
+}