1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Linker script for Hexagon kernel
4 *
5 * Copyright (c) 2010-2014, The Linux Foundation. All rights reserved.
6 */
7
8#include <asm-generic/vmlinux.lds.h>
9#include <asm/asm-offsets.h>	/*  Most of the kernel defines are here  */
10#include <asm/mem-layout.h>	/*  except for page_offset  */
11#include <asm/cache.h>		/*  and now we're pulling cache line size  */
12#include <asm/thread_info.h>	/*  and we need THREAD_SIZE too */
13
14OUTPUT_ARCH(hexagon)
15ENTRY(stext)
16
17jiffies = jiffies_64;
18
19/*
20See asm-generic/vmlinux.lds.h for expansion of some of these macros.
21See asm-generic/sections.h for seemingly required labels.
22*/
23
24#define PAGE_SIZE _PAGE_SIZE
25
26SECTIONS
27{
28	. = PAGE_OFFSET;
29
30	__init_begin = .;
31	HEAD_TEXT_SECTION
32	INIT_TEXT_SECTION(PAGE_SIZE)
33	PERCPU_SECTION(L1_CACHE_BYTES)
34	__init_end = .;
35
36        . = ALIGN(_PAGE_SIZE);
37	_stext = .;
38	.text : AT(ADDR(.text)) {
39		_text = .;
40		TEXT_TEXT
41		IRQENTRY_TEXT
42		SOFTIRQENTRY_TEXT
43		SCHED_TEXT
44		CPUIDLE_TEXT
45		LOCK_TEXT
46		KPROBES_TEXT
47		*(.fixup)
48	}
49	_etext = .;
50
51	INIT_DATA_SECTION(PAGE_SIZE)
52
53	_sdata = .;
54		RW_DATA(32,PAGE_SIZE,_THREAD_SIZE)
55		RO_DATA(PAGE_SIZE)
56	_edata = .;
57
58	EXCEPTION_TABLE(16)
59
60	BSS_SECTION(_PAGE_SIZE, _PAGE_SIZE, _PAGE_SIZE)
61
62	_end = .;
63
64	STABS_DEBUG
65	DWARF_DEBUG
66	ELF_DETAILS
67
68	DISCARDS
69}
70