entry-armv.S (508074607c7b95b24f0adf633fdf606761bb7824) | entry-armv.S (c4f486f1e7b34b27ec578494a236061b337d50ae) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * linux/arch/arm/kernel/entry-armv.S 4 * 5 * Copyright (C) 1996,1997,1998 Russell King. 6 * ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk) 7 * nommu support by Hyok S. Choi (hyok.choi@samsung.com) 8 * --- 1064 unchanged lines hidden (view full) --- 1073 * Common stub entry macro: 1074 * Enter in IRQ mode, spsr = SVC/USR CPSR, lr = SVC/USR PC 1075 * 1076 * SP points to a minimal amount of processor-private memory, the address 1077 * of which is copied into r0 for the mode specific abort handler. 1078 */ 1079 .macro vector_stub, name, mode, correction=0 1080 .align 5 | 1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * linux/arch/arm/kernel/entry-armv.S 4 * 5 * Copyright (C) 1996,1997,1998 Russell King. 6 * ARM700 fix by Matthew Godbolt (linux-user@willothewisp.demon.co.uk) 7 * nommu support by Hyok S. Choi (hyok.choi@samsung.com) 8 * --- 1064 unchanged lines hidden (view full) --- 1073 * Common stub entry macro: 1074 * Enter in IRQ mode, spsr = SVC/USR CPSR, lr = SVC/USR PC 1075 * 1076 * SP points to a minimal amount of processor-private memory, the address 1077 * of which is copied into r0 for the mode specific abort handler. 1078 */ 1079 .macro vector_stub, name, mode, correction=0 1080 .align 5 |
1081#ifdef CONFIG_HARDEN_BRANCH_HISTORY 1082vector_bhb_bpiall_\name: 1083 mcr p15, 0, r0, c7, c5, 6 @ BPIALL 1084 @ isb not needed due to "movs pc, lr" in the vector stub 1085 @ which gives a "context synchronisation". 1086#endif |
|
1081 1082vector_\name: 1083 .if \correction 1084 sub lr, lr, #\correction 1085 .endif 1086 1087 @ Save r0, lr_<exception> (parent PC) 1088 stmia sp, {r0, lr} @ save r0, lr --- 35 unchanged lines hidden (view full) --- 1124 mov r0, #8 11253: W(b) . + 4 1126 subs r0, r0, #1 1127 bne 3b 1128 dsb 1129 isb 1130 b 2b 1131ENDPROC(vector_bhb_loop8_\name) | 1087 1088vector_\name: 1089 .if \correction 1090 sub lr, lr, #\correction 1091 .endif 1092 1093 @ Save r0, lr_<exception> (parent PC) 1094 stmia sp, {r0, lr} @ save r0, lr --- 35 unchanged lines hidden (view full) --- 1130 mov r0, #8 11313: W(b) . + 4 1132 subs r0, r0, #1 1133 bne 3b 1134 dsb 1135 isb 1136 b 2b 1137ENDPROC(vector_bhb_loop8_\name) |
1132 1133vector_bhb_bpiall_\name: 1134 .if \correction 1135 sub lr, lr, #\correction 1136 .endif 1137 1138 @ Save r0, lr_<exception> (parent PC) 1139 stmia sp, {r0, lr} 1140 1141 @ bhb workaround 1142 mcr p15, 0, r0, c7, c5, 6 @ BPIALL 1143 @ isb not needed due to "movs pc, lr" in the vector stub 1144 @ which gives a "context synchronisation". 1145 b 2b 1146ENDPROC(vector_bhb_bpiall_\name) | |
1147 .previous 1148#endif 1149 1150 .align 2 1151 @ handler addresses follow this label 11521: 1153 .endm 1154 --- 187 unchanged lines hidden --- | 1138 .previous 1139#endif 1140 1141 .align 2 1142 @ handler addresses follow this label 11431: 1144 .endm 1145 --- 187 unchanged lines hidden --- |