forked from ~ljy/RK356X_SDK_RELEASE

hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/arch/arm/kernel/entry-common.S
....@@ -1,11 +1,8 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * linux/arch/arm/kernel/entry-common.S
34 *
45 * Copyright (C) 2000 Russell King
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.
96 */
107
118 #include <asm/assembler.h>
....@@ -56,7 +53,7 @@
5653 cmp r2, #TASK_SIZE
5754 blne addr_limit_check_failed
5855 ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
59
- tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK
56
+ movs r1, r1, lsl #16
6057 bne fast_work_pending
6158
6259
....@@ -93,8 +90,9 @@
9390 cmp r2, #TASK_SIZE
9491 blne addr_limit_check_failed
9592 ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing
96
- tst r1, #_TIF_SYSCALL_WORK | _TIF_WORK_MASK
93
+ movs r1, r1, lsl #16
9794 beq no_work_pending
95
+do_slower_path:
9896 UNWIND(.fnend )
9997 ENDPROC(ret_fast_syscall)
10098
....@@ -134,7 +132,7 @@
134132 cmp r2, #TASK_SIZE
135133 blne addr_limit_check_failed
136134 ldr r1, [tsk, #TI_FLAGS]
137
- tst r1, #_TIF_WORK_MASK
135
+ movs r1, r1, lsl #16
138136 bne slow_work_pending
139137 no_work_pending:
140138 asm_trace_hardirqs_on save = 0
....@@ -166,12 +164,36 @@
166164 */
167165
168166 .align 5
167
+#ifdef CONFIG_HARDEN_BRANCH_HISTORY
168
+ENTRY(vector_bhb_loop8_swi)
169
+ sub sp, sp, #PT_REGS_SIZE
170
+ stmia sp, {r0 - r12}
171
+ mov r8, #8
172
+1: b 2f
173
+2: subs r8, r8, #1
174
+ bne 1b
175
+ dsb
176
+ isb
177
+ b 3f
178
+ENDPROC(vector_bhb_loop8_swi)
179
+
180
+ .align 5
181
+ENTRY(vector_bhb_bpiall_swi)
182
+ sub sp, sp, #PT_REGS_SIZE
183
+ stmia sp, {r0 - r12}
184
+ mcr p15, 0, r8, c7, c5, 6 @ BPIALL
185
+ isb
186
+ b 3f
187
+ENDPROC(vector_bhb_bpiall_swi)
188
+#endif
189
+ .align 5
169190 ENTRY(vector_swi)
170191 #ifdef CONFIG_CPU_V7M
171192 v7m_exception_entry
172193 #else
173194 sub sp, sp, #PT_REGS_SIZE
174195 stmia sp, {r0 - r12} @ Calling r0 - r12
196
+3:
175197 ARM( add r8, sp, #S_PC )
176198 ARM( stmdb r8, {sp, lr}^ ) @ Calling sp, lr
177199 THUMB( mov r8, sp )
....@@ -373,7 +395,7 @@
373395 movhs scno, #0
374396 csdb
375397 #endif
376
- stmloia sp, {r5, r6} @ shuffle args
398
+ stmialo sp, {r5, r6} @ shuffle args
377399 movlo r0, r1
378400 movlo r1, r2
379401 movlo r2, r3