/* * vmlinux.lds.S -- master linker script for m68knommu arch * * (C) Copyright 2002-2006, 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> #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 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 ; .romvec : { __rom_start = . ; _romvec = .; *(.data..initvect) } > romvec #endif .text : { _text = .; _stext = . ; HEAD_TEXT TEXT_TEXT SCHED_TEXT LOCK_TEXT *(.text..lock) . = ALIGN(16); /* Exception table */ __start___ex_table = .; *(__ex_table) __stop___ex_table = .; *(.rodata) *(.rodata.*) *(__vermagic) /* Kernel version magic */ *(__markers_strings) *(.rodata1) *(.rodata.str1.1) /* 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 .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 DISCARDS }