1/* SPDX-License-Identifier: GPL-2.0 */
2/*
3 *	vmlinux.lds.S -- master linker script for m68knommu arch
4 *
5 *	(C) Copyright 2002-2012, Greg Ungerer <gerg@snapgear.com>
6 *
7 *	This linker script is equipped to build either ROM loaded or RAM
8 *	run kernels.
9 */
10
11#if defined(CONFIG_RAMKERNEL)
12#define	KTEXT_ADDR	CONFIG_KERNELBASE
13#endif
14#if defined(CONFIG_ROMKERNEL)
15#define	KTEXT_ADDR	CONFIG_ROMSTART
16#define	KDATA_ADDR	CONFIG_KERNELBASE
17#define	LOAD_OFFSET	KDATA_ADDR + (ADDR(.text) + SIZEOF(.text))
18#endif
19
20#include <asm/page.h>
21#include <asm/thread_info.h>
22#include <asm-generic/vmlinux.lds.h>
23
24OUTPUT_ARCH(m68k)
25ENTRY(_start)
26
27jiffies = jiffies_64 + 4;
28
29SECTIONS {
30
31#ifdef CONFIG_ROMVEC
32	. = CONFIG_ROMVEC;
33	.romvec : {
34		__rom_start = .;
35		_romvec = .;
36		*(.romvec)
37		*(.data..initvect)
38	}
39#endif
40
41	. = KTEXT_ADDR;
42
43	_text = .;
44	_stext = .;
45	.text : {
46		HEAD_TEXT
47		TEXT_TEXT
48		IRQENTRY_TEXT
49		SOFTIRQENTRY_TEXT
50		SCHED_TEXT
51		CPUIDLE_TEXT
52		LOCK_TEXT
53		*(.fixup)
54		. = ALIGN(16);
55	}
56	_etext = .;
57
58#ifdef KDATA_ADDR
59	. = KDATA_ADDR;
60#endif
61
62	_sdata = .;
63	RO_DATA(PAGE_SIZE)
64	RW_DATA(16, PAGE_SIZE, THREAD_SIZE)
65	_edata = .;
66
67	EXCEPTION_TABLE(16)
68
69	. = ALIGN(PAGE_SIZE);
70	__init_begin = .;
71	INIT_TEXT_SECTION(PAGE_SIZE)
72	INIT_DATA_SECTION(16)
73	PERCPU_SECTION(16)
74	.m68k_fixup : {
75		__start_fixup = .;
76		*(.m68k_fixup)
77		__stop_fixup = .;
78	}
79	.init.data : {
80		. = ALIGN(PAGE_SIZE);
81		__init_end = .;
82	}
83
84	BSS_SECTION(0, 0, 0)
85
86	_end = .;
87
88	STABS_DEBUG
89	ELF_DETAILS
90
91	/* Sections to be discarded */
92	DISCARDS
93}
94
95