mirror of
https://github.com/torvalds/linux.git
synced 2024-11-08 21:21:47 +00:00
61ce1efe6e
Add a vmlinux.lds.h helper macro for defining the eight-level initcall table, teach all the architectures to use it. This is a prerequisite for a patch which performs initcall synchronisation for multithreaded-probing. Cc: Greg KH <greg@kroah.com> Signed-off-by: Andrew Morton <akpm@osdl.org> [ Added AVR32 as well ] Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
166 lines
2.6 KiB
ArmAsm
166 lines
2.6 KiB
ArmAsm
#define VMLINUX_SYMBOL(_sym_) _##_sym_
|
|
#include <asm-generic/vmlinux.lds.h>
|
|
|
|
/* target memory map */
|
|
#ifdef CONFIG_H8300H_GENERIC
|
|
#define ROMTOP 0x000000
|
|
#define ROMSIZE 0x400000
|
|
#define RAMTOP 0x400000
|
|
#define RAMSIZE 0x400000
|
|
#endif
|
|
|
|
#ifdef CONFIG_H8300H_AKI3068NET
|
|
#define ROMTOP 0x000000
|
|
#define ROMSIZE 0x080000
|
|
#define RAMTOP 0x400000
|
|
#define RAMSIZE 0x200000
|
|
#endif
|
|
|
|
#ifdef CONFIG_H8300H_H8MAX
|
|
#define ROMTOP 0x000000
|
|
#define ROMSIZE 0x080000
|
|
#define RAMTOP 0x400000
|
|
#define RAMSIZE 0x200000
|
|
#endif
|
|
|
|
#ifdef CONFIG_H8300H_SIM
|
|
#define ROMTOP 0x000000
|
|
#define ROMSIZE 0x400000
|
|
#define RAMTOP 0x400000
|
|
#define RAMSIZE 0x400000
|
|
#endif
|
|
|
|
#ifdef CONFIG_H8S_SIM
|
|
#define ROMTOP 0x000000
|
|
#define ROMSIZE 0x400000
|
|
#define RAMTOP 0x400000
|
|
#define RAMSIZE 0x800000
|
|
#endif
|
|
|
|
#ifdef CONFIG_H8S_EDOSK2674
|
|
#define ROMTOP 0x000000
|
|
#define ROMSIZE 0x400000
|
|
#define RAMTOP 0x400000
|
|
#define RAMSIZE 0x800000
|
|
#endif
|
|
|
|
#if defined(CONFIG_H8300H_SIM) || defined(CONFIG_H8S_SIM)
|
|
INPUT(romfs.o)
|
|
#endif
|
|
|
|
_jiffies = _jiffies_64 + 4;
|
|
|
|
ENTRY(__start)
|
|
|
|
SECTIONS
|
|
{
|
|
#if defined(CONFIG_ROMKERNEL)
|
|
. = ROMTOP;
|
|
.vectors :
|
|
{
|
|
__vector = . ;
|
|
*(.vectors*)
|
|
}
|
|
#else
|
|
. = RAMTOP;
|
|
.bootvec :
|
|
{
|
|
*(.bootvec)
|
|
}
|
|
#endif
|
|
.text :
|
|
{
|
|
#if defined(CONFIG_ROMKERNEL)
|
|
*(.int_redirect)
|
|
#endif
|
|
__stext = . ;
|
|
*(.text)
|
|
SCHED_TEXT
|
|
LOCK_TEXT
|
|
__etext = . ;
|
|
. = ALIGN(16); /* Exception table */
|
|
___start___ex_table = .;
|
|
*(__ex_table)
|
|
___stop___ex_table = .;
|
|
}
|
|
|
|
RODATA
|
|
#if defined(CONFIG_ROMKERNEL)
|
|
SECURITY_INIT
|
|
#endif
|
|
ROEND = .;
|
|
#if defined(CONFIG_ROMKERNEL)
|
|
. = RAMTOP;
|
|
.data : AT(ROEND)
|
|
#else
|
|
.data :
|
|
#endif
|
|
{
|
|
__sdata = . ;
|
|
___data_start = . ;
|
|
|
|
. = ALIGN(0x2000) ;
|
|
*(.data.init_task)
|
|
. = ALIGN(0x4) ;
|
|
*(.data)
|
|
. = ALIGN(0x4) ;
|
|
*(.data.*)
|
|
|
|
. = ALIGN(0x4) ;
|
|
___init_begin = .;
|
|
__sinittext = .;
|
|
*(.init.text)
|
|
__einittext = .;
|
|
*(.init.data)
|
|
. = ALIGN(0x4) ;
|
|
___setup_start = .;
|
|
*(.init.setup)
|
|
. = ALIGN(0x4) ;
|
|
___setup_end = .;
|
|
___initcall_start = .;
|
|
INITCALLS
|
|
___initcall_end = .;
|
|
___con_initcall_start = .;
|
|
*(.con_initcall.init)
|
|
___con_initcall_end = .;
|
|
*(.exit.text)
|
|
*(.exit.data)
|
|
. = ALIGN(4);
|
|
___initramfs_start = .;
|
|
*(.init.ramfs)
|
|
___initramfs_end = .;
|
|
. = ALIGN(0x4) ;
|
|
___init_end = .;
|
|
__edata = . ;
|
|
}
|
|
#if defined(CONFIG_RAMKERNEL)
|
|
SECURITY_INIT
|
|
#endif
|
|
__begin_data = LOADADDR(.data);
|
|
.bss :
|
|
{
|
|
. = ALIGN(0x4) ;
|
|
__sbss = . ;
|
|
*(.bss*)
|
|
. = ALIGN(0x4) ;
|
|
*(COMMON)
|
|
. = ALIGN(0x4) ;
|
|
__ebss = . ;
|
|
__end = . ;
|
|
__ramstart = .;
|
|
}
|
|
/DISCARD/ : {
|
|
*(.exitcall.exit)
|
|
}
|
|
.romfs :
|
|
{
|
|
*(.romfs*)
|
|
}
|
|
. = RAMTOP+RAMSIZE;
|
|
.dummy :
|
|
{
|
|
COMMAND_START = . - 0x200 ;
|
|
__ramend = . ;
|
|
}
|
|
}
|