2.6.33 fixes for atheros and madwifi
[openwrt/svn-archive/archive.git] / target / linux / atheros / patches-2.6.33 / 002-mips_clocksource_init_war.patch
1 --- a/arch/mips/kernel/cevt-r4k.c
2 +++ b/arch/mips/kernel/cevt-r4k.c
3 @@ -16,6 +16,22 @@
4 #include <asm/cevt-r4k.h>
5
6 /*
7 + * Compare interrupt can be routed and latched outside the core,
8 + * so a single execution hazard barrier may not be enough to give
9 + * it time to clear as seen in the Cause register. 4 time the
10 + * pipeline depth seems reasonably conservative, and empirically
11 + * works better in configurations with high CPU/bus clock ratios.
12 + */
13 +
14 +#define compare_change_hazard() \
15 + do { \
16 + irq_disable_hazard(); \
17 + irq_disable_hazard(); \
18 + irq_disable_hazard(); \
19 + irq_disable_hazard(); \
20 + } while (0)
21 +
22 +/*
23 * The SMTC Kernel for the 34K, 1004K, et. al. replaces several
24 * of these routines with SMTC-specific variants.
25 */
26 @@ -31,6 +47,7 @@ static int mips_next_event(unsigned long
27 cnt = read_c0_count();
28 cnt += delta;
29 write_c0_compare(cnt);
30 + compare_change_hazard();
31 res = ((int)(read_c0_count() - cnt) > 0) ? -ETIME : 0;
32 return res;
33 }
34 @@ -100,22 +117,6 @@ static int c0_compare_int_pending(void)
35 return (read_c0_cause() >> cp0_compare_irq_shift) & (1ul << CAUSEB_IP);
36 }
37
38 -/*
39 - * Compare interrupt can be routed and latched outside the core,
40 - * so a single execution hazard barrier may not be enough to give
41 - * it time to clear as seen in the Cause register. 4 time the
42 - * pipeline depth seems reasonably conservative, and empirically
43 - * works better in configurations with high CPU/bus clock ratios.
44 - */
45 -
46 -#define compare_change_hazard() \
47 - do { \
48 - irq_disable_hazard(); \
49 - irq_disable_hazard(); \
50 - irq_disable_hazard(); \
51 - irq_disable_hazard(); \
52 - } while (0)
53 -
54 int c0_compare_int_usable(void)
55 {
56 unsigned int delta;