x86/link: Introduce and use __bss_end
authorAndrew Cooper <andrew.cooper3@citrix.com>
Tue, 7 Apr 2015 17:26:18 +0000 (18:26 +0100)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Fri, 10 Apr 2015 15:36:13 +0000 (11:36 -0400)
No functional change.

Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
CC: Keir Fraser <keir@xen.org>
CC: Jan Beulich <JBeulich@suse.com>
Reviewed-by: Tim Deegan <tim@xen.org>
xen/arch/x86/boot/head.S
xen/arch/x86/setup.c
xen/arch/x86/tboot.c
xen/arch/x86/xen.lds.S

index c99f73930d5c26b71cb6b122cd491d4eb67cbc2c..2d0e56c26f1f71e99b4109e1374aa003b2230ca5 100644 (file)
@@ -124,7 +124,7 @@ __start:
 
         /* Initialize BSS (no nasty surprises!) */
         mov     $sym_phys(__bss_start),%edi
-        mov     $sym_phys(_end),%ecx
+        mov     $sym_phys(__bss_end),%ecx
         sub     %edi,%ecx
         xor     %eax,%eax
         rep     stosb
index 89e4827696868409042c192c7f4ee11824d95f45..2b9787a1634fbb07bc25029ec7d8e1d8bb4a6350 100644 (file)
@@ -185,7 +185,7 @@ static void free_xen_data(char *s, char *e)
     memguard_guard_range(__va(__pa(s)), e-s);
 }
 
-extern char __init_begin[], __init_end[], __bss_start[];
+extern char __init_begin[], __init_end[], __bss_start[], __bss_end[];
 
 static void __init init_idle_domain(void)
 {
@@ -1497,7 +1497,7 @@ int __hwdom_init xen_in_range(unsigned long mfn)
         xen_regions[region_text].e = __pa(&__init_begin);
         /* bss */
         xen_regions[region_bss].s = __pa(&__bss_start);
-        xen_regions[region_bss].e = __pa(&_end);
+        xen_regions[region_bss].e = __pa(&__bss_end);
     }
 
     start = (paddr_t)mfn << PAGE_SHIFT;
index 7b95ad3f2e6d626bbdedbb3428c23e88f4536966..01b95302bb93c0fa7b655549abf8e30cd47e9fc0 100644 (file)
@@ -48,7 +48,7 @@ static uint64_t __initdata sinit_base, __initdata sinit_size;
 #define TXTCR_HEAP_BASE             0x0300
 #define TXTCR_HEAP_SIZE             0x0308
 
-extern char __init_begin[], __bss_start[];
+extern char __init_begin[], __bss_start[], __bss_end[];
 
 #define SHA1_SIZE      20
 typedef uint8_t   sha1_hash_t[SHA1_SIZE];
@@ -374,7 +374,7 @@ void tboot_shutdown(uint32_t shutdown_type)
                                               __pa(&_stext);
         /* bss */
         g_tboot_shared->mac_regions[2].start = (uint64_t)__pa(&__bss_start);
-        g_tboot_shared->mac_regions[2].size = __pa(&_end) - __pa(&__bss_start);
+        g_tboot_shared->mac_regions[2].size = __pa(&__bss_end) - __pa(&__bss_start);
 
         /*
          * MAC domains and other Xen memory
index c8541813ed75a0b4d97749365ba16bbb0feb20e6..4699a04b79c618568ea47ffb45aae955881f4fb3 100644 (file)
@@ -175,6 +175,7 @@ SECTIONS
        *(.bss.percpu.read_mostly)
        . = ALIGN(SMP_CACHE_BYTES);
        __per_cpu_data_end = .;
+       __bss_end = .;
   } :text
   _end = . ;