xref: /openbmc/linux/arch/m68k/kernel/vmlinux-nommu.lds (revision 9a87ffc99ec8eb8d35eed7c4f816d75f5cc9662e)
1b2441318SGreg Kroah-Hartman/* SPDX-License-Identifier: GPL-2.0 */
240c1b9cfSGreg Ungerer/*
340c1b9cfSGreg Ungerer *	vmlinux.lds.S -- master linker script for m68knommu arch
440c1b9cfSGreg Ungerer *
5f84f52a5SGreg Ungerer *	(C) Copyright 2002-2012, Greg Ungerer <gerg@snapgear.com>
640c1b9cfSGreg Ungerer *
740c1b9cfSGreg Ungerer *	This linker script is equipped to build either ROM loaded or RAM
840c1b9cfSGreg Ungerer *	run kernels.
940c1b9cfSGreg Ungerer */
1040c1b9cfSGreg Ungerer
11f84f52a5SGreg Ungerer#if defined(CONFIG_RAMKERNEL)
12f84f52a5SGreg Ungerer#define	KTEXT_ADDR	CONFIG_KERNELBASE
13f84f52a5SGreg Ungerer#endif
14f84f52a5SGreg Ungerer#if defined(CONFIG_ROMKERNEL)
15f84f52a5SGreg Ungerer#define	KTEXT_ADDR	CONFIG_ROMSTART
16f84f52a5SGreg Ungerer#define	KDATA_ADDR	CONFIG_KERNELBASE
17f84f52a5SGreg Ungerer#define	LOAD_OFFSET	KDATA_ADDR + (ADDR(.text) + SIZEOF(.text))
18f84f52a5SGreg Ungerer#endif
19f84f52a5SGreg Ungerer
2040c1b9cfSGreg Ungerer#include <asm/page.h>
2140c1b9cfSGreg Ungerer#include <asm/thread_info.h>
22f84f52a5SGreg Ungerer#include <asm-generic/vmlinux.lds.h>
2340c1b9cfSGreg Ungerer
2440c1b9cfSGreg UngererOUTPUT_ARCH(m68k)
2540c1b9cfSGreg UngererENTRY(_start)
2640c1b9cfSGreg Ungerer
2740c1b9cfSGreg Ungererjiffies = jiffies_64 + 4;
2840c1b9cfSGreg Ungerer
2940c1b9cfSGreg UngererSECTIONS {
3040c1b9cfSGreg Ungerer
31f84f52a5SGreg Ungerer#ifdef CONFIG_ROMVEC
32f84f52a5SGreg Ungerer	. = CONFIG_ROMVEC;
3340c1b9cfSGreg Ungerer	.romvec : {
3440c1b9cfSGreg Ungerer		__rom_start = .;
3540c1b9cfSGreg Ungerer		_romvec = .;
36f84f52a5SGreg Ungerer		*(.romvec)
3740c1b9cfSGreg Ungerer		*(.data..initvect)
38f84f52a5SGreg Ungerer	}
3940c1b9cfSGreg Ungerer#endif
4040c1b9cfSGreg Ungerer
41f84f52a5SGreg Ungerer	. = KTEXT_ADDR;
42f84f52a5SGreg Ungerer
4340c1b9cfSGreg Ungerer	_text = .;
4440c1b9cfSGreg Ungerer	_stext = .;
45f84f52a5SGreg Ungerer	.text : {
4640c1b9cfSGreg Ungerer		HEAD_TEXT
4740c1b9cfSGreg Ungerer		TEXT_TEXT
48969de098SGreg Ungerer		IRQENTRY_TEXT
49969de098SGreg Ungerer		SOFTIRQENTRY_TEXT
5040c1b9cfSGreg Ungerer		SCHED_TEXT
5140c1b9cfSGreg Ungerer		LOCK_TEXT
52ed865e31SGreg Ungerer		*(.fixup)
53f84f52a5SGreg Ungerer		. = ALIGN(16);
54f84f52a5SGreg Ungerer	}
5540c1b9cfSGreg Ungerer	_etext = .;
5640c1b9cfSGreg Ungerer
57f84f52a5SGreg Ungerer#ifdef KDATA_ADDR
58f84f52a5SGreg Ungerer	. = KDATA_ADDR;
59f84f52a5SGreg Ungerer#endif
60f84f52a5SGreg Ungerer
6140c1b9cfSGreg Ungerer	_sdata = .;
6293240b32SKees Cook	RO_DATA(PAGE_SIZE)
63c9174047SKees Cook	RW_DATA(16, PAGE_SIZE, THREAD_SIZE)
6440c1b9cfSGreg Ungerer	_edata = .;
6540c1b9cfSGreg Ungerer
66f84f52a5SGreg Ungerer	EXCEPTION_TABLE(16)
67f84f52a5SGreg Ungerer
68f84f52a5SGreg Ungerer	. = ALIGN(PAGE_SIZE);
69f84f52a5SGreg Ungerer	__init_begin = .;
70f84f52a5SGreg Ungerer	INIT_TEXT_SECTION(PAGE_SIZE)
71f84f52a5SGreg Ungerer	INIT_DATA_SECTION(16)
72f84f52a5SGreg Ungerer	PERCPU_SECTION(16)
73ed865e31SGreg Ungerer	.m68k_fixup : {
74ed865e31SGreg Ungerer		__start_fixup = .;
75ed865e31SGreg Ungerer		*(.m68k_fixup)
76ed865e31SGreg Ungerer		__stop_fixup = .;
77f84f52a5SGreg Ungerer	}
7840c1b9cfSGreg Ungerer	.init.data : {
7940c1b9cfSGreg Ungerer		. = ALIGN(PAGE_SIZE);
8040c1b9cfSGreg Ungerer		__init_end = .;
81f84f52a5SGreg Ungerer	}
8240c1b9cfSGreg Ungerer
83*670d3965SGreg Ungerer	BSS_SECTION(4, 0, 4)
8440c1b9cfSGreg Ungerer
85f84f52a5SGreg Ungerer	_end = .;
86f84f52a5SGreg Ungerer
87f84f52a5SGreg Ungerer	STABS_DEBUG
88428ec5f9SYouling Tang	ELF_DETAILS
89f84f52a5SGreg Ungerer
90f84f52a5SGreg Ungerer	/* Sections to be discarded */
9140c1b9cfSGreg Ungerer	DISCARDS
9240c1b9cfSGreg Ungerer}
9340c1b9cfSGreg Ungerer
94