forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-10 23fa18eaa71266feff7ba8d83022d9e1cc83c65a
kernel/arch/arm64/kernel/image.h
....@@ -1,26 +1,17 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * Linker script macros to generate Image header fields.
34 *
45 * Copyright (C) 2014 ARM Ltd.
5
- *
6
- * This program is free software; you can redistribute it and/or modify
7
- * it under the terms of the GNU General Public License version 2 as
8
- * published by the Free Software Foundation.
9
- *
10
- * This program is distributed in the hope that it will be useful,
11
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
- * GNU General Public License for more details.
14
- *
15
- * You should have received a copy of the GNU General Public License
16
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
176 */
18
-#ifndef __ASM_IMAGE_H
19
-#define __ASM_IMAGE_H
7
+#ifndef __ARM64_KERNEL_IMAGE_H
8
+#define __ARM64_KERNEL_IMAGE_H
209
2110 #ifndef LINKER_SCRIPT
2211 #error This file should only be included in vmlinux.lds.S
2312 #endif
13
+
14
+#include <asm/image.h>
2415
2516 /*
2617 * There aren't any ELF relocations we can use to endian-swap values known only
....@@ -47,19 +38,22 @@
4738 sym##_lo32 = DATA_LE32((data) & 0xffffffff); \
4839 sym##_hi32 = DATA_LE32((data) >> 32)
4940
41
+#define __HEAD_FLAG(field) (__HEAD_FLAG_##field << \
42
+ ARM64_IMAGE_FLAG_##field##_SHIFT)
43
+
5044 #ifdef CONFIG_CPU_BIG_ENDIAN
51
-#define __HEAD_FLAG_BE 1
45
+#define __HEAD_FLAG_BE ARM64_IMAGE_FLAG_BE
5246 #else
53
-#define __HEAD_FLAG_BE 0
47
+#define __HEAD_FLAG_BE ARM64_IMAGE_FLAG_LE
5448 #endif
5549
5650 #define __HEAD_FLAG_PAGE_SIZE ((PAGE_SHIFT - 10) / 2)
5751
5852 #define __HEAD_FLAG_PHYS_BASE 1
5953
60
-#define __HEAD_FLAGS ((__HEAD_FLAG_BE << 0) | \
61
- (__HEAD_FLAG_PAGE_SIZE << 1) | \
62
- (__HEAD_FLAG_PHYS_BASE << 3))
54
+#define __HEAD_FLAGS (__HEAD_FLAG(BE) | \
55
+ __HEAD_FLAG(PAGE_SIZE) | \
56
+ __HEAD_FLAG(PHYS_BASE))
6357
6458 /*
6559 * These will output as part of the Image header, which should be little-endian
....@@ -68,49 +62,6 @@
6862 */
6963 #define HEAD_SYMBOLS \
7064 DEFINE_IMAGE_LE64(_kernel_size_le, _end - _text); \
71
- DEFINE_IMAGE_LE64(_kernel_offset_le, TEXT_OFFSET); \
7265 DEFINE_IMAGE_LE64(_kernel_flags_le, __HEAD_FLAGS);
7366
74
-#ifdef CONFIG_EFI
75
-
76
-/*
77
- * Use ABSOLUTE() to avoid ld.lld treating this as a relative symbol:
78
- * https://github.com/ClangBuiltLinux/linux/issues/561
79
- */
80
-__efistub_stext_offset = ABSOLUTE(stext - _text);
81
-
82
-/*
83
- * The EFI stub has its own symbol namespace prefixed by __efistub_, to
84
- * isolate it from the kernel proper. The following symbols are legally
85
- * accessed by the stub, so provide some aliases to make them accessible.
86
- * Only include data symbols here, or text symbols of functions that are
87
- * guaranteed to be safe when executed at another offset than they were
88
- * linked at. The routines below are all implemented in assembler in a
89
- * position independent manner
90
- */
91
-__efistub_memcmp = __pi_memcmp;
92
-__efistub_memchr = __pi_memchr;
93
-__efistub_memcpy = __pi_memcpy;
94
-__efistub_memmove = __pi_memmove;
95
-__efistub_memset = __pi_memset;
96
-__efistub_strlen = __pi_strlen;
97
-__efistub_strnlen = __pi_strnlen;
98
-__efistub_strcmp = __pi_strcmp;
99
-__efistub_strncmp = __pi_strncmp;
100
-__efistub_strrchr = __pi_strrchr;
101
-__efistub___flush_dcache_area = __pi___flush_dcache_area;
102
-
103
-#ifdef CONFIG_KASAN
104
-__efistub___memcpy = __pi_memcpy;
105
-__efistub___memmove = __pi_memmove;
106
-__efistub___memset = __pi_memset;
107
-#endif
108
-
109
-__efistub__text = _text;
110
-__efistub__end = _end;
111
-__efistub__edata = _edata;
112
-__efistub_screen_info = screen_info;
113
-
114
-#endif
115
-
116
-#endif /* __ASM_IMAGE_H */
67
+#endif /* __ARM64_KERNEL_IMAGE_H */