aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-05-06 11:52:22 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-05-06 11:52:22 +0100
commitc931e4face0ab47ea749e3e32e7734e90c57d6ba (patch)
tree28b8b61589b8e7c4226603908becb2f35b21a6f6
parentd9998d5853e5387adffbecb69fd280d87672760d (diff)
downloadxen-c931e4face0ab47ea749e3e32e7734e90c57d6ba.tar.gz
xen-c931e4face0ab47ea749e3e32e7734e90c57d6ba.tar.bz2
xen-c931e4face0ab47ea749e3e32e7734e90c57d6ba.zip
x86: add .data.page_aligned section
... and move page-aligned data there, instead of having random holes (to fulfill the demanded alignment) in the final image. Signed-off-by: Jan Beulich <jbeulich@novell.com>
-rw-r--r--xen/arch/x86/boot/x86_32.S3
-rw-r--r--xen/arch/x86/boot/x86_64.S4
-rw-r--r--xen/arch/x86/x86_64/compat_kexec.S6
-rw-r--r--xen/arch/x86/xen.lds.S2
4 files changed, 12 insertions, 3 deletions
diff --git a/xen/arch/x86/boot/x86_32.S b/xen/arch/x86/boot/x86_32.S
index fa183db86c..d86970df4f 100644
--- a/xen/arch/x86/boot/x86_32.S
+++ b/xen/arch/x86/boot/x86_32.S
@@ -61,6 +61,8 @@ ignore_int:
jnz 0b
1: jmp 1b
+ .data
+ ALIGN
ENTRY(stack_start)
.long cpu0_stack
@@ -88,6 +90,7 @@ ENTRY(idle_pg_table)
.long sym_phys(idle_pg_table_l2) + 2*PAGE_SIZE + 0x01, 0
.long sym_phys(idle_pg_table_l2) + 3*PAGE_SIZE + 0x01, 0
+ .section .data.page_aligned, "aw", @progbits
.align PAGE_SIZE, 0
/* NB. Rings != 0 get access up to MACH2PHYS_VIRT_END. This allows access to */
/* the machine->physical mapping table. Ring 0 can access all memory. */
diff --git a/xen/arch/x86/boot/x86_64.S b/xen/arch/x86/boot/x86_64.S
index 7932f8aaa9..edf7891610 100644
--- a/xen/arch/x86/boot/x86_64.S
+++ b/xen/arch/x86/boot/x86_64.S
@@ -78,7 +78,8 @@ ignore_int:
/*** DESCRIPTOR TABLES ***/
- .align 8, 0xCC
+ .data
+ .align 8
multiboot_ptr:
.long 0
@@ -95,6 +96,7 @@ idt_descr:
ENTRY(stack_start)
.quad cpu0_stack
+ .section .data.page_aligned, "aw", @progbits
.align PAGE_SIZE, 0
ENTRY(boot_cpu_gdt_table)
.quad 0x0000000000000000 /* unused */
diff --git a/xen/arch/x86/x86_64/compat_kexec.S b/xen/arch/x86/x86_64/compat_kexec.S
index da3136f886..6977e3eb5a 100644
--- a/xen/arch/x86/x86_64/compat_kexec.S
+++ b/xen/arch/x86/x86_64/compat_kexec.S
@@ -151,6 +151,8 @@ compatibility_mode:
call *%eax
ud2
+ .data
+ .align 4
compat_page_list:
.fill 12,4,0
@@ -166,8 +168,8 @@ compat_pg_table:
.long SYM_PHYS(compat_pg_table_l2) + 2*PAGE_SIZE + 0x01, 0
.long SYM_PHYS(compat_pg_table_l2) + 3*PAGE_SIZE + 0x01, 0
- .align 4096,0
-
+ .section .data.page_aligned, "aw", @progbits
+ .align PAGE_SIZE,0
compat_pg_table_l2:
.macro identmap from=0, count=512
.if \count-1
diff --git a/xen/arch/x86/xen.lds.S b/xen/arch/x86/xen.lds.S
index 38ba8ba3a4..20f9f2dca4 100644
--- a/xen/arch/x86/xen.lds.S
+++ b/xen/arch/x86/xen.lds.S
@@ -53,6 +53,8 @@ SECTIONS
} :text
.data : { /* Data */
+ . = ALIGN(PAGE_SIZE);
+ *(.data.page_aligned)
*(.data)
CONSTRUCTORS
} :text