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		LOCK_TEXT
52		*(.fixup)
53		. = ALIGN(16);
54	}
55	_etext = .;
56
57#ifdef KDATA_ADDR
58	. = KDATA_ADDR;
59#endif
60
61	_sdata = .;
62	RO_DATA(PAGE_SIZE)
63	RW_DATA(16, PAGE_SIZE, THREAD_SIZE)
64	_edata = .;
65
66	EXCEPTION_TABLE(16)
67
68	. = ALIGN(PAGE_SIZE);
69	__init_begin = .;
70	INIT_TEXT_SECTION(PAGE_SIZE)
71	INIT_DATA_SECTION(16)
72	PERCPU_SECTION(16)
73	.m68k_fixup : {
74		__start_fixup = .;
75		*(.m68k_fixup)
76		__stop_fixup = .;
77	}
78	.init.data : {
79		. = ALIGN(PAGE_SIZE);
80		__init_end = .;
81	}
82
83	BSS_SECTION(4, 0, 4)
84
85	_end = .;
86
87	STABS_DEBUG
88	ELF_DETAILS
89
90	/* Sections to be discarded */
91	DISCARDS
92}
93
94