Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
49
arch/i386/lib/delay.c
Normal file
49
arch/i386/lib/delay.c
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Precise Delay Loops for i386
|
||||
*
|
||||
* Copyright (C) 1993 Linus Torvalds
|
||||
* Copyright (C) 1997 Martin Mares <mj@atrey.karlin.mff.cuni.cz>
|
||||
*
|
||||
* The __delay function must _NOT_ be inlined as its execution time
|
||||
* depends wildly on alignment on many x86 processors. The additional
|
||||
* jump magic is needed to get the timing stable on all the CPU's
|
||||
* we have to worry about.
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/delay.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/delay.h>
|
||||
#include <asm/timer.h>
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
#include <asm/smp.h>
|
||||
#endif
|
||||
|
||||
extern struct timer_opts* timer;
|
||||
|
||||
void __delay(unsigned long loops)
|
||||
{
|
||||
cur_timer->delay(loops);
|
||||
}
|
||||
|
||||
inline void __const_udelay(unsigned long xloops)
|
||||
{
|
||||
int d0;
|
||||
xloops *= 4;
|
||||
__asm__("mull %0"
|
||||
:"=d" (xloops), "=&a" (d0)
|
||||
:"1" (xloops),"0" (cpu_data[_smp_processor_id()].loops_per_jiffy * (HZ/4)));
|
||||
__delay(++xloops);
|
||||
}
|
||||
|
||||
void __udelay(unsigned long usecs)
|
||||
{
|
||||
__const_udelay(usecs * 0x000010c7); /* 2**32 / 1000000 (rounded up) */
|
||||
}
|
||||
|
||||
void __ndelay(unsigned long nsecs)
|
||||
{
|
||||
__const_udelay(nsecs * 0x00005); /* 2**32 / 1000000000 (rounded up) */
|
||||
}
|
||||
Reference in New Issue
Block a user