>>>>> "Jorge" == Jorge Ventura <[email protected]> writes:

Jorge> I am trying to create a test for
Jorge> beaglebone using the seL4test suite but I am having the
Jorge> following error:

Jorge> seL4Test/libs/libplatsupport/src/plat/am335x/dm.c:56:25: error:
Jorge> ‘timer’ undeclared (first use in this function) dm_t *dm =
Jorge> (dm_t *) timer->data;

I don't think libplatsupport is finished for the Beaglebone.

Even if you fix this error (not too difficult) you'll run into other
issues =-- for instance the clock driver hasn't been finished.

Here's a patch that'll get the timer compiling -- it's untested.

diff --git a/src/plat/am335x/dm.c b/src/plat/am335x/dm.c
index f49779a..b0adbaa 100644
--- a/src/plat/am335x/dm.c
+++ b/src/plat/am335x/dm.c
@@ -8,6 +8,7 @@
  * @TAG(NICTA_BSD)
  */
 
+#include <utils/arith.h> /* BIT() */
 #include <platsupport/timer.h>
 #include <platsupport/plat/timer.h>
 #include <stdio.h>
@@ -53,30 +54,35 @@ typedef volatile struct dm {
 static int 
 dm_stop_timer(const pstimer_t *device)
 {
-    dm_t *dm = (dm_t *) timer->data;
+    dm_t *dm = (dm_t *) device->data;
     /* Disable timer. */
     dm->tier = 0;
     dm->tclr = 0;
     dm->tisr = TISR_OVF_FLAG;
+    return 0;
 }
 
 static int
 dm_start_timer(const pstimer_t *device)
 {
     /* Do nothing */
+    return 0;
 }
 
 
 static int
-dm_periodic(uint64_t ns)
+dm_periodic(const pstimer_t *timer, uint64_t ns)
 {
+    dm_t *dm = (dm_t *)timer->data;
+
     /* Stop time. */
     dm->tclr = 0;
 
     /* Reset timer. */
     dm->cfg = TIOCP_CFG_SOFTRESET;
 
-    while (dm->cfg & TIOCP_CFG_SOFTRESET);
+    while (dm->cfg & TIOCP_CFG_SOFTRESET)
+        ;
 
     /* Enable interrupt on overflow. */
     dm->tier = TIER_OVERFLOWENABLE;
@@ -92,17 +98,19 @@ dm_periodic(uint64_t ns)
 
     /* Set autoreload and start the timer. */
     dm->tclr = TCLR_AUTORELOAD | TCLR_STARTTIMER;
+
+    return 0;
 }
 
 static int 
-dm_oneshot_absolute(uint64_t ns)
+dm_oneshot_absolute(const pstimer_t *timer, uint64_t ns)
 {
     assert(!"Not implemented");
     return ENOSYS;
 }
 
 static int 
-dm_oneshot_relative(uint64_t ns)
+dm_oneshot_relative(const pstimer_t *timer, uint64_t ns)
 {
     assert(!"Not implemented");
     return ENOSYS;
@@ -115,13 +123,13 @@ dm_get_time(const pstimer_t *timer) {
 }
 
 static void
-dm_handle_irq(const pstimer_t *timer) {
+dm_handle_irq(const pstimer_t *timer, uint32_t irq) {
     /* nothing */
 }
 
 static uint32_t 
 dm_get_nth_irq(const pstimer_t *timer, uint32_t n) {
-    return DMTIMER2_INTTERRUPT;
+    return DMTIMER2_INTERRUPT;
 }
 
 static pstimer_t singleton_timer;
@@ -131,15 +139,15 @@ dm_get_timer(void *vaddr)
 {
     pstimer_t *timer = &singleton_timer;
 
-    timer->properties.upcounter = false;
+    timer->properties.upcounter = 0;
     timer->properties.timeouts = 1;
-    timer->properties.bitwidth = 32;
+    timer->properties.bit_width = 32;
     timer->properties.irqs = 1;
 
     /* data just points to the dm itself for now */
     timer->data = vaddr;
-    timer->start = dm_timer_start;
-    timer->stop = dm_timer_stop;
+    timer->start = dm_start_timer;
+    timer->stop = dm_stop_timer;
     timer->get_time = dm_get_time;
     timer->oneshot_absolute = dm_oneshot_absolute;
     timer->oneshot_relative = dm_oneshot_relative;

_______________________________________________
Devel mailing list
[email protected]
https://sel4.systems/lists/listinfo/devel

Reply via email to