View | Details | Raw Unified | Return to bug 156580
Collapse All | Expand All

(-)linux/arch/x86_64/kernel/entry.S (-2 / +10 lines)
Lines 180-185 rff_trace: Link Here
180
 *
180
 *
181
 * XXX	if we had a free scratch register we could save the RSP into the stack frame
181
 * XXX	if we had a free scratch register we could save the RSP into the stack frame
182
 *      and report it properly in ps. Unfortunately we haven't.
182
 *      and report it properly in ps. Unfortunately we haven't.
183
 *
184
 * When user can change the frames always force IRET. That is because
185
 * it deals with uncanonical addresses better. SYSRET has trouble
186
 * with them due to bugs in both AMD and Intel CPUs.
183
 */ 			 		
187
 */ 			 		
184
188
185
ENTRY(system_call)
189
ENTRY(system_call)
Lines 254-260 sysret_signal: Link Here
254
	xorl %esi,%esi # oldset -> arg2
258
	xorl %esi,%esi # oldset -> arg2
255
	call ptregscall_common
259
	call ptregscall_common
256
1:	movl $_TIF_NEED_RESCHED,%edi
260
1:	movl $_TIF_NEED_RESCHED,%edi
257
	jmp sysret_check
261
	/* Use IRET because user could have changed frame. This
262
	   works because ptregscall_common has called FIXUP_TOP_OF_STACK. */
263
	cli
264
	jmp int_with_check
258
	
265
	
259
badsys:
266
badsys:
260
	movq $-ENOSYS,RAX-ARGOFFSET(%rsp)
267
	movq $-ENOSYS,RAX-ARGOFFSET(%rsp)
Lines 280-286 tracesys: Link Here
280
	call syscall_trace_leave
287
	call syscall_trace_leave
281
	RESTORE_TOP_OF_STACK %rbx
288
	RESTORE_TOP_OF_STACK %rbx
282
	RESTORE_REST
289
	RESTORE_REST
283
	jmp ret_from_sys_call
290
	/* Use IRET because user could have changed frame */
291
	jmp int_ret_from_sys_call
284
	CFI_ENDPROC
292
	CFI_ENDPROC
285
		
293
		
286
/* 
294
/* 

Return to bug 156580