forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-11 04dd17822334871b23ea2862f7798fb0e0007777
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,7 +90,7 @@
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
9895 UNWIND(.fnend )
9996 ENDPROC(ret_fast_syscall)
....@@ -134,7 +131,7 @@
134131 cmp r2, #TASK_SIZE
135132 blne addr_limit_check_failed
136133 ldr r1, [tsk, #TI_FLAGS]
137
- tst r1, #_TIF_WORK_MASK
134
+ movs r1, r1, lsl #16
138135 bne slow_work_pending
139136 no_work_pending:
140137 asm_trace_hardirqs_on save = 0
....@@ -166,12 +163,36 @@
166163 */
167164
168165 .align 5
166
+#ifdef CONFIG_HARDEN_BRANCH_HISTORY
167
+ENTRY(vector_bhb_loop8_swi)
168
+ sub sp, sp, #PT_REGS_SIZE
169
+ stmia sp, {r0 - r12}
170
+ mov r8, #8
171
+1: b 2f
172
+2: subs r8, r8, #1
173
+ bne 1b
174
+ dsb
175
+ isb
176
+ b 3f
177
+ENDPROC(vector_bhb_loop8_swi)
178
+
179
+ .align 5
180
+ENTRY(vector_bhb_bpiall_swi)
181
+ sub sp, sp, #PT_REGS_SIZE
182
+ stmia sp, {r0 - r12}
183
+ mcr p15, 0, r8, c7, c5, 6 @ BPIALL
184
+ isb
185
+ b 3f
186
+ENDPROC(vector_bhb_bpiall_swi)
187
+#endif
188
+ .align 5
169189 ENTRY(vector_swi)
170190 #ifdef CONFIG_CPU_V7M
171191 v7m_exception_entry
172192 #else
173193 sub sp, sp, #PT_REGS_SIZE
174194 stmia sp, {r0 - r12} @ Calling r0 - r12
195
+3:
175196 ARM( add r8, sp, #S_PC )
176197 ARM( stmdb r8, {sp, lr}^ ) @ Calling sp, lr
177198 THUMB( mov r8, sp )
....@@ -373,7 +394,7 @@
373394 movhs scno, #0
374395 csdb
375396 #endif
376
- stmloia sp, {r5, r6} @ shuffle args
397
+ stmialo sp, {r5, r6} @ shuffle args
377398 movlo r0, r1
378399 movlo r1, r2
379400 movlo r2, r3