Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 193 → Rev 194

/shark/trunk/oslib/ll/i386/advtimer.h
57,39 → 57,6
 
#define RTC_IRQ 8
 
extern signed long long clk_per_msec;
 
extern __inline__ void UNSIGNED_TSC2NSEC(unsigned long long tsc, unsigned long long *n)
{
 
unsigned long nl,nh;
 
nl = *n & 0xFFFFFFFF;
nh = *n >> 32;
__asm__("mull %%ecx\n\t"
"movl %%eax,%%esi\n\t"
"movl %%edx,%%edi\n\t"
"xorl %%edx,%%edx\n\t"
"movl %6,%%eax\n\t"
"mull %%ecx\n\t"
"addl %%edi,%%eax\n\t"
"adcl $0,%%edx\n\t"
"movl %5,%%ecx\n\t"
"divl %%ecx\n\t"
"xchgl %%eax,%%esi\n\t"
"divl %%ecx\n\t"
: "=a" (nl), "=S" (nh)
: "c" (1000000), "a" ((unsigned long)(tsc & 0xFFFFFFFF)), "d" (0),
"m" ((unsigned long)(clk_per_msec)), "m" ((unsigned long)(tsc >> 32)),
"S" (0), "D" (0));
 
*n = nh;
*n <<= 32;
*n |= nl;
 
}
 
void ll_init_advtimer(void);
void ll_restore_CMOS(void);