提交 363737d6 编写于 作者: G Geert Uytterhoeven

mtd/uclinux: Use generic __bss_stop instead of _ebss

The standard (see BSS_SECTION() in <asm-generic/vmlinux.lds.h> and
<asm-generic/sections.h>) symbol for the end of BSS is __bss_stop.
This allows to remove all local declarations that have been added to
several architectures just to please CONFIG_MTD_UCLINUX.
Signed-off-by: NGeert Uytterhoeven <geert@linux-m68k.org>
Acked-by: NPaul Mundt <lethal@linux-sh.org>
Acked-by: NMike Frysinger <vapier@gentoo.org>
Acked-by: NMichal Simek <monstr@monstr.eu>
Acked-by: NGreg Ungerer <gerg@uclinux.org>
上级 dfe1d26d
...@@ -52,7 +52,6 @@ EXPORT_SYMBOL(reserved_mem_dcache_on); ...@@ -52,7 +52,6 @@ EXPORT_SYMBOL(reserved_mem_dcache_on);
#ifdef CONFIG_MTD_UCLINUX #ifdef CONFIG_MTD_UCLINUX
extern struct map_info uclinux_ram_map; extern struct map_info uclinux_ram_map;
unsigned long memory_mtd_end, memory_mtd_start, mtd_size; unsigned long memory_mtd_end, memory_mtd_start, mtd_size;
unsigned long _ebss;
EXPORT_SYMBOL(memory_mtd_end); EXPORT_SYMBOL(memory_mtd_end);
EXPORT_SYMBOL(memory_mtd_start); EXPORT_SYMBOL(memory_mtd_start);
EXPORT_SYMBOL(mtd_size); EXPORT_SYMBOL(mtd_size);
......
...@@ -18,10 +18,6 @@ extern char _ssbss[], _esbss[]; ...@@ -18,10 +18,6 @@ extern char _ssbss[], _esbss[];
extern unsigned long __ivt_start[], __ivt_end[]; extern unsigned long __ivt_start[], __ivt_end[];
extern char _etext[], _stext[]; extern char _etext[], _stext[];
# ifdef CONFIG_MTD_UCLINUX
extern char *_ebss;
# endif
extern u32 _fdt_start[], _fdt_end[]; extern u32 _fdt_start[], _fdt_end[];
# endif /* !__ASSEMBLY__ */ # endif /* !__ASSEMBLY__ */
......
...@@ -21,9 +21,6 @@ ...@@ -21,9 +21,6 @@
#include <linux/ftrace.h> #include <linux/ftrace.h>
#include <linux/uaccess.h> #include <linux/uaccess.h>
extern char *_ebss;
EXPORT_SYMBOL_GPL(_ebss);
#ifdef CONFIG_FUNCTION_TRACER #ifdef CONFIG_FUNCTION_TRACER
extern void _mcount(void); extern void _mcount(void);
EXPORT_SYMBOL(_mcount); EXPORT_SYMBOL(_mcount);
......
...@@ -121,7 +121,7 @@ void __init machine_early_init(const char *cmdline, unsigned int ram, ...@@ -121,7 +121,7 @@ void __init machine_early_init(const char *cmdline, unsigned int ram,
/* Move ROMFS out of BSS before clearing it */ /* Move ROMFS out of BSS before clearing it */
if (romfs_size > 0) { if (romfs_size > 0) {
memmove(&_ebss, (int *)romfs_base, romfs_size); memmove(&__bss_stop, (int *)romfs_base, romfs_size);
klimit += romfs_size; klimit += romfs_size;
} }
#endif #endif
...@@ -165,7 +165,7 @@ void __init machine_early_init(const char *cmdline, unsigned int ram, ...@@ -165,7 +165,7 @@ void __init machine_early_init(const char *cmdline, unsigned int ram,
BUG_ON(romfs_size < 0); /* What else can we do? */ BUG_ON(romfs_size < 0); /* What else can we do? */
printk("Moved 0x%08x bytes from 0x%08x to 0x%08x\n", printk("Moved 0x%08x bytes from 0x%08x to 0x%08x\n",
romfs_size, romfs_base, (unsigned)&_ebss); romfs_size, romfs_base, (unsigned)&__bss_stop);
printk("New klimit: 0x%08x\n", (unsigned)klimit); printk("New klimit: 0x%08x\n", (unsigned)klimit);
#endif #endif
......
...@@ -131,7 +131,6 @@ SECTIONS { ...@@ -131,7 +131,6 @@ SECTIONS {
*(COMMON) *(COMMON)
. = ALIGN (4) ; . = ALIGN (4) ;
__bss_stop = . ; __bss_stop = . ;
_ebss = . ;
} }
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
_end = .; _end = .;
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
extern long __nosave_begin, __nosave_end; extern long __nosave_begin, __nosave_end;
extern long __machvec_start, __machvec_end; extern long __machvec_start, __machvec_end;
extern char __uncached_start, __uncached_end; extern char __uncached_start, __uncached_end;
extern char _ebss[];
extern char __start_eh_frame[], __stop_eh_frame[]; extern char __start_eh_frame[], __stop_eh_frame[];
#endif /* __ASM_SH_SECTIONS_H */ #endif /* __ASM_SH_SECTIONS_H */
......
...@@ -273,7 +273,7 @@ void __init setup_arch(char **cmdline_p) ...@@ -273,7 +273,7 @@ void __init setup_arch(char **cmdline_p)
data_resource.start = virt_to_phys(_etext); data_resource.start = virt_to_phys(_etext);
data_resource.end = virt_to_phys(_edata)-1; data_resource.end = virt_to_phys(_edata)-1;
bss_resource.start = virt_to_phys(__bss_start); bss_resource.start = virt_to_phys(__bss_start);
bss_resource.end = virt_to_phys(_ebss)-1; bss_resource.end = virt_to_phys(__bss_stop)-1;
#ifdef CONFIG_CMDLINE_OVERWRITE #ifdef CONFIG_CMDLINE_OVERWRITE
strlcpy(command_line, CONFIG_CMDLINE, sizeof(command_line)); strlcpy(command_line, CONFIG_CMDLINE, sizeof(command_line));
......
...@@ -19,7 +19,6 @@ EXPORT_SYMBOL(csum_partial); ...@@ -19,7 +19,6 @@ EXPORT_SYMBOL(csum_partial);
EXPORT_SYMBOL(csum_partial_copy_generic); EXPORT_SYMBOL(csum_partial_copy_generic);
EXPORT_SYMBOL(copy_page); EXPORT_SYMBOL(copy_page);
EXPORT_SYMBOL(__clear_user); EXPORT_SYMBOL(__clear_user);
EXPORT_SYMBOL(_ebss);
EXPORT_SYMBOL(empty_zero_page); EXPORT_SYMBOL(empty_zero_page);
#define DECLARE_EXPORT(name) \ #define DECLARE_EXPORT(name) \
......
...@@ -78,7 +78,6 @@ SECTIONS ...@@ -78,7 +78,6 @@ SECTIONS
. = ALIGN(PAGE_SIZE); . = ALIGN(PAGE_SIZE);
__init_end = .; __init_end = .;
BSS_SECTION(0, PAGE_SIZE, 4) BSS_SECTION(0, PAGE_SIZE, 4)
_ebss = .; /* uClinux MTD sucks */
_end = . ; _end = . ;
STABS_DEBUG STABS_DEBUG
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
* *
* Make sure the stack pointer contains a valid address. Valid * Make sure the stack pointer contains a valid address. Valid
* addresses for kernel stacks are anywhere after the bss * addresses for kernel stacks are anywhere after the bss
* (after _ebss) and anywhere in init_thread_union (init_stack). * (after __bss_stop) and anywhere in init_thread_union (init_stack).
*/ */
#define STACK_CHECK() \ #define STACK_CHECK() \
mov #(THREAD_SIZE >> 10), r0; \ mov #(THREAD_SIZE >> 10), r0; \
...@@ -60,7 +60,7 @@ ...@@ -60,7 +60,7 @@
cmp/hi r2, r1; \ cmp/hi r2, r1; \
bf stack_panic; \ bf stack_panic; \
\ \
/* If sp > _ebss then we're OK. */ \ /* If sp > __bss_stop then we're OK. */ \
mov.l .L_ebss, r1; \ mov.l .L_ebss, r1; \
cmp/hi r1, r15; \ cmp/hi r1, r15; \
bt 1f; \ bt 1f; \
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
cmp/hs r1, r15; \ cmp/hs r1, r15; \
bf stack_panic; \ bf stack_panic; \
\ \
/* If sp > init_stack && sp < _ebss, not OK. */ \ /* If sp > init_stack && sp < __bss_stop, not OK. */ \
add r0, r1; \ add r0, r1; \
cmp/hs r1, r15; \ cmp/hs r1, r15; \
bt stack_panic; \ bt stack_panic; \
...@@ -292,8 +292,6 @@ stack_panic: ...@@ -292,8 +292,6 @@ stack_panic:
nop nop
.align 2 .align 2
.L_ebss:
.long _ebss
.L_init_thread_union: .L_init_thread_union:
.long init_thread_union .long init_thread_union
.Lpanic: .Lpanic:
......
...@@ -19,14 +19,13 @@ ...@@ -19,14 +19,13 @@
#include <linux/mtd/map.h> #include <linux/mtd/map.h>
#include <linux/mtd/partitions.h> #include <linux/mtd/partitions.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/sections.h>
/****************************************************************************/ /****************************************************************************/
extern char _ebss;
struct map_info uclinux_ram_map = { struct map_info uclinux_ram_map = {
.name = "RAM", .name = "RAM",
.phys = (unsigned long)&_ebss, .phys = (unsigned long)__bss_stop,
.size = 0, .size = 0,
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册