.. | .. |
---|
| 1 | +/* SPDX-License-Identifier: GPL-2.0-only */ |
---|
1 | 2 | /* |
---|
2 | 3 | * linux/arch/arm/kernel/entry-common.S |
---|
3 | 4 | * |
---|
4 | 5 | * 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. |
---|
9 | 6 | */ |
---|
10 | 7 | |
---|
11 | 8 | #include <asm/assembler.h> |
---|
.. | .. |
---|
56 | 53 | cmp r2, #TASK_SIZE |
---|
57 | 54 | blne addr_limit_check_failed |
---|
58 | 55 | ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing |
---|
59 | | - tst r1, #((_TIF_SYSCALL_WORK | _TIF_WORK_MASK) & ~_TIF_SECCOMP) |
---|
60 | | - bne fast_work_pending |
---|
61 | | - tst r1, #_TIF_SECCOMP |
---|
| 56 | + movs r1, r1, lsl #16 |
---|
62 | 57 | bne fast_work_pending |
---|
63 | 58 | |
---|
64 | 59 | |
---|
.. | .. |
---|
95 | 90 | cmp r2, #TASK_SIZE |
---|
96 | 91 | blne addr_limit_check_failed |
---|
97 | 92 | ldr r1, [tsk, #TI_FLAGS] @ re-check for syscall tracing |
---|
98 | | - tst r1, #((_TIF_SYSCALL_WORK | _TIF_WORK_MASK) & ~_TIF_SECCOMP) |
---|
99 | | - bne do_slower_path |
---|
100 | | - tst r1, #_TIF_SECCOMP |
---|
| 93 | + movs r1, r1, lsl #16 |
---|
101 | 94 | beq no_work_pending |
---|
102 | | -do_slower_path: |
---|
103 | 95 | UNWIND(.fnend ) |
---|
104 | 96 | ENDPROC(ret_fast_syscall) |
---|
105 | 97 | |
---|
.. | .. |
---|
139 | 131 | cmp r2, #TASK_SIZE |
---|
140 | 132 | blne addr_limit_check_failed |
---|
141 | 133 | ldr r1, [tsk, #TI_FLAGS] |
---|
142 | | - tst r1, #_TIF_WORK_MASK |
---|
| 134 | + movs r1, r1, lsl #16 |
---|
143 | 135 | bne slow_work_pending |
---|
144 | 136 | no_work_pending: |
---|
145 | 137 | asm_trace_hardirqs_on save = 0 |
---|
.. | .. |
---|
171 | 163 | */ |
---|
172 | 164 | |
---|
173 | 165 | .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 |
---|
174 | 189 | ENTRY(vector_swi) |
---|
175 | 190 | #ifdef CONFIG_CPU_V7M |
---|
176 | 191 | v7m_exception_entry |
---|
177 | 192 | #else |
---|
178 | 193 | sub sp, sp, #PT_REGS_SIZE |
---|
179 | 194 | stmia sp, {r0 - r12} @ Calling r0 - r12 |
---|
| 195 | +3: |
---|
180 | 196 | ARM( add r8, sp, #S_PC ) |
---|
181 | 197 | ARM( stmdb r8, {sp, lr}^ ) @ Calling sp, lr |
---|
182 | 198 | THUMB( mov r8, sp ) |
---|
.. | .. |
---|
378 | 394 | movhs scno, #0 |
---|
379 | 395 | csdb |
---|
380 | 396 | #endif |
---|
381 | | - stmloia sp, {r5, r6} @ shuffle args |
---|
| 397 | + stmialo sp, {r5, r6} @ shuffle args |
---|
382 | 398 | movlo r0, r1 |
---|
383 | 399 | movlo r1, r2 |
---|
384 | 400 | movlo r2, r3 |
---|