Re: Intel P6 vs P7 system call performance

Petr Vandrovec (vandrove@vc.cvut.cz)
Tue, 24 Dec 2002 00:27:43 +0100


On Sun, Dec 22, 2002 at 09:03:44PM -0800, Linus Torvalds wrote:
>
> How does the attached patch work for people? I've verified that
> single-stepping works, and I've also verified that it does improve
> performance for simple system calls. Everything looks quite simple.

> ===== arch/i386/kernel/sysenter.c 1.4 vs edited =====
> --- 1.4/arch/i386/kernel/sysenter.c Sat Dec 21 16:02:02 2002
> +++ edited/arch/i386/kernel/sysenter.c Sun Dec 22 20:17:28 2002
> @@ -54,19 +54,18 @@
> 0xc3 /* ret */
> };
> static const char sysent[] = {
> - 0x9c, /* pushf */
> 0x51, /* push %ecx */
> 0x52, /* push %edx */
> 0x55, /* push %ebp */
> 0x89, 0xe5, /* movl %esp,%ebp */
> 0x0f, 0x34, /* sysenter */
> + 0x00, /* align return point */
> /* System call restart point is here! (SYSENTER_RETURN - 2) */
> 0xeb, 0xfa, /* jmp to "movl %esp,%ebp" */

Hi Linus,

Jump instruction should be 0xeb, 0xf9, with 0xeb, 0xfa it jumps into
the middle of movl %esp,%ebp because of added alignment.

Maybe glibc tests needs also something to check restarted syscall...
Thanks,
Petr Vandrovec
vandrove@vc.cvut.cz

--- linux/arch/i386/kernel/sysenter.c.orig 2002-12-24 00:23:41.000000000 +0100
+++ linux/arch/i386/kernel/sysenter.c 2002-12-24 00:23:50.000000000 +0100
@@ -61,7 +61,7 @@
0x0f, 0x34, /* sysenter */
0x00, /* align return point */
/* System call restart point is here! (SYSENTER_RETURN - 2) */
- 0xeb, 0xfa, /* jmp to "movl %esp,%ebp" */
+ 0xeb, 0xf9, /* jmp to "movl %esp,%ebp" */
/* System call normal return point is here! (SYSENTER_RETURN in entry.S) */
0x5d, /* pop %ebp */
0x5a, /* pop %edx */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/