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		LOCK_TEXT
45		KPROBES_TEXT
46		*(.fixup)
47	}
48	_etext = .;
49
50	INIT_DATA_SECTION(PAGE_SIZE)
51
52	_sdata = .;
53		RW_DATA(32,PAGE_SIZE,_THREAD_SIZE)
54		RO_DATA(PAGE_SIZE)
55	_edata = .;
56
57	EXCEPTION_TABLE(16)
58
59	BSS_SECTION(_PAGE_SIZE, _PAGE_SIZE, _PAGE_SIZE)
60
61	_end = .;
62
63	STABS_DEBUG
64	DWARF_DEBUG
65	ELF_DETAILS
66	.hexagon.attributes 0 : { *(.hexagon.attributes) }
67
68	DISCARDS
69}
70