1 --- linux-2.6.4-rc2/arch/sparc/kernel/devices.c.orig 2004-03-04 06:17:04.000000000 +0000
2 +++ linux-2.6.4-rc2/arch/sparc/kernel/devices.c 2004-03-05 14:43:27.000000000 +0000
5 #include <asm/system.h>
7 -struct prom_cpuinfo linux_cpus[32];
8 +struct prom_cpuinfo linux_cpus[NR_CPUS];
9 int linux_num_cpus = 0;
11 extern void cpu_probe(void);
12 --- linux-2.6.4-rc2/arch/sparc/kernel/smp.c.orig 2004-03-04 06:16:40.000000000 +0000
13 +++ linux-2.6.4-rc2/arch/sparc/kernel/smp.c 2004-03-05 19:37:41.000000000 +0000
15 volatile int __cpu_number_map[NR_CPUS];
16 volatile int __cpu_logical_map[NR_CPUS];
17 cycles_t cacheflush_time = 0; /* XXX */
18 +unsigned long cache_decay_ticks = 1; /* XXX */
20 /* The only guaranteed locking primitive available on all Sparc
21 * processors is 'ldstub [%reg + immediate], %dest_reg' which atomically
23 /* Reschedule call back. */
24 void smp_reschedule_irq(void)
26 - current->work.need_resched = 1;
30 /* Stopping processors. */
31 --- linux-2.6.4-rc2/include/asm-sparc/system.h.orig 2004-03-04 06:16:54.000000000 +0000
32 +++ linux-2.6.4-rc2/include/asm-sparc/system.h 2004-03-05 15:49:07.000000000 +0000
35 #define SWITCH_ENTER(prv) \
37 - if (test_tsk_thread_flag(prv, TIF_USEDFPU) { \
38 + if (test_tsk_thread_flag(prv, TIF_USEDFPU)) { \
39 put_psr(get_psr() | PSR_EF); \
40 fpsave(&(prv)->thread.float_regs[0], &(prv)->thread.fsr, \
41 &(prv)->thread.fpqueue[0], &(prv)->thread.fpqdepth); \
42 --- linux-2.6.4-rc2/arch/sparc/kernel/sun4m_smp.c.orig 2004-03-04 06:17:00.000000000 +0000
43 +++ linux-2.6.4-rc2/arch/sparc/kernel/sun4m_smp.c 2004-03-05 15:19:21.000000000 +0000
45 #include <linux/init.h>
46 #include <linux/spinlock.h>
48 +#include <linux/swap.h>
50 #include <asm/ptrace.h>
51 #include <asm/atomic.h>
53 #include <asm/pgtable.h>
54 #include <asm/oplib.h>
55 #include <asm/hardirq.h>
56 +#include <asm/cacheflush.h>
57 +#include <asm/tlbflush.h>
59 #define __KERNEL_SYSCALLS__
60 #include <linux/unistd.h>
62 * the SMP initialization the master will be just allowed
63 * to call the scheduler code.
67 /* Allow master to continue. */
68 swap((unsigned long *)&cpu_callin_map[cpuid], 1);
71 mid_xlate[boot_cpu_id] = (linux_cpus[boot_cpu_id].mid & ~8);
72 __cpu_number_map[boot_cpu_id] = 0;
73 __cpu_logical_map[0] = boot_cpu_id;
74 - current->cpu = boot_cpu_id;
75 + current->thread_info->cpu = boot_cpu_id;
77 smp_store_cpu_info(boot_cpu_id);
78 set_irq_udt(mid_xlate[boot_cpu_id]);
81 p = prev_task(&init_task);
84 + p->thread_info->cpu = i;
87 + current_set[i] = p->thread_info;
91 --- linux-2.6.4-rc2/arch/sparc/kernel/sun4d_smp.c.orig 2004-03-04 06:16:37.000000000 +0000
92 +++ linux-2.6.4-rc2/arch/sparc/kernel/sun4d_smp.c 2004-03-05 15:29:11.000000000 +0000
94 #include <linux/init.h>
95 #include <linux/spinlock.h>
97 +#include <linux/swap.h>
99 #include <asm/ptrace.h>
100 #include <asm/atomic.h>
102 #include <asm/hardirq.h>
103 #include <asm/sbus.h>
105 +#include <asm/cacheflush.h>
106 +#include <asm/tlbflush.h>
108 #define __KERNEL_SYSCALLS__
109 #include <linux/unistd.h>
111 * the SMP initialization the master will be just allowed
112 * to call the scheduler code.
116 /* Get our local ticker going. */
117 smp_setup_percpu_timer();
120 __cpu_number_map[boot_cpu_id] = 0;
121 __cpu_logical_map[0] = boot_cpu_id;
122 - current->cpu = boot_cpu_id;
123 + current->thread_info->cpu = boot_cpu_id;
124 smp_store_cpu_info(boot_cpu_id);
125 smp_setup_percpu_timer();
126 local_flush_cache_all();
129 p = prev_task(&init_task);
132 + p->thread_info->cpu = i;
134 - current_set[i] = p;
135 + current_set[i] = p->thread_info;
139 --- linux-2.6.4-rc2/arch/sparc/kernel/sparc_ksyms.c.orig 2004-03-04 06:16:36.000000000 +0000
140 +++ linux-2.6.4-rc2/arch/sparc/kernel/sparc_ksyms.c 2004-03-05 15:34:54.000000000 +0000
144 /* IRQ implementation. */
145 -EXPORT_SYMBOL(global_irq_holder);
146 EXPORT_SYMBOL(synchronize_irq);
148 /* Misc SMP information */
149 --- linux-2.6.4-rc2/include/asm-sparc/smp.h.orig 2004-03-04 06:16:39.000000000 +0000
150 +++ linux-2.6.4-rc2/include/asm-sparc/smp.h 2004-03-05 17:44:57.000000000 +0000
152 extern unsigned char boot_cpu_id;
153 extern unsigned long cpu_present_map;
154 #define cpu_online_map cpu_present_map
155 +#define cpu_possible_map cpu_present_map
157 typedef void (*smpfunc_t)(unsigned long, unsigned long, unsigned long,
158 unsigned long, unsigned long);
159 --- linux-2.6.4-rc2/arch/sparc/kernel/trampoline.S.orig 2004-03-04 06:17:04.000000000 +0000
160 +++ linux-2.6.4-rc2/arch/sparc/kernel/trampoline.S 2004-03-05 18:59:45.000000000 +0000
162 #include <asm/ptrace.h>
163 #include <asm/vaddrs.h>
164 #include <asm/contregs.h>
165 +#include <asm/thread_info.h>
167 .globl sun4m_cpu_startup, __smp4m_processor_id
168 .globl sun4d_cpu_startup, __smp4d_processor_id
169 --- linux-2.6.4-rc2/arch/sparc/mm/nosun4c.c.orig 2004-03-04 06:17:10.000000000 +0000
170 +++ linux-2.6.4-rc2/arch/sparc/mm/nosun4c.c 2004-03-05 19:58:10.000000000 +0000
175 -pte_t *sun4c_pte_offset(pmd_t * dir, unsigned long address)
176 +pte_t *sun4c_pte_offset_kernel(pmd_t * dir, unsigned long address)