diff options
author | Keir Fraser <keir.fraser@citrix.com> | 2010-05-06 11:52:22 +0100 |
---|---|---|
committer | Keir Fraser <keir.fraser@citrix.com> | 2010-05-06 11:52:22 +0100 |
commit | c931e4face0ab47ea749e3e32e7734e90c57d6ba (patch) | |
tree | 28b8b61589b8e7c4226603908becb2f35b21a6f6 | |
parent | d9998d5853e5387adffbecb69fd280d87672760d (diff) | |
download | xen-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.S | 3 | ||||
-rw-r--r-- | xen/arch/x86/boot/x86_64.S | 4 | ||||
-rw-r--r-- | xen/arch/x86/x86_64/compat_kexec.S | 6 | ||||
-rw-r--r-- | xen/arch/x86/xen.lds.S | 2 |
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 |