]> xenbits.xensource.com Git - xen.git/commitdiff
arm: implement udelay()
authorTim Deegan <tim@xen.org>
Tue, 13 Mar 2012 15:10:52 +0000 (15:10 +0000)
committerTim Deegan <tim@xen.org>
Tue, 13 Mar 2012 15:10:52 +0000 (15:10 +0000)
Signed-off-by: Tim Deegan <tim@xen.org>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
xen/arch/arm/dummy.S
xen/arch/arm/time.c
xen/include/asm-arm/delay.h

index 3f2cc4b1ca86d8511840e8b7ccfc906c030df036..f096cb55dc31eea5339aeccd7cbf84dbbbc85726 100644 (file)
@@ -62,5 +62,4 @@ DUMMY(gmfn_to_mfn);
 DUMMY(hypercall_create_continuation);
 DUMMY(send_timer_event);
 DUMMY(share_xen_page_with_privileged_guests);
-DUMMY(__udelay);
 DUMMY(wallclock_time);
index 13c1254cd4af90ab3aad086d80ee6b146248f340..437dc712344fe0a8c2aad7faa8987118c87be27f 100644 (file)
@@ -171,6 +171,16 @@ void __cpuinit init_timer_interrupt(void)
     request_irq(30, timer_interrupt, 0, "phytimer", NULL);
 }
 
+/* Wait a set number of microseconds */
+void udelay(unsigned long usecs)
+{
+    s_time_t deadline = get_s_time() + 1000 * (s_time_t) usecs;
+    while ( get_s_time() - deadline < 0 )
+        ;
+    dsb();
+    isb();
+}
+
 /*
  * Local variables:
  * mode: C
index 625077472e7d1503ea976824277ee211499cac1c..94a712905d9c3bbc3cc1a4186e98655d70d71cea 100644 (file)
@@ -1,8 +1,7 @@
 #ifndef _ARM_DELAY_H
 #define _ARM_DELAY_H
 
-extern void __udelay(unsigned long usecs);
-#define udelay(n) __udelay(n)
+extern void udelay(unsigned long usecs);
 
 #endif /* defined(_ARM_DELAY_H) */
 /*