patch-2.4.0-test10 linux/arch/i386/kernel/entry.S

Next file: linux/arch/i386/kernel/i387.c
Previous file: linux/arch/i386/kernel/bluesmoke.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test9/linux/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
@@ -205,7 +205,7 @@
 ENTRY(ret_from_sys_call)
 #ifdef CONFIG_SMP
 	movl processor(%ebx),%eax
-	shll $5,%eax
+	shll $CONFIG_X86_L1_CACHE_SHIFT,%eax
 	movl SYMBOL_NAME(irq_stat)(,%eax),%ecx		# softirq_active
 	testl SYMBOL_NAME(irq_stat)+4(,%eax),%ecx	# softirq_mask
 #else
@@ -261,7 +261,7 @@
 #ifdef CONFIG_SMP
 	GET_CURRENT(%ebx)
 	movl processor(%ebx),%eax
-	shll $5,%eax
+	shll $CONFIG_X86_L1_CACHE_SHIFT,%eax
 	movl SYMBOL_NAME(irq_stat)(,%eax),%ecx		# softirq_active
 	testl SYMBOL_NAME(irq_stat)+4(,%eax),%ecx	# softirq_mask
 #else
@@ -305,16 +305,18 @@
 	pushl %ebx
 	cld
 	movl %es,%ecx
-	xchgl %eax, ORIG_EAX(%esp)	# orig_eax (get the error code. )
+	movl ORIG_EAX(%esp), %esi	# get the error code
+	movl ES(%esp), %edi		# get the function address
+	movl %eax, ORIG_EAX(%esp)
+	movl %ecx, ES(%esp)
 	movl %esp,%edx
-	xchgl %ecx, ES(%esp)		# get the address and save es.
-	pushl %eax			# push the error code
-	pushl %edx
+	pushl %esi			# push the error code
+	pushl %edx			# push the pt_regs pointer
 	movl $(__KERNEL_DS),%edx
 	movl %edx,%ds
 	movl %edx,%es
 	GET_CURRENT(%ebx)
-	call *%ecx
+	call *%edi
 	addl $8,%esp
 	jmp ret_from_exception
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)