tile: normalize global variables exported by vmlinux.lds
Normalize global variables exported by vmlinux.lds to conform usage guidelines from include/asm-generic/sections.h. 1) Use _text to mark the start of the kernel image including the head text, and _stext to mark the start of the .text section. 2) Export mandatory global variables __init_begin and __init_end. Signed-off-by: Jiang Liu <jiang.liu@huawei.com> Acked-by: Chris Metcalf <cmetcalf@tilera.com> Cc: Rusty Russell <rusty@rustcorp.com.au> Cc: Bjorn Helgaas <bhelgaas@google.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Wen Congyang <wency@cn.fujitsu.com> Cc: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
ae49b83dca
commit
40a3b8df7b
|
@ -34,7 +34,7 @@ extern char __sys_cmpxchg_grab_lock[];
|
||||||
extern char __start_atomic_asm_code[], __end_atomic_asm_code[];
|
extern char __start_atomic_asm_code[], __end_atomic_asm_code[];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Handle the discontiguity between _sdata and _stext. */
|
/* Handle the discontiguity between _sdata and _text. */
|
||||||
static inline int arch_is_kernel_data(unsigned long addr)
|
static inline int arch_is_kernel_data(unsigned long addr)
|
||||||
{
|
{
|
||||||
return addr >= (unsigned long)_sdata &&
|
return addr >= (unsigned long)_sdata &&
|
||||||
|
|
|
@ -307,8 +307,8 @@ static void __cpuinit store_permanent_mappings(void)
|
||||||
hv_store_mapping(addr, pages << PAGE_SHIFT, pa);
|
hv_store_mapping(addr, pages << PAGE_SHIFT, pa);
|
||||||
}
|
}
|
||||||
|
|
||||||
hv_store_mapping((HV_VirtAddr)_stext,
|
hv_store_mapping((HV_VirtAddr)_text,
|
||||||
(uint32_t)(_einittext - _stext), 0);
|
(uint32_t)(_einittext - _text), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -27,7 +27,6 @@ SECTIONS
|
||||||
.intrpt1 (LOAD_OFFSET) : AT ( 0 ) /* put at the start of physical memory */
|
.intrpt1 (LOAD_OFFSET) : AT ( 0 ) /* put at the start of physical memory */
|
||||||
{
|
{
|
||||||
_text = .;
|
_text = .;
|
||||||
_stext = .;
|
|
||||||
*(.intrpt1)
|
*(.intrpt1)
|
||||||
} :intrpt1 =0
|
} :intrpt1 =0
|
||||||
|
|
||||||
|
@ -36,6 +35,7 @@ SECTIONS
|
||||||
|
|
||||||
/* Now the real code */
|
/* Now the real code */
|
||||||
. = ALIGN(0x20000);
|
. = ALIGN(0x20000);
|
||||||
|
_stext = .;
|
||||||
.text : AT (ADDR(.text) - LOAD_OFFSET) {
|
.text : AT (ADDR(.text) - LOAD_OFFSET) {
|
||||||
HEAD_TEXT
|
HEAD_TEXT
|
||||||
SCHED_TEXT
|
SCHED_TEXT
|
||||||
|
@ -58,11 +58,13 @@ SECTIONS
|
||||||
#define LOAD_OFFSET PAGE_OFFSET
|
#define LOAD_OFFSET PAGE_OFFSET
|
||||||
|
|
||||||
. = ALIGN(PAGE_SIZE);
|
. = ALIGN(PAGE_SIZE);
|
||||||
|
__init_begin = .;
|
||||||
VMLINUX_SYMBOL(_sinitdata) = .;
|
VMLINUX_SYMBOL(_sinitdata) = .;
|
||||||
INIT_DATA_SECTION(16) :data =0
|
INIT_DATA_SECTION(16) :data =0
|
||||||
PERCPU_SECTION(L2_CACHE_BYTES)
|
PERCPU_SECTION(L2_CACHE_BYTES)
|
||||||
. = ALIGN(PAGE_SIZE);
|
. = ALIGN(PAGE_SIZE);
|
||||||
VMLINUX_SYMBOL(_einitdata) = .;
|
VMLINUX_SYMBOL(_einitdata) = .;
|
||||||
|
__init_end = .;
|
||||||
|
|
||||||
_sdata = .; /* Start of data section */
|
_sdata = .; /* Start of data section */
|
||||||
|
|
||||||
|
|
|
@ -562,7 +562,7 @@ static void __init kernel_physical_mapping_init(pgd_t *pgd_base)
|
||||||
prot = ktext_set_nocache(prot);
|
prot = ktext_set_nocache(prot);
|
||||||
}
|
}
|
||||||
|
|
||||||
BUG_ON(address != (unsigned long)_stext);
|
BUG_ON(address != (unsigned long)_text);
|
||||||
pte = NULL;
|
pte = NULL;
|
||||||
for (; address < (unsigned long)_einittext;
|
for (; address < (unsigned long)_einittext;
|
||||||
pfn++, address += PAGE_SIZE) {
|
pfn++, address += PAGE_SIZE) {
|
||||||
|
|
Loading…
Reference in New Issue