linux/arch/avr32/kernel/vmlinux.lds.S
<<
>>
Prefs
   1/*
   2 * AVR32 linker script for the Linux kernel
   3 *
   4 * Copyright (C) 2004-2006 Atmel Corporation
   5 *
   6 * This program is free software; you can redistribute it and/or modify
   7 * it under the terms of the GNU General Public License version 2 as
   8 * published by the Free Software Foundation.
   9 */
  10#define LOAD_OFFSET 0x00000000
  11#include <asm-generic/vmlinux.lds.h>
  12#include <asm/cache.h>
  13#include <asm/thread_info.h>
  14
  15OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
  16OUTPUT_ARCH(avr32)
  17ENTRY(_start)
  18
  19/* Big endian */
  20jiffies = jiffies_64 + 4;
  21
  22SECTIONS
  23{
  24        . = CONFIG_ENTRY_ADDRESS;
  25        .init           : AT(ADDR(.init) - LOAD_OFFSET) {
  26                _stext = .;
  27                __init_begin = .;
  28                        _sinittext = .;
  29                        *(.text.reset)
  30                        INIT_TEXT
  31                        /*
  32                         * .exit.text is discarded at runtime, not
  33                         * link time, to deal with references from
  34                         * __bug_table
  35                         */
  36                        EXIT_TEXT
  37                        _einittext = .;
  38                . = ALIGN(4);
  39                __tagtable_begin = .;
  40                        *(.taglist.init)
  41                __tagtable_end = .;
  42                        INIT_DATA
  43                . = ALIGN(16);
  44                __setup_start = .;
  45                        *(.init.setup)
  46                __setup_end = .;
  47                . = ALIGN(4);
  48                __initcall_start = .;
  49                        INITCALLS
  50                __initcall_end = .;
  51                __con_initcall_start = .;
  52                        *(.con_initcall.init)
  53                __con_initcall_end = .;
  54                __security_initcall_start = .;
  55                        *(.security_initcall.init)
  56                __security_initcall_end = .;
  57#ifdef CONFIG_BLK_DEV_INITRD
  58                . = ALIGN(32);
  59                __initramfs_start = .;
  60                        *(.init.ramfs)
  61                __initramfs_end = .;
  62#endif
  63                . = ALIGN(PAGE_SIZE);
  64                __init_end = .;
  65        }
  66
  67        .text           : AT(ADDR(.text) - LOAD_OFFSET) {
  68                _evba = .;
  69                _text = .;
  70                *(.ex.text)
  71                . = 0x50;
  72                *(.tlbx.ex.text)
  73                . = 0x60;
  74                *(.tlbr.ex.text)
  75                . = 0x70;
  76                *(.tlbw.ex.text)
  77                . = 0x100;
  78                *(.scall.text)
  79                *(.irq.text)
  80                KPROBES_TEXT
  81                TEXT_TEXT
  82                SCHED_TEXT
  83                LOCK_TEXT
  84                *(.fixup)
  85                *(.gnu.warning)
  86                _etext = .;
  87        } = 0xd703d703
  88
  89        . = ALIGN(4);
  90        __ex_table      : AT(ADDR(__ex_table) - LOAD_OFFSET) {
  91                __start___ex_table = .;
  92                *(__ex_table)
  93                __stop___ex_table = .;
  94        }
  95
  96        BUG_TABLE
  97
  98        RODATA
  99
 100        . = ALIGN(THREAD_SIZE);
 101
 102        .data           : AT(ADDR(.data) - LOAD_OFFSET) {
 103                _data = .;
 104                _sdata = .;
 105                /*
 106                 * First, the init task union, aligned to an 8K boundary.
 107                 */
 108                *(.data.init_task)
 109
 110                /* Then, the cacheline aligned data */
 111                . = ALIGN(L1_CACHE_BYTES);
 112                *(.data.cacheline_aligned)
 113
 114                /* And the rest... */
 115                *(.data.rel*)
 116                DATA_DATA
 117                CONSTRUCTORS
 118
 119                _edata = .;
 120        }
 121
 122
 123        . = ALIGN(8);
 124        .bss            : AT(ADDR(.bss) - LOAD_OFFSET) {
 125                __bss_start = .;
 126                *(.bss)
 127                *(COMMON)
 128                . = ALIGN(8);
 129                __bss_stop = .;
 130                _end = .;
 131        }
 132
 133        /* When something in the kernel is NOT compiled as a module, the module
 134         * cleanup code and data are put into these segments. Both can then be
 135         * thrown away, as cleanup code is never called unless it's a module.
 136         */
 137        /DISCARD/               : {
 138                EXIT_DATA
 139                *(.exitcall.exit)
 140        }
 141
 142        DWARF_DEBUG
 143}
 144
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.