2 * AVR32 linker script for the Linux kernel
4 * Copyright (C) 2004-2006 Atmel Corporation
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.
10 #define LOAD_OFFSET 0x00000000
11 #include <asm-generic/vmlinux.lds.h>
12 #include <asm/cache.h>
13 #include <asm/thread_info.h>
15 OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
20 jiffies = jiffies_64 + 4;
24 . = CONFIG_ENTRY_ADDRESS;
25 .init : AT(ADDR(.init) - LOAD_OFFSET) {
32 * .exit.text is discarded at runtime, not
33 * link time, to deal with references from
51 __con_initcall_start = .;
53 __con_initcall_end = .;
54 __security_initcall_start = .;
55 *(.security_initcall.init)
56 __security_initcall_end = .;
57 #ifdef CONFIG_BLK_DEV_INITRD
59 __initramfs_start = .;
67 .text : AT(ADDR(.text) - LOAD_OFFSET) {
82 __ex_table : AT(ADDR(__ex_table) - LOAD_OFFSET) {
83 __start___ex_table = .;
85 __stop___ex_table = .;
90 . = ALIGN(THREAD_SIZE);
92 .data : AT(ADDR(.data) - LOAD_OFFSET) {
96 * First, the init task union, aligned to an 8K boundary.
100 /* Then, the page-aligned data */
101 . = ALIGN(PAGE_SIZE);
102 *(.data.page_aligned)
104 /* Then, the cacheline aligned data */
105 . = ALIGN(L1_CACHE_BYTES);
106 *(.data.cacheline_aligned)
108 /* And the rest... */
118 .bss : AT(ADDR(.bss) - LOAD_OFFSET) {
127 /* When something in the kernel is NOT compiled as a module, the module
128 * cleanup code and data are put into these segments. Both can then be
129 * thrown away, as cleanup code is never called unless it's a module.