Yeah, and I really should align the _normal_ return address (and not the
restart address).
Something like the appended, perhaps?
Linus
===== arch/i386/kernel/entry.S 1.45 vs edited =====
--- 1.45/arch/i386/kernel/entry.S Wed Dec 18 14:42:17 2002
+++ edited/arch/i386/kernel/entry.S Mon Dec 23 20:02:10 2002
@@ -233,7 +233,7 @@
#endif
/* Points to after the "sysenter" instruction in the vsyscall page */
-#define SYSENTER_RETURN 0xffffe00a
+#define SYSENTER_RETURN 0xffffe010
# sysenter call handler stub
ALIGN
===== arch/i386/kernel/sysenter.c 1.5 vs edited =====
--- 1.5/arch/i386/kernel/sysenter.c Sun Dec 22 21:12:23 2002
+++ edited/arch/i386/kernel/sysenter.c Mon Dec 23 20:04:33 2002
@@ -57,12 +57,17 @@
0x51, /* push %ecx */
0x52, /* push %edx */
0x55, /* push %ebp */
+ /* 3: backjump target */
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" */
- /* System call normal return point is here! (SYSENTER_RETURN in entry.S) */
+
+ /* 7: align return point with nop's to make disassembly easier */
+ 0x90, 0x90, 0x90, 0x90,
+ 0x90, 0x90, 0x90,
+
+ /* 14: System call restart point is here! (SYSENTER_RETURN - 2) */
+ 0xeb, 0xf3, /* jmp to "movl %esp,%ebp" */
+ /* 16: System call normal return point is here! (SYSENTER_RETURN in entry.S) */
0x5d, /* pop %ebp */
0x5a, /* pop %edx */
0x59, /* pop %ecx */
-
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/