File tree Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Expand file tree Collapse file tree 1 file changed +11
-4
lines changed Original file line number Diff line number Diff line change 181
181
182
182
.endm
183
183
184
+ .macro SAVE_ALL_NMI
185
+ SAVE_ALL
186
+ .endm
184
187
/*
185
188
* This is a sneaky trick to help the unwinder find pt_regs on the stack. The
186
189
* frame pointer is replaced with an encoded pointer to pt_regs. The encoding
227
230
POP_GS_EX
228
231
.endm
229
232
233
+ .macro RESTORE_ALL_NMI pop =0
234
+ RESTORE_REGS pop =\pop
235
+ .endm
236
+
230
237
.macro CHECK_AND_APPLY_ESPFIX
231
238
#ifdef CONFIG_X86_ESPFIX32
232
239
#define GDT_ESPFIX_SS PER_CPU_VAR(gdt_page) + (GDT_ENTRY_ESPFIX_SS * 8 )
@@ -1161,7 +1168,7 @@ ENTRY(nmi)
1161
1168
#endif
1162
1169
1163
1170
pushl %eax # pt_regs->orig_ax
1164
- SAVE_ALL
1171
+ SAVE_ALL_NMI
1165
1172
ENCODE_FRAME_POINTER
1166
1173
xorl %edx , %edx # zero error code
1167
1174
movl %esp , %eax # pt_regs pointer
@@ -1189,7 +1196,7 @@ ENTRY(nmi)
1189
1196
1190
1197
.Lnmi_return:
1191
1198
CHECK_AND_APPLY_ESPFIX
1192
- RESTORE_REGS 4
1199
+ RESTORE_ALL_NMI pop = 4
1193
1200
jmp .Lirq_return
1194
1201
1195
1202
#ifdef CONFIG_X86_ESPFIX32
@@ -1205,12 +1212,12 @@ ENTRY(nmi)
1205
1212
pushl 16 (%esp )
1206
1213
.endr
1207
1214
pushl %eax
1208
- SAVE_ALL
1215
+ SAVE_ALL_NMI
1209
1216
ENCODE_FRAME_POINTER
1210
1217
FIXUP_ESPFIX_STACK # %eax == %esp
1211
1218
xorl %edx , %edx # zero error code
1212
1219
call do_nmi
1213
- RESTORE_REGS
1220
+ RESTORE_ALL_NMI
1214
1221
lss 12 +4 (%esp ), %esp # back to espfix stack
1215
1222
jmp .Lirq_return
1216
1223
#endif
You can’t perform that action at this time.
0 commit comments