344,7 → 344,10 |
/* |
* Divide PICLK by 1 |
*/ |
apic_write_around(APIC_TDCR, APIC_TDR_DIV_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_TMICT, 0xFFFFFFFF); |
|
363,15 → 366,13 |
|
cli(); |
|
tmp_value = SET_APIC_TIMER_BASE(APIC_TIMER_BASE_DIV) | LOCAL_TIMER_VECTOR; |
apic_write_around(APIC_LVTT, tmp_value); |
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(APIC_TMICT, MAX_DWORD); |
|
enable_APIC_timer(); |
|
barrier(); |
rdtscll(tsc_start); |
barrier(); |
389,8 → 390,6 |
apic_end = apic_read(APIC_TMCCT); |
barrier(); |
|
disable_APIC_timer(); |
|
sti(); |
|
dtsc = tsc_end - tsc_start; |
397,7 → 396,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); |
|