blob: 9644fe187a3f4e13e3cf4e84d2e3866a1d4f754e [file] [log] [blame]
Greg Kroah-Hartmanb2441312017-11-01 15:07:57 +01001/* SPDX-License-Identifier: GPL-2.0 */
Paul Mundtdce97c82009-05-09 23:36:10 +09002/*
3 * ld script to make SuperH Linux kernel
4 * Written by Niibe Yutaka and Paul Mundt
5 */
Paul Mundtdce97c82009-05-09 23:36:10 +09006OUTPUT_ARCH(sh)
Tom Saegerc1c551b2023-01-23 17:09:35 -07007#define RUNTIME_DISCARD_EXIT
Paul Mundtdce97c82009-05-09 23:36:10 +09008#include <asm/thread_info.h>
9#include <asm/cache.h>
Matt Flemingbd353862009-08-14 01:58:43 +090010#include <asm/vmlinux.lds.h>
Paul Mundtdce97c82009-05-09 23:36:10 +090011
Paul Mundt1d5cfcd2010-02-16 21:43:38 +090012#ifdef CONFIG_PMB
13 #define MEMORY_OFFSET 0
Paul Mundt04c86972010-02-15 16:10:57 +090014#else
Paul Mundt1d5cfcd2010-02-16 21:43:38 +090015 #define MEMORY_OFFSET __MEMORY_START
Paul Mundt04c86972010-02-15 16:10:57 +090016#endif
17
Paul Mundtdce97c82009-05-09 23:36:10 +090018ENTRY(_start)
19SECTIONS
20{
Simon Hormane66ac3f2011-09-15 20:13:00 +090021 . = PAGE_OFFSET + MEMORY_OFFSET + PHYSICAL_OFFSET + CONFIG_ZERO_PAGE_OFFSET;
Paul Mundtdce97c82009-05-09 23:36:10 +090022
Magnus Damm53c00542009-05-11 08:45:27 +000023 _text = .; /* Text and read-only data */
24
Arnd Bergmann37744fe2020-04-20 11:37:12 +020025 .empty_zero_page : AT(ADDR(.empty_zero_page)) {
Paul Mundtdce97c82009-05-09 23:36:10 +090026 *(.empty_zero_page)
27 } = 0
28
Arnd Bergmann37744fe2020-04-20 11:37:12 +020029 .text : AT(ADDR(.text)) {
Paul Mundtdce97c82009-05-09 23:36:10 +090030 HEAD_TEXT
31 TEXT_TEXT
Paul Mundtdce97c82009-05-09 23:36:10 +090032 SCHED_TEXT
33 LOCK_TEXT
34 KPROBES_TEXT
35 IRQENTRY_TEXT
Alexander Potapenkobe7635e2016-03-25 14:22:05 -070036 SOFTIRQENTRY_TEXT
Paul Mundtdce97c82009-05-09 23:36:10 +090037 *(.fixup)
38 *(.gnu.warning)
39 _etext = .; /* End of text section */
40 } = 0x0009
41
Tim Abbott2802e342009-07-09 14:45:59 +000042 EXCEPTION_TABLE(16)
Chris Smith660e2ac2010-01-27 22:03:11 +090043
44 _sdata = .;
Paul Mundtdce97c82009-05-09 23:36:10 +090045 RO_DATA(PAGE_SIZE)
Kees Cookc9174042019-10-29 14:13:35 -070046 RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
Chris Smith660e2ac2010-01-27 22:03:11 +090047 _edata = .;
Paul Mundtdce97c82009-05-09 23:36:10 +090048
Matt Flemingbd353862009-08-14 01:58:43 +090049 DWARF_EH_FRAME
50
Paul Mundtdce97c82009-05-09 23:36:10 +090051 . = ALIGN(PAGE_SIZE); /* Init code and data */
Tim Abbott2802e342009-07-09 14:45:59 +000052 __init_begin = .;
53 INIT_TEXT_SECTION(PAGE_SIZE)
54 INIT_DATA_SECTION(16)
Paul Mundtdce97c82009-05-09 23:36:10 +090055
56 . = ALIGN(4);
Arnd Bergmann37744fe2020-04-20 11:37:12 +020057 .machvec.init : AT(ADDR(.machvec.init)) {
Paul Mundtdce97c82009-05-09 23:36:10 +090058 __machvec_start = .;
59 *(.machvec.init)
60 __machvec_end = .;
61 }
62
Tejun Heo0415b00d12011-03-24 18:50:09 +010063 PERCPU_SECTION(L1_CACHE_BYTES)
Paul Mundtdce97c82009-05-09 23:36:10 +090064
65 /*
66 * .exit.text is discarded at runtime, not link time, to deal with
67 * references from __bug_table
68 */
Arnd Bergmann37744fe2020-04-20 11:37:12 +020069 .exit.text : AT(ADDR(.exit.text)) { EXIT_TEXT }
70 .exit.data : AT(ADDR(.exit.data)) { EXIT_DATA }
Paul Mundtdce97c82009-05-09 23:36:10 +090071
72 . = ALIGN(PAGE_SIZE);
Tim Abbott2802e342009-07-09 14:45:59 +000073 __init_end = .;
Tim Abbott6bde6072009-07-20 23:30:24 +090074 BSS_SECTION(0, PAGE_SIZE, 4)
Tim Abbott2802e342009-07-09 14:45:59 +000075 _end = . ;
Paul Mundtdce97c82009-05-09 23:36:10 +090076
Paul Mundtdce97c82009-05-09 23:36:10 +090077 STABS_DEBUG
78 DWARF_DEBUG
Kees Cookc604abc2020-08-21 12:42:45 -070079 ELF_DETAILS
Tejun Heo023bf6f2009-07-09 11:27:40 +090080
Tejun Heo023bf6f2009-07-09 11:27:40 +090081 DISCARDS
Paul Mundtdce97c82009-05-09 23:36:10 +090082}