Subversion Repositories shark

Compare Revisions

Ignore whitespace Rev 311 → Rev 312

/shark/trunk/oslib/kl/advtimer.c
344,10 → 344,7
/*
* Divide PICLK by 1
*/
tmp_value = apic_read(APIC_TDCR);
apic_write_around(APIC_TDCR, (tmp_value
& ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE))
| APIC_TDR_DIV_1);
apic_write_around(APIC_TDCR, APIC_TDR_DIV_1);
 
apic_write_around(APIC_TMICT, 0xFFFFFFFF);
 
366,13 → 363,15
 
cli();
 
tmp_value = apic_read(APIC_TDCR);
apic_write_around(APIC_TDCR, (tmp_value
& ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE))
| APIC_TDR_DIV_1);
tmp_value = SET_APIC_TIMER_BASE(APIC_TIMER_BASE_DIV) | LOCAL_TIMER_VECTOR;
apic_write_around(APIC_LVTT, tmp_value);
 
apic_write_around(APIC_TDCR, APIC_TDR_DIV_1);
 
apic_write(APIC_TMICT, MAX_DWORD);
 
enable_APIC_timer();
 
barrier();
rdtscll(tsc_start);
barrier();
390,6 → 389,8
apic_end = apic_read(APIC_TMCCT);
barrier();
 
disable_APIC_timer();
 
sti();
 
dtsc = tsc_end - tsc_start;
396,7 → 397,7
dapic = apic_start - apic_end;
 
apic_clk_per_msec = (unsigned long long)(clk_per_msec) * (unsigned long long)(dapic) / dtsc;
apic_set_limit = ((apic_clk_per_msec / 100) == 0) ? (apic_clk_per_msec/100) : APIC_SET_LIMIT;
apic_set_limit = ((apic_clk_per_msec / 100) != 0) ? (apic_clk_per_msec/100) : APIC_SET_LIMIT;
message("Calibrated APIC Clk/msec = %10d\n",apic_clk_per_msec);
/shark/trunk/oslib/ll/i386/apic.h
129,16 → 129,10
 
static __inline__ void set_APIC_timer(unsigned int clocks)
{
unsigned int tmp_value;
extern unsigned int apic_set_limit;
 
if (clocks < apic_set_limit) clocks = apic_set_limit;
 
tmp_value = apic_read(APIC_TDCR);
apic_write_around(APIC_TDCR, (tmp_value
& ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE))
| APIC_TDR_DIV_1);
apic_write_around(APIC_TMICT, clocks);
}