blob: a4589176bed5d7940d1f0e66d144a933892557f5 [file] [log] [blame]
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -07001/*
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>
Haavard Skinnemoen7cf6ac22007-09-17 11:08:28 +020012#include <asm/cache.h>
13#include <asm/thread_info.h>
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070014
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) {
Jiang Liu2e555f82013-07-03 15:03:34 -070026 _text = .;
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070027 __init_begin = .;
28 _sinittext = .;
29 *(.text.reset)
Sam Ravnborg01ba2bd2008-01-20 14:15:03 +010030 INIT_TEXT
Haavard Skinnemoen623b0352007-03-13 17:59:11 +010031 /*
32 * .exit.text is discarded at runtime, not
33 * link time, to deal with references from
34 * __bug_table
35 */
Sam Ravnborg01ba2bd2008-01-20 14:15:03 +010036 EXIT_TEXT
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070037 _einittext = .;
38 . = ALIGN(4);
39 __tagtable_begin = .;
Haavard Skinnemoenb3cfe0c2007-05-09 09:26:18 +020040 *(.taglist.init)
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070041 __tagtable_end = .;
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070042 }
Nelson Elhage20920582009-09-16 12:40:47 -040043 INIT_DATA_SECTION(16)
44 . = ALIGN(PAGE_SIZE);
45 __init_end = .;
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070046
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070047 .text : AT(ADDR(.text) - LOAD_OFFSET) {
48 _evba = .;
Jiang Liu2e555f82013-07-03 15:03:34 -070049 _stext = .;
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070050 *(.ex.text)
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070051 *(.irq.text)
Haavard Skinnemoen2507bc12007-11-28 15:04:01 +010052 KPROBES_TEXT
Sam Ravnborg76647092007-05-13 00:31:33 +020053 TEXT_TEXT
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070054 SCHED_TEXT
55 LOCK_TEXT
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070056 *(.fixup)
57 *(.gnu.warning)
58 _etext = .;
59 } = 0xd703d703
60
Nelson Elhage20920582009-09-16 12:40:47 -040061 EXCEPTION_TABLE(4)
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070062 RODATA
63
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070064 .data : AT(ADDR(.data) - LOAD_OFFSET) {
65 _data = .;
66 _sdata = .;
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070067
Nelson Elhage20920582009-09-16 12:40:47 -040068 INIT_TASK_DATA(THREAD_SIZE)
69 PAGE_ALIGNED_DATA(PAGE_SIZE);
70 CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070071 *(.data.rel*)
Sam Ravnborgca967252007-05-17 13:38:44 +020072 DATA_DATA
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070073 CONSTRUCTORS
74
75 _edata = .;
76 }
77
Nelson Elhage20920582009-09-16 12:40:47 -040078 BSS_SECTION(0, 8, 8)
79 _end = .;
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070080
Tejun Heo023bf6f2009-07-09 11:27:40 +090081 DWARF_DEBUG
82
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070083 /* When something in the kernel is NOT compiled as a module, the module
84 * cleanup code and data are put into these segments. Both can then be
85 * thrown away, as cleanup code is never called unless it's a module.
86 */
Tejun Heo023bf6f2009-07-09 11:27:40 +090087 DISCARDS
Haavard Skinnemoen5f97f7f2006-09-25 23:32:13 -070088}