diff options
Diffstat (limited to 'arch/avr32/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/avr32/kernel/vmlinux.lds.S | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/arch/avr32/kernel/vmlinux.lds.S b/arch/avr32/kernel/vmlinux.lds.S new file mode 100644 index 000000000..a4589176b --- /dev/null +++ b/arch/avr32/kernel/vmlinux.lds.S @@ -0,0 +1,88 @@ +/* + * AVR32 linker script for the Linux kernel + * + * Copyright (C) 2004-2006 Atmel Corporation + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ +#define LOAD_OFFSET 0x00000000 +#include <asm-generic/vmlinux.lds.h> +#include <asm/cache.h> +#include <asm/thread_info.h> + +OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32") +OUTPUT_ARCH(avr32) +ENTRY(_start) + +/* Big endian */ +jiffies = jiffies_64 + 4; + +SECTIONS +{ + . = CONFIG_ENTRY_ADDRESS; + .init : AT(ADDR(.init) - LOAD_OFFSET) { + _text = .; + __init_begin = .; + _sinittext = .; + *(.text.reset) + INIT_TEXT + /* + * .exit.text is discarded at runtime, not + * link time, to deal with references from + * __bug_table + */ + EXIT_TEXT + _einittext = .; + . = ALIGN(4); + __tagtable_begin = .; + *(.taglist.init) + __tagtable_end = .; + } + INIT_DATA_SECTION(16) + . = ALIGN(PAGE_SIZE); + __init_end = .; + + .text : AT(ADDR(.text) - LOAD_OFFSET) { + _evba = .; + _stext = .; + *(.ex.text) + *(.irq.text) + KPROBES_TEXT + TEXT_TEXT + SCHED_TEXT + LOCK_TEXT + *(.fixup) + *(.gnu.warning) + _etext = .; + } = 0xd703d703 + + EXCEPTION_TABLE(4) + RODATA + + .data : AT(ADDR(.data) - LOAD_OFFSET) { + _data = .; + _sdata = .; + + INIT_TASK_DATA(THREAD_SIZE) + PAGE_ALIGNED_DATA(PAGE_SIZE); + CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) + *(.data.rel*) + DATA_DATA + CONSTRUCTORS + + _edata = .; + } + + BSS_SECTION(0, 8, 8) + _end = .; + + DWARF_DEBUG + + /* When something in the kernel is NOT compiled as a module, the module + * cleanup code and data are put into these segments. Both can then be + * thrown away, as cleanup code is never called unless it's a module. + */ + DISCARDS +} |