aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/xen.lds.S
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2013-08-23 09:19:29 +0200
committerJan Beulich <jbeulich@suse.com>2013-08-23 09:19:29 +0200
commitb5692f2ef9b6fd67c3e7b4d4f2a4bdb1d58100e5 (patch)
treebd47e9cb5456ece3f11655de913b9e766af7ddd3 /xen/arch/x86/xen.lds.S
parent08d89ac8bd7f43d897cdffe85b236c71d3408e16 (diff)
downloadxen-b5692f2ef9b6fd67c3e7b4d4f2a4bdb1d58100e5.tar.gz
xen-b5692f2ef9b6fd67c3e7b4d4f2a4bdb1d58100e5.tar.bz2
xen-b5692f2ef9b6fd67c3e7b4d4f2a4bdb1d58100e5.zip
x86: move struct bug_frame instances out of line
Just like Linux did many years ago, move them into a separate (data) section, such that they no longer pollute instruction caches and TLBs. Assertion frames, requiring two pointers to be stored, occupy two slots in the array, with the second slot mimicking a frame the location pointer of which doesn't match any address within .text or .init.text (it effectively points back to the slot itself, which - being in a data section - can't be reached by non-buggy execution). Signed-off-by: Jan Beulich <jbeulich@suse.com> Acked-by: Keir Fraser <keir@xen.org>
Diffstat (limited to 'xen/arch/x86/xen.lds.S')
-rw-r--r--xen/arch/x86/xen.lds.S12
1 files changed, 12 insertions, 0 deletions
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index d959941d36..9600cdf19e 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -51,6 +51,18 @@ SECTIONS
} :text = 0x9090
.rodata : {
+ /* Bug frames table */
+ . = ALIGN(4);
+ __start_bug_frames = .;
+ *(.bug_frames.0)
+ __stop_bug_frames_0 = .;
+ *(.bug_frames.1)
+ __stop_bug_frames_1 = .;
+ *(.bug_frames.2)
+ __stop_bug_frames_2 = .;
+ *(.bug_frames.3)
+ __stop_bug_frames_3 = .;
+
*(.rodata)
*(.rodata.*)
} :text