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		SCHED_TEXT
42		CPUIDLE_TEXT
43		LOCK_TEXT
44		KPROBES_TEXT
45		*(.fixup)
46	}
47	_etext = .;
48
49	INIT_DATA_SECTION(PAGE_SIZE)
50
51	_sdata = .;
52		RW_DATA(32,PAGE_SIZE,_THREAD_SIZE)
53		RO_DATA(PAGE_SIZE)
54	_edata = .;
55
56	EXCEPTION_TABLE(16)
57
58	BSS_SECTION(_PAGE_SIZE, _PAGE_SIZE, _PAGE_SIZE)
59
60	_end = .;
61
62	/DISCARD/ : {
63		EXIT_TEXT
64		EXIT_DATA
65		EXIT_CALL
66	}
67
68	STABS_DEBUG
69	DWARF_DEBUG
70	ELF_DETAILS
71
72}
73