summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@engr.sgi.com>2005-12-12 09:34:32 -0800
committerTony Luck <tony.luck@intel.com>2005-12-16 10:52:46 -0800
commitdc86e88c2bb8a7603ee175fbb6a9e92cf3293dd8 (patch)
treea15905f02969ba9471b8cfd28f7dc041189dabb5
parentd5bf3165b6fbb879a4658f9da9ca2fe002b75f08 (diff)
downloadlinux-stable-dc86e88c2bb8a7603ee175fbb6a9e92cf3293dd8.tar.gz
linux-stable-dc86e88c2bb8a7603ee175fbb6a9e92cf3293dd8.tar.bz2
linux-stable-dc86e88c2bb8a7603ee175fbb6a9e92cf3293dd8.zip
[IA64] Add __read_mostly support for IA64
sparc64, i386 and x86_64 have support for a special data section dedicated to rarely updated data that is frequently read. The section was created to avoid false sharing of those rarely read data with frequently written kernel data. This patch creates such a data section for ia64 and will group rarely written data into this section. Signed-off-by: Christoph Lameter <clameter@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
-rw-r--r--arch/ia64/kernel/vmlinux.lds.S3
-rw-r--r--include/linux/cache.h2
2 files changed, 4 insertions, 1 deletions
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S
index 30d8564e9603..73af6267d2ef 100644
--- a/arch/ia64/kernel/vmlinux.lds.S
+++ b/arch/ia64/kernel/vmlinux.lds.S
@@ -177,6 +177,9 @@ SECTIONS
}
. = ALIGN(PAGE_SIZE); /* make sure the gate page doesn't expose kernel data */
+ .data.read_mostly : AT(ADDR(.data.read_mostly) - LOAD_OFFSET)
+ { *(.data.read_mostly) }
+
.data.cacheline_aligned : AT(ADDR(.data.cacheline_aligned) - LOAD_OFFSET)
{ *(.data.cacheline_aligned) }
diff --git a/include/linux/cache.h b/include/linux/cache.h
index f6b5a46c5f82..0b7ecf3af78a 100644
--- a/include/linux/cache.h
+++ b/include/linux/cache.h
@@ -13,7 +13,7 @@
#define SMP_CACHE_BYTES L1_CACHE_BYTES
#endif
-#if defined(CONFIG_X86) || defined(CONFIG_SPARC64)
+#if defined(CONFIG_X86) || defined(CONFIG_SPARC64) || defined(CONFIG_IA64)
#define __read_mostly __attribute__((__section__(".data.read_mostly")))
#else
#define __read_mostly