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); |
|