Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 244 → Rev 245

/shark/trunk/oslib/kl/advtimer.c
163,8 → 163,10
# define CLOCK_TICK_RATE 1193180 /* Underlying HZ */
#endif
 
#define COUNTER_END 1000
#define COUNTER_END 300
 
#define barrier() __asm__ __volatile__("" ::: "memory");
 
//TSC Calibration (idea from the linux kernel code)
void ll_calibrate_tsc(void)
{
184,10 → 186,15
outp(0x42,0xFF); /* LSB of count */
outp(0x42,0xFF); /* MSB of count */
barrier();
rdtscll(start);
barrier();
outp(0x43,0x00);
start_8253 = inp(0x42);
start_8253 |= inp(0x42) << 8;
barrier();
rdtscll(start);
barrier();
do {
197,6 → 204,10
 
} while (end_8253 > COUNTER_END);
 
outp(0x43,0x00);
end_8253 = inp(0x42);
end_8253 |= inp(0x42) << 8;
 
do {
outp(0x43,0x00);
203,8 → 214,12
end_8253 = inp(0x42);
end_8253 |= inp(0x42) << 8;
} while (end_8253 < COUNTER_END);
} while (end_8253 <= COUNTER_END);
 
outp(0x43,0x00);
end_8253 = inp(0x42);
end_8253 |= inp(0x42) << 8;
 
do {
outp(0x43,0x00);
213,10 → 228,15
} while (end_8253 > COUNTER_END);
 
barrier();
rdtscll(end);
barrier();
outp(0x43,0x00);
end_8253 = inp(0x42);
end_8253 |= inp(0x42) << 8;
barrier();
rdtscll(end);
barrier();
 
//Delta TSC
dtsc = end - start;