This performs a busy-wait for the specified microseconds.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
#define INMATE_CS64 0x10
#define INMATE_DS32 0x18
+#define NS_PER_USEC 1000UL
#define NS_PER_MSEC 1000000UL
#define NS_PER_SEC 1000000000UL
void inmate_main(void);
unsigned long pm_timer_read(void);
+void delay_us(unsigned long microsecs);
unsigned long apic_timer_init(unsigned int vector);
void apic_timer_set(unsigned long timeout_ns);
return tmr + overflows;
}
+void delay_us(unsigned long microsecs)
+{
+ unsigned long timeout = pm_timer_read() + microsecs * NS_PER_USEC;
+
+ while ((long)(timeout - pm_timer_read()) > 0)
+ cpu_relax();
+}
+
unsigned long apic_timer_init(unsigned int vector)
{
unsigned long start, end;