57,5 → 57,41 |
|
#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); |
|
END_DEF |
#endif |