Index: linux-2.6/include/asm-generic/sections.h =================================================================== --- linux-2.6.orig/include/asm-generic/sections.h 2008-05-26 19:10:40.000000000 -0700 +++ linux-2.6/include/asm-generic/sections.h 2008-05-26 19:10:56.000000000 -0700 @@ -15,6 +15,7 @@ #define __per_cpu_size ((unsigned long)&____per_cpu_size) #define __per_cpu_start ((char *)0) #define __per_cpu_end ((char *)__per_cpu_size) +extern char __per_cpu_area0; #else extern char __per_cpu_start[], __per_cpu_end[]; #define __per_cpu_load __per_cpu_start Index: linux-2.6/include/asm-generic/vmlinux.lds.h =================================================================== --- linux-2.6.orig/include/asm-generic/vmlinux.lds.h 2008-05-26 19:10:40.000000000 -0700 +++ linux-2.6/include/asm-generic/vmlinux.lds.h 2008-05-26 19:10:56.000000000 -0700 @@ -357,6 +357,9 @@ ____per_cpu_size = .; \ } \ . = __per_cpu_load + ____per_cpu_size; \ + . = ALIGN(align); \ + __per_cpu_area0 = .; \ + . = __per_cpu_area0 + ____per_cpu_size; \ data : { } :data #else #define PERCPU(align) \