From: Kyle McMartin Seems like needless clutter having a bunch of #if defined(CONFIG_$ARCH) in include/linux/cache.h. Move the per architecture section definition to asm/cache.h, and keep the if-not-defined dummy case in linux/cache.h to catch architectures which don't implement the section. Verified that symbols still go in .data.read_mostly on parisc, and the compile doesn't break. Signed-off-by: Kyle McMartin Signed-off-by: Andrew Morton --- include/asm-i386/cache.h | 2 ++ include/asm-ia64/cache.h | 2 ++ include/asm-parisc/cache.h | 2 ++ include/asm-sparc64/cache.h | 2 ++ include/asm-x86_64/cache.h | 2 ++ include/linux/cache.h | 4 +--- 6 files changed, 11 insertions(+), 3 deletions(-) diff -puN include/asm-i386/cache.h~move-read_mostly-definition-to-asm-cacheh include/asm-i386/cache.h --- devel/include/asm-i386/cache.h~move-read_mostly-definition-to-asm-cacheh 2006-01-11 20:18:07.000000000 -0800 +++ devel-akpm/include/asm-i386/cache.h 2006-01-11 20:18:07.000000000 -0800 @@ -10,4 +10,6 @@ #define L1_CACHE_SHIFT (CONFIG_X86_L1_CACHE_SHIFT) #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) +#define __read_mostly __attribute__((__section__(".data.read_mostly"))) + #endif diff -puN include/asm-ia64/cache.h~move-read_mostly-definition-to-asm-cacheh include/asm-ia64/cache.h --- devel/include/asm-ia64/cache.h~move-read_mostly-definition-to-asm-cacheh 2006-01-11 20:18:07.000000000 -0800 +++ devel-akpm/include/asm-ia64/cache.h 2006-01-11 20:18:07.000000000 -0800 @@ -25,4 +25,6 @@ # define SMP_CACHE_BYTES (1 << 3) #endif +#define __read_mostly __attribute__((__section__(".data.read_mostly"))) + #endif /* _ASM_IA64_CACHE_H */ diff -puN include/asm-parisc/cache.h~move-read_mostly-definition-to-asm-cacheh include/asm-parisc/cache.h --- devel/include/asm-parisc/cache.h~move-read_mostly-definition-to-asm-cacheh 2006-01-11 20:18:07.000000000 -0800 +++ devel-akpm/include/asm-parisc/cache.h 2006-01-11 20:18:07.000000000 -0800 @@ -29,6 +29,8 @@ #define SMP_CACHE_BYTES L1_CACHE_BYTES +#define __read_mostly __attribute__((__section__(".data.read_mostly"))) + extern void flush_data_cache_local(void *); /* flushes local data-cache only */ extern void flush_instruction_cache_local(void *); /* flushes local code-cache only */ #ifdef CONFIG_SMP diff -puN include/asm-sparc64/cache.h~move-read_mostly-definition-to-asm-cacheh include/asm-sparc64/cache.h --- devel/include/asm-sparc64/cache.h~move-read_mostly-definition-to-asm-cacheh 2006-01-11 20:18:07.000000000 -0800 +++ devel-akpm/include/asm-sparc64/cache.h 2006-01-11 20:18:07.000000000 -0800 @@ -13,4 +13,6 @@ #define SMP_CACHE_BYTES_SHIFT 6 #define SMP_CACHE_BYTES (1 << SMP_CACHE_BYTES_SHIFT) /* L2 cache line size. */ +#define __read_mostly __attribute__((__section__(".data.read_mostly"))) + #endif diff -puN include/asm-x86_64/cache.h~move-read_mostly-definition-to-asm-cacheh include/asm-x86_64/cache.h --- devel/include/asm-x86_64/cache.h~move-read_mostly-definition-to-asm-cacheh 2006-01-11 20:18:07.000000000 -0800 +++ devel-akpm/include/asm-x86_64/cache.h 2006-01-11 20:18:07.000000000 -0800 @@ -20,6 +20,8 @@ __attribute__((__section__(".data.page_aligned"))) #endif +#define __read_mostly __attribute__((__section__(".data.read_mostly"))) + #endif #endif diff -puN include/linux/cache.h~move-read_mostly-definition-to-asm-cacheh include/linux/cache.h --- devel/include/linux/cache.h~move-read_mostly-definition-to-asm-cacheh 2006-01-11 20:18:07.000000000 -0800 +++ devel-akpm/include/linux/cache.h 2006-01-11 20:18:07.000000000 -0800 @@ -13,9 +13,7 @@ #define SMP_CACHE_BYTES L1_CACHE_BYTES #endif -#if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64) || defined(CONFIG_PARISC) -#define __read_mostly __attribute__((__section__(".data.read_mostly"))) -#else +#ifndef __read_mostly #define __read_mostly #endif _