|
@@ -259,8 +259,12 @@ int lapic_get_maxlvt(void)
|
|
|
* Local APIC timer
|
|
|
*/
|
|
|
|
|
|
-/* Clock divisor is set to 1 */
|
|
|
+/* Clock divisor */
|
|
|
+#ifdef CONFG_X86_64
|
|
|
#define APIC_DIVISOR 1
|
|
|
+#else
|
|
|
+#define APIC_DIVISOR 16
|
|
|
+#endif
|
|
|
|
|
|
/*
|
|
|
* This function sets up the local APIC timer, with a timeout of
|
|
@@ -291,9 +295,9 @@ static void __setup_APIC_LVTT(unsigned int clocks, int oneshot, int irqen)
|
|
|
* Divide PICLK by 16
|
|
|
*/
|
|
|
tmp_value = apic_read(APIC_TDCR);
|
|
|
- apic_write(APIC_TDCR, (tmp_value
|
|
|
- & ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE))
|
|
|
- | APIC_TDR_DIV_16);
|
|
|
+ apic_write(APIC_TDCR,
|
|
|
+ (tmp_value & ~(APIC_TDR_DIV_1 | APIC_TDR_DIV_TMBASE)) |
|
|
|
+ APIC_TDR_DIV_16);
|
|
|
|
|
|
if (!oneshot)
|
|
|
apic_write(APIC_TMICT, clocks / APIC_DIVISOR);
|