x86/link: Introduce and use SECTION_ALIGN
authorAndrew Cooper <andrew.cooper3@citrix.com>
Thu, 11 Jan 2018 17:47:59 +0000 (17:47 +0000)
committerWei Liu <wei.liu2@citrix.com>
Tue, 16 Jan 2018 18:34:04 +0000 (18:34 +0000)
... to reduce the quantity of #ifdef EFI.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Reviewed-by: Wei Liu <wei.liu2@citrix.com>
xen/arch/x86/xen.lds.S

index d3c984a4631e0be1a44b77c9a19a00b02e6d9748..2ee0fd2d41e33004b1188fb0694d73f76a7e048b 100644 (file)
 #define FORMAT "pei-x86-64"
 #undef __XEN_VIRT_START
 #define __XEN_VIRT_START __image_base__
+#define SECTION_ALIGN MB(2)
 
 ENTRY(efi_start)
 
 #else /* !EFI */
 
 #define FORMAT "elf64-x86-64"
+#define SECTION_ALIGN PAGE_SIZE
 
 ENTRY(start)
 
@@ -68,11 +70,7 @@ SECTIONS
        _etext = .;             /* End of text section */
   } :text = 0x9090
 
-#ifdef EFI
-  . = ALIGN(MB(2));
-#else
-  . = ALIGN(PAGE_SIZE);
-#endif
+  . = ALIGN(SECTION_ALIGN);
   __2M_text_end = .;
 
   __2M_rodata_start = .;       /* Start of 2M superpages, mapped RO. */
@@ -150,11 +148,7 @@ SECTIONS
 #endif
   _erodata = .;
 
-#ifdef EFI
-  . = ALIGN(MB(2));
-#else
-  . = ALIGN(PAGE_SIZE);
-#endif
+  . = ALIGN(SECTION_ALIGN);
   __2M_rodata_end = .;
 
   __2M_init_start = .;         /* Start of 2M superpages, mapped RWX (boot only). */
@@ -216,11 +210,7 @@ SECTIONS
        __ctors_end = .;
   } :text
 
-#ifdef EFI
-  . = ALIGN(MB(2));
-#else
-  . = ALIGN(PAGE_SIZE);
-#endif
+  . = ALIGN(SECTION_ALIGN);
   __init_end = .;
   __2M_init_end = .;
 
@@ -258,11 +248,7 @@ SECTIONS
   } :text
   _end = . ;
 
-#ifdef EFI
-  . = ALIGN(MB(2));
-#else
-  . = ALIGN(PAGE_SIZE);
-#endif
+  . = ALIGN(SECTION_ALIGN);
   __2M_rwdata_end = .;
 
 #ifdef EFI
@@ -311,23 +297,13 @@ ASSERT(__image_base__ > XEN_VIRT_START ||
 ASSERT(kexec_reloc_size - kexec_reloc <= PAGE_SIZE, "kexec_reloc is too large")
 #endif
 
-#ifdef EFI
-ASSERT(IS_ALIGNED(__2M_text_end,     MB(2)), "__2M_text_end misaligned")
-ASSERT(IS_ALIGNED(__2M_rodata_start, MB(2)), "__2M_rodata_start misaligned")
-ASSERT(IS_ALIGNED(__2M_rodata_end,   MB(2)), "__2M_rodata_end misaligned")
-ASSERT(IS_ALIGNED(__2M_init_start,   MB(2)), "__2M_init_start misaligned")
-ASSERT(IS_ALIGNED(__2M_init_end,     MB(2)), "__2M_init_end misaligned")
-ASSERT(IS_ALIGNED(__2M_rwdata_start, MB(2)), "__2M_rwdata_start misaligned")
-ASSERT(IS_ALIGNED(__2M_rwdata_end,   MB(2)), "__2M_rwdata_end misaligned")
-#else
-ASSERT(IS_ALIGNED(__2M_text_end,     PAGE_SIZE), "__2M_text_end misaligned")
-ASSERT(IS_ALIGNED(__2M_rodata_start, PAGE_SIZE), "__2M_rodata_start misaligned")
-ASSERT(IS_ALIGNED(__2M_rodata_end,   PAGE_SIZE), "__2M_rodata_end misaligned")
-ASSERT(IS_ALIGNED(__2M_init_start,   PAGE_SIZE), "__2M_init_start misaligned")
-ASSERT(IS_ALIGNED(__2M_init_end,     PAGE_SIZE), "__2M_init_end misaligned")
-ASSERT(IS_ALIGNED(__2M_rwdata_start, PAGE_SIZE), "__2M_rwdata_start misaligned")
-ASSERT(IS_ALIGNED(__2M_rwdata_end,   PAGE_SIZE), "__2M_rwdata_end misaligned")
-#endif
+ASSERT(IS_ALIGNED(__2M_text_end,     SECTION_ALIGN), "__2M_text_end misaligned")
+ASSERT(IS_ALIGNED(__2M_rodata_start, SECTION_ALIGN), "__2M_rodata_start misaligned")
+ASSERT(IS_ALIGNED(__2M_rodata_end,   SECTION_ALIGN), "__2M_rodata_end misaligned")
+ASSERT(IS_ALIGNED(__2M_init_start,   SECTION_ALIGN), "__2M_init_start misaligned")
+ASSERT(IS_ALIGNED(__2M_init_end,     SECTION_ALIGN), "__2M_init_end misaligned")
+ASSERT(IS_ALIGNED(__2M_rwdata_start, SECTION_ALIGN), "__2M_rwdata_start misaligned")
+ASSERT(IS_ALIGNED(__2M_rwdata_end,   SECTION_ALIGN), "__2M_rwdata_end misaligned")
 
 ASSERT(IS_ALIGNED(cpu0_stack, STACK_SIZE), "cpu0_stack misaligned")