blob: 40e02d9c38b4df4bac25bf659d44885dd99f9fa8 [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * vmlinux.lds.S -- master linker script for m68knommu arch
3 *
Greg Ungererf84f52a2012-01-05 15:51:13 +10004 * (C) Copyright 2002-2012, Greg Ungerer <gerg@snapgear.com>
Linus Torvalds1da177e2005-04-16 15:20:36 -07005 *
Lucas De Marchi25985ed2011-03-30 22:57:33 -03006 * This linker script is equipped to build either ROM loaded or RAM
Greg Ungerer1c952af2006-06-28 16:44:14 +10007 * run kernels.
Linus Torvalds1da177e2005-04-16 15:20:36 -07008 */
9
Greg Ungererf84f52a2012-01-05 15:51:13 +100010#if defined(CONFIG_RAMKERNEL)
11#define KTEXT_ADDR CONFIG_KERNELBASE
12#endif
13#if defined(CONFIG_ROMKERNEL)
14#define KTEXT_ADDR CONFIG_ROMSTART
15#define KDATA_ADDR CONFIG_KERNELBASE
16#define LOAD_OFFSET KDATA_ADDR + (ADDR(.text) + SIZEOF(.text))
17#endif
18
Tim Abbottf4bed4f2009-10-18 13:23:49 -040019#include <asm/page.h>
Tim Abbott49612a52009-10-18 13:23:51 -040020#include <asm/thread_info.h>
Greg Ungererf84f52a2012-01-05 15:51:13 +100021#include <asm-generic/vmlinux.lds.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070022
23OUTPUT_ARCH(m68k)
24ENTRY(_start)
25
Linus Torvalds1da177e2005-04-16 15:20:36 -070026jiffies = jiffies_64 + 4;
27
28SECTIONS {
29
Greg Ungererf84f52a2012-01-05 15:51:13 +100030#ifdef CONFIG_ROMVEC
31 . = CONFIG_ROMVEC;
Linus Torvalds1da177e2005-04-16 15:20:36 -070032 .romvec : {
Greg Ungererf84f52a2012-01-05 15:51:13 +100033 __rom_start = .;
Linus Torvalds1da177e2005-04-16 15:20:36 -070034 _romvec = .;
Greg Ungererf84f52a2012-01-05 15:51:13 +100035 *(.romvec)
Denys Vlasenko2c31c342010-02-20 01:03:54 +010036 *(.data..initvect)
Greg Ungererf84f52a2012-01-05 15:51:13 +100037 }
Linus Torvalds1da177e2005-04-16 15:20:36 -070038#endif
39
Greg Ungererf84f52a2012-01-05 15:51:13 +100040 . = KTEXT_ADDR;
41
42 _text = .;
43 _stext = .;
Linus Torvalds1da177e2005-04-16 15:20:36 -070044 .text : {
Greg Ungerer9b0e7412008-07-11 15:29:36 +100045 HEAD_TEXT
Sam Ravnborg76647092007-05-13 00:31:33 +020046 TEXT_TEXT
Linus Torvalds1da177e2005-04-16 15:20:36 -070047 SCHED_TEXT
Sebastian Siewior779125c2008-05-01 12:16:46 +100048 LOCK_TEXT
Greg Ungerered865e32011-10-19 13:50:35 +100049 *(.fixup)
Greg Ungererf84f52a2012-01-05 15:51:13 +100050 . = ALIGN(16);
51 }
52 _etext = .;
Linus Torvalds1da177e2005-04-16 15:20:36 -070053
Greg Ungererf84f52a2012-01-05 15:51:13 +100054#ifdef KDATA_ADDR
55 . = KDATA_ADDR;
56#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070057
Greg Ungererf84f52a2012-01-05 15:51:13 +100058 _sdata = .;
59 RO_DATA_SECTION(PAGE_SIZE)
60 RW_DATA_SECTION(16, PAGE_SIZE, THREAD_SIZE)
61 _edata = .;
Linus Torvalds1da177e2005-04-16 15:20:36 -070062
Greg Ungererf84f52a2012-01-05 15:51:13 +100063 EXCEPTION_TABLE(16)
64 NOTES
Linus Torvalds1da177e2005-04-16 15:20:36 -070065
Greg Ungererf84f52a2012-01-05 15:51:13 +100066 . = ALIGN(PAGE_SIZE);
67 __init_begin = .;
68 INIT_TEXT_SECTION(PAGE_SIZE)
69 INIT_DATA_SECTION(16)
70 PERCPU_SECTION(16)
Greg Ungerered865e32011-10-19 13:50:35 +100071 .m68k_fixup : {
72 __start_fixup = .;
73 *(.m68k_fixup)
74 __stop_fixup = .;
Greg Ungererf84f52a2012-01-05 15:51:13 +100075 }
Tim Abbott53749f72009-10-18 13:23:55 -040076 .init.data : {
Tim Abbottf4bed4f2009-10-18 13:23:49 -040077 . = ALIGN(PAGE_SIZE);
Linus Torvalds1da177e2005-04-16 15:20:36 -070078 __init_end = .;
Greg Ungererf84f52a2012-01-05 15:51:13 +100079 }
Linus Torvalds1da177e2005-04-16 15:20:36 -070080
Greg Ungererf84f52a2012-01-05 15:51:13 +100081 _sbss = .;
82 BSS_SECTION(0, 0, 0)
83 _ebss = .;
Linus Torvalds1da177e2005-04-16 15:20:36 -070084
Greg Ungererf84f52a2012-01-05 15:51:13 +100085 _end = .;
86
87 STABS_DEBUG
88 .comment 0 : { *(.comment) }
89
90 /* Sections to be discarded */
Tejun Heo023bf6f2009-07-09 11:27:40 +090091 DISCARDS
Linus Torvalds1da177e2005-04-16 15:20:36 -070092}
93