mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-20 00:11:22 +00:00
m68knommu: clean up linker script
There is a lot of years of collected cruft in the m68knommu linker script. Clean it all up and use the well defined linker script support macros. Support is maintained for building both ROM/FLASH based and RAM based setups. No major changes to section layouts, though the rodata section is now lumped in with the read/write data section. Signed-off-by: Greg Ungerer <gerg@uclinux.org>
This commit is contained in:
parent
10cb54de2c
commit
f84f52a5c1
@ -1,195 +1,93 @@
|
||||
/*
|
||||
* vmlinux.lds.S -- master linker script for m68knommu arch
|
||||
*
|
||||
* (C) Copyright 2002-2006, Greg Ungerer <gerg@snapgear.com>
|
||||
* (C) Copyright 2002-2012, Greg Ungerer <gerg@snapgear.com>
|
||||
*
|
||||
* This linker script is equipped to build either ROM loaded or RAM
|
||||
* run kernels.
|
||||
*/
|
||||
|
||||
#include <asm-generic/vmlinux.lds.h>
|
||||
#if defined(CONFIG_RAMKERNEL)
|
||||
#define KTEXT_ADDR CONFIG_KERNELBASE
|
||||
#endif
|
||||
#if defined(CONFIG_ROMKERNEL)
|
||||
#define KTEXT_ADDR CONFIG_ROMSTART
|
||||
#define KDATA_ADDR CONFIG_KERNELBASE
|
||||
#define LOAD_OFFSET KDATA_ADDR + (ADDR(.text) + SIZEOF(.text))
|
||||
#endif
|
||||
|
||||
#include <asm/page.h>
|
||||
#include <asm/thread_info.h>
|
||||
|
||||
#if defined(CONFIG_RAMKERNEL)
|
||||
#define RAM_START CONFIG_KERNELBASE
|
||||
#define RAM_LENGTH (CONFIG_RAMBASE + CONFIG_RAMSIZE - CONFIG_KERNELBASE)
|
||||
#define TEXT ram
|
||||
#define DATA ram
|
||||
#define INIT ram
|
||||
#define BSSS ram
|
||||
#endif
|
||||
#if defined(CONFIG_ROMKERNEL) || defined(CONFIG_HIMEMKERNEL)
|
||||
#define RAM_START CONFIG_RAMBASE
|
||||
#define RAM_LENGTH CONFIG_RAMSIZE
|
||||
#define ROMVEC_START CONFIG_ROMVEC
|
||||
#define ROMVEC_LENGTH CONFIG_ROMVECSIZE
|
||||
#define ROM_START CONFIG_ROMSTART
|
||||
#define ROM_LENGTH CONFIG_ROMSIZE
|
||||
#define TEXT rom
|
||||
#define DATA ram
|
||||
#define INIT ram
|
||||
#define BSSS ram
|
||||
#endif
|
||||
|
||||
#ifndef DATA_ADDR
|
||||
#define DATA_ADDR
|
||||
#endif
|
||||
|
||||
#include <asm-generic/vmlinux.lds.h>
|
||||
|
||||
OUTPUT_ARCH(m68k)
|
||||
ENTRY(_start)
|
||||
|
||||
MEMORY {
|
||||
ram : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
|
||||
#ifdef ROM_START
|
||||
romvec : ORIGIN = ROMVEC_START, LENGTH = ROMVEC_LENGTH
|
||||
rom : ORIGIN = ROM_START, LENGTH = ROM_LENGTH
|
||||
#endif
|
||||
}
|
||||
|
||||
jiffies = jiffies_64 + 4;
|
||||
|
||||
SECTIONS {
|
||||
|
||||
#ifdef ROMVEC_START
|
||||
. = ROMVEC_START ;
|
||||
#ifdef CONFIG_ROMVEC
|
||||
. = CONFIG_ROMVEC;
|
||||
.romvec : {
|
||||
__rom_start = . ;
|
||||
__rom_start = .;
|
||||
_romvec = .;
|
||||
*(.romvec)
|
||||
*(.data..initvect)
|
||||
} > romvec
|
||||
}
|
||||
#endif
|
||||
|
||||
. = KTEXT_ADDR;
|
||||
|
||||
_text = .;
|
||||
_stext = .;
|
||||
.text : {
|
||||
_text = .;
|
||||
_stext = . ;
|
||||
HEAD_TEXT
|
||||
TEXT_TEXT
|
||||
SCHED_TEXT
|
||||
LOCK_TEXT
|
||||
*(.text..lock)
|
||||
*(.fixup)
|
||||
. = ALIGN(16);
|
||||
}
|
||||
_etext = .;
|
||||
|
||||
. = ALIGN(16); /* Exception table */
|
||||
__start___ex_table = .;
|
||||
*(__ex_table)
|
||||
__stop___ex_table = .;
|
||||
#ifdef KDATA_ADDR
|
||||
. = KDATA_ADDR;
|
||||
#endif
|
||||
|
||||
*(.rodata) *(.rodata.*)
|
||||
*(__vermagic) /* Kernel version magic */
|
||||
*(.rodata1)
|
||||
*(.rodata.str1.1)
|
||||
_sdata = .;
|
||||
RO_DATA_SECTION(PAGE_SIZE)
|
||||
RW_DATA_SECTION(16, PAGE_SIZE, THREAD_SIZE)
|
||||
_edata = .;
|
||||
|
||||
/* Kernel symbol table: Normal symbols */
|
||||
. = ALIGN(4);
|
||||
__start___ksymtab = .;
|
||||
*(SORT(___ksymtab+*))
|
||||
__stop___ksymtab = .;
|
||||
|
||||
/* Kernel symbol table: GPL-only symbols */
|
||||
__start___ksymtab_gpl = .;
|
||||
*(SORT(___ksymtab_gpl+*))
|
||||
__stop___ksymtab_gpl = .;
|
||||
|
||||
/* Kernel symbol table: Normal unused symbols */
|
||||
__start___ksymtab_unused = .;
|
||||
*(SORT(___ksymtab_unused+*))
|
||||
__stop___ksymtab_unused = .;
|
||||
|
||||
/* Kernel symbol table: GPL-only unused symbols */
|
||||
__start___ksymtab_unused_gpl = .;
|
||||
*(SORT(___ksymtab_unused_gpl+*))
|
||||
__stop___ksymtab_unused_gpl = .;
|
||||
|
||||
/* Kernel symbol table: GPL-future symbols */
|
||||
__start___ksymtab_gpl_future = .;
|
||||
*(SORT(___ksymtab_gpl_future+*))
|
||||
__stop___ksymtab_gpl_future = .;
|
||||
|
||||
/* Kernel symbol table: Normal symbols */
|
||||
__start___kcrctab = .;
|
||||
*(SORT(___kcrctab+*))
|
||||
__stop___kcrctab = .;
|
||||
|
||||
/* Kernel symbol table: GPL-only symbols */
|
||||
__start___kcrctab_gpl = .;
|
||||
*(SORT(___kcrctab_gpl+*))
|
||||
__stop___kcrctab_gpl = .;
|
||||
|
||||
/* Kernel symbol table: Normal unused symbols */
|
||||
__start___kcrctab_unused = .;
|
||||
*(SORT(___kcrctab_unused+*))
|
||||
__stop___kcrctab_unused = .;
|
||||
|
||||
/* Kernel symbol table: GPL-only unused symbols */
|
||||
__start___kcrctab_unused_gpl = .;
|
||||
*(SORT(___kcrctab_unused_gpl+*))
|
||||
__stop___kcrctab_unused_gpl = .;
|
||||
|
||||
/* Kernel symbol table: GPL-future symbols */
|
||||
__start___kcrctab_gpl_future = .;
|
||||
*(SORT(___kcrctab_gpl_future+*))
|
||||
__stop___kcrctab_gpl_future = .;
|
||||
|
||||
/* Kernel symbol table: strings */
|
||||
*(__ksymtab_strings)
|
||||
|
||||
/* Built-in module parameters */
|
||||
. = ALIGN(4) ;
|
||||
__start___param = .;
|
||||
*(__param)
|
||||
__stop___param = .;
|
||||
|
||||
/* Built-in module versions */
|
||||
. = ALIGN(4) ;
|
||||
__start___modver = .;
|
||||
*(__modver)
|
||||
__stop___modver = .;
|
||||
|
||||
. = ALIGN(4) ;
|
||||
_etext = . ;
|
||||
} > TEXT
|
||||
|
||||
.data DATA_ADDR : {
|
||||
. = ALIGN(4);
|
||||
_sdata = . ;
|
||||
DATA_DATA
|
||||
CACHELINE_ALIGNED_DATA(32)
|
||||
PAGE_ALIGNED_DATA(PAGE_SIZE)
|
||||
*(.data..shared_aligned)
|
||||
INIT_TASK_DATA(THREAD_SIZE)
|
||||
_edata = . ;
|
||||
} > DATA
|
||||
EXCEPTION_TABLE(16)
|
||||
NOTES
|
||||
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
__init_begin = .;
|
||||
INIT_TEXT_SECTION(PAGE_SIZE)
|
||||
INIT_DATA_SECTION(16)
|
||||
PERCPU_SECTION(16)
|
||||
.m68k_fixup : {
|
||||
__start_fixup = .;
|
||||
*(.m68k_fixup)
|
||||
__stop_fixup = .;
|
||||
} > DATA
|
||||
NOTES > DATA
|
||||
|
||||
.init.text : {
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
__init_begin = .;
|
||||
} > INIT
|
||||
INIT_TEXT_SECTION(PAGE_SIZE) > INIT
|
||||
INIT_DATA_SECTION(16) > INIT
|
||||
}
|
||||
.init.data : {
|
||||
. = ALIGN(PAGE_SIZE);
|
||||
__init_end = .;
|
||||
} > INIT
|
||||
}
|
||||
|
||||
.bss : {
|
||||
. = ALIGN(4);
|
||||
_sbss = . ;
|
||||
*(.bss)
|
||||
*(COMMON)
|
||||
. = ALIGN(4) ;
|
||||
_ebss = . ;
|
||||
_end = . ;
|
||||
} > BSSS
|
||||
_sbss = .;
|
||||
BSS_SECTION(0, 0, 0)
|
||||
_ebss = .;
|
||||
|
||||
_end = .;
|
||||
|
||||
STABS_DEBUG
|
||||
.comment 0 : { *(.comment) }
|
||||
|
||||
/* Sections to be discarded */
|
||||
DISCARDS
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user