📄 vmlinux.lds.s
字号:
/* * arch/v850/vmlinux.lds.S -- kernel linker script for v850 platforms * * Copyright (C) 2002,03,04,05 NEC Electronics Corporation * Copyright (C) 2002,03,04,05 Miles Bader <miles@gnu.org> * * This file is subject to the terms and conditions of the GNU General * Public License. See the file COPYING in the main directory of this * archive for more details. * * Written by Miles Bader <miles@gnu.org> */#include <linux/config.h>#define VMLINUX_SYMBOL(_sym_) _##_sym_#include <asm-generic/vmlinux.lds.h>/* For most platforms, this will define useful things like RAM addr/size. */#include <asm/machdep.h>/* The following macros contain the usual definitions for various data areas. The prefix `RAMK_' is used to indicate macros suitable for kernels loaded into RAM, and similarly `ROMK_' for ROM-resident kernels. Note that all symbols are prefixed with an extra `_' for compatibility with the v850 toolchain. */ /* Interrupt vectors. */#define INTV_CONTENTS \ . = ALIGN (0x10) ; \ __intv_start = . ; \ *(.intv.reset) /* Reset vector */ \ . = __intv_start + 0x10 ; \ *(.intv.common) /* Vectors common to all v850e proc */\ . = __intv_start + 0x80 ; \ *(.intv.mach) /* Machine-specific int. vectors. */ \ __intv_end = . ;#define RODATA_CONTENTS \ . = ALIGN (16) ; \ *(.rodata) *(.rodata.*) \ *(__vermagic) /* Kernel version magic */ \ *(.rodata1) \ /* PCI quirks */ \ ___start_pci_fixups_early = . ; \ *(.pci_fixup_early) \ ___end_pci_fixups_early = . ; \ ___start_pci_fixups_header = . ; \ *(.pci_fixup_header) \ ___end_pci_fixups_header = . ; \ ___start_pci_fixups_final = . ; \ *(.pci_fixup_final) \ ___end_pci_fixups_final = . ; \ ___start_pci_fixups_enable = . ; \ *(.pci_fixup_enable) \ ___end_pci_fixups_enable = . ; \ /* Kernel symbol table: Normal symbols */ \ ___start___ksymtab = .; \ *(__ksymtab) \ ___stop___ksymtab = .; \ /* Kernel symbol table: GPL-only symbols */ \ ___start___ksymtab_gpl = .; \ *(__ksymtab_gpl) \ ___stop___ksymtab_gpl = .; \ /* Kernel symbol table: strings */ \ *(__ksymtab_strings) \ /* Kernel symbol table: Normal symbols */ \ ___start___kcrctab = .; \ *(__kcrctab) \ ___stop___kcrctab = .; \ /* Kernel symbol table: GPL-only symbols */ \ ___start___kcrctab_gpl = .; \ *(__kcrctab_gpl) \ ___stop___kcrctab_gpl = .; \ /* Built-in module parameters */ \ . = ALIGN (4) ; \ ___start___param = .; \ *(__param) \ ___stop___param = .;/* Kernel text segment, and some constant data areas. */#define TEXT_CONTENTS \ __stext = . ; \ *(.text) \ SCHED_TEXT \ *(.exit.text) /* 2.5 convention */ \ *(.text.exit) /* 2.4 convention */ \ *(.text.lock) \ *(.exitcall.exit) \ __real_etext = . ; /* There may be data after here. */ \ RODATA_CONTENTS \ . = ALIGN (4) ; \ *(.call_table_data) \ *(.call_table_text) \ . = ALIGN (16) ; /* Exception table. */ \ ___start___ex_table = . ; \ *(__ex_table) \ ___stop___ex_table = . ; \ . = ALIGN (4) ; \ __etext = . ;/* Kernel data segment. */#define DATA_CONTENTS \ __sdata = . ; \ *(.data) \ *(.exit.data) /* 2.5 convention */ \ *(.data.exit) /* 2.4 convention */ \ . = ALIGN (16) ; \ *(.data.cacheline_aligned) \ . = ALIGN (0x2000) ; \ *(.data.init_task) \ . = ALIGN (0x2000) ; \ __edata = . ;/* Kernel BSS segment. */#define BSS_CONTENTS \ __sbss = . ; \ *(.bss) \ *(COMMON) \ . = ALIGN (4) ; \ __init_stack_end = . ; \ __ebss = . ;/* `initcall' tables. */#define INITCALL_CONTENTS \ . = ALIGN (16) ; \ ___setup_start = . ; \ *(.init.setup) /* 2.5 convention */ \ *(.setup.init) /* 2.4 convention */ \ ___setup_end = . ; \ ___initcall_start = . ; \ *(.initcall.init) \ *(.initcall1.init) \ *(.initcall2.init) \ *(.initcall3.init) \ *(.initcall4.init) \ *(.initcall5.init) \ *(.initcall6.init) \ *(.initcall7.init) \ . = ALIGN (4) ; \ ___initcall_end = . ; \ ___con_initcall_start = .; \ *(.con_initcall.init) \ ___con_initcall_end = .;/* Contents of `init' section for a kernel that's loaded into RAM. */#define RAMK_INIT_CONTENTS \ RAMK_INIT_CONTENTS_NO_END \ __init_end = . ;/* Same as RAMK_INIT_CONTENTS, but doesn't define the `__init_end' symbol. */#define RAMK_INIT_CONTENTS_NO_END \ . = ALIGN (4096) ; \ __init_start = . ; \ __sinittext = .; \ *(.init.text) /* 2.5 convention */ \ __einittext = .; \ *(.init.data) \ *(.text.init) /* 2.4 convention */ \ *(.data.init) \ INITCALL_CONTENTS \ INITRAMFS_CONTENTS/* The contents of `init' section for a ROM-resident kernel which should go into RAM. */ #define ROMK_INIT_RAM_CONTENTS \ . = ALIGN (4096) ; \ __init_start = . ; \ *(.init.data) /* 2.5 convention */ \ *(.data.init) /* 2.4 convention */ \ __init_end = . ; \ . = ALIGN (4096) ;/* The contents of `init' section for a ROM-resident kernel which should go into ROM. */ #define ROMK_INIT_ROM_CONTENTS \ _sinittext = .; \ *(.init.text) /* 2.5 convention */ \ _einittext = .; \ *(.text.init) /* 2.4 convention */ \ INITCALL_CONTENTS \ INITRAMFS_CONTENTS/* A root filesystem image, for kernels with an embedded root filesystem. */#define ROOT_FS_CONTENTS \ __root_fs_image_start = . ; \ *(.root) \ __root_fs_image_end = . ;/* The initramfs archive. */#define INITRAMFS_CONTENTS \ . = ALIGN (4) ; \ ___initramfs_start = . ; \ *(.init.ramfs) \ ___initramfs_end = . ;/* Where the initial bootmap (bitmap for the boot-time memory allocator) should be place. */#define BOOTMAP_CONTENTS \ . = ALIGN (4096) ; \ __bootmap = . ; \ . = . + 4096 ; /* enough for 128MB. *//* The contents of a `typical' kram area for a kernel in RAM. */#define RAMK_KRAM_CONTENTS \ __kram_start = . ; \ TEXT_CONTENTS \ DATA_CONTENTS \ BSS_CONTENTS \ RAMK_INIT_CONTENTS \ __kram_end = . ; \ BOOTMAP_CONTENTS/* Define output sections normally used for a ROM-resident kernel. ROM and RAM should be appropriate memory areas to use for kernel ROM and RAM data. This assumes that ROM starts at 0 (and thus can hold the interrupt vectors). */#define ROMK_SECTIONS(ROM, RAM) \ .rom : { \ INTV_CONTENTS \ TEXT_CONTENTS \ ROMK_INIT_ROM_CONTENTS \ ROOT_FS_CONTENTS \ } > ROM \ \ __rom_copy_src_start = . ; \ \ .data : { \ __kram_start = . ; \ __rom_copy_dst_start = . ; \ DATA_CONTENTS \ ROMK_INIT_RAM_CONTENTS \ __rom_copy_dst_end = . ; \ } > RAM AT> ROM \ \ .bss ALIGN (4) : { \ BSS_CONTENTS \ __kram_end = . ; \ BOOTMAP_CONTENTS \ } > RAM/* The 32-bit variable `jiffies' is just the lower 32-bits of `jiffies_64'. */_jiffies = _jiffies_64 ;/* Include an appropriate platform-dependent linker-script (which usually should use the above macros to do most of the work). */#ifdef CONFIG_V850E_SIM# include "sim.ld"#endif#ifdef CONFIG_V850E2_SIM85E2# include "sim85e2.ld"#endif#ifdef CONFIG_V850E2_FPGA85E2C# include "fpga85e2c.ld"#endif#ifdef CONFIG_V850E2_ANNA# ifdef CONFIG_ROM_KERNEL# include "anna-rom.ld"# else# include "anna.ld"# endif#endif#ifdef CONFIG_V850E_AS85EP1# ifdef CONFIG_ROM_KERNEL# include "as85ep1-rom.ld"# else# include "as85ep1.ld"# endif#endif#ifdef CONFIG_RTE_CB_MA1# ifdef CONFIG_ROM_KERNEL# include "rte_ma1_cb-rom.ld"# else# include "rte_ma1_cb.ld"# endif#endif#ifdef CONFIG_RTE_CB_NB85E# ifdef CONFIG_ROM_KERNEL# include "rte_nb85e_cb-rom.ld"# elif defined(CONFIG_RTE_CB_MULTI)# include "rte_nb85e_cb-multi.ld"# else# include "rte_nb85e_cb.ld"# endif#endif#ifdef CONFIG_RTE_CB_ME2# include "rte_me2_cb.ld"#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -