Skip to content

Commit

Permalink
chore: update github pages.
Browse files Browse the repository at this point in the history
  • Loading branch information
jxlpzqc committed Feb 18, 2024
0 parents commit f6bd12f
Show file tree
Hide file tree
Showing 46 changed files with 1,067,851 additions and 0 deletions.
167,576 changes: 167,576 additions & 0 deletions detail/1.html

Large diffs are not rendered by default.

28,693 changes: 28,693 additions & 0 deletions detail/10.html

Large diffs are not rendered by default.

5,814 changes: 5,814 additions & 0 deletions detail/11.html

Large diffs are not rendered by default.

39 changes: 39 additions & 0 deletions detail/110.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<h1>Patches contributed by University of Massachusetts at Lowell</h1><hr><pre>commit 581141cb4b10ebd865dcb7b80f5e712e2def5408
Author: Albert D. Cahalan <acahalan@cs.uml.edu>
Date: Tue Feb 14 13:53:20 2006 -0800

[PATCH] x86: document sysenter path

This path isn't obvious. It looks as if the kernel will be taking three
args from the user stack, but it only takes one from there.

Signed-off-by: Albert Cahalan <acahalan@gmail.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>

diff --git a/arch/i386/kernel/vsyscall-sysenter.S b/arch/i386/kernel/vsyscall-sysenter.S
index 4daefb2ec1b2..76b728159403 100644
--- a/arch/i386/kernel/vsyscall-sysenter.S
+++ b/arch/i386/kernel/vsyscall-sysenter.S
@@ -7,6 +7,21 @@
* for details.
*/

+/*
+ * The caller puts arg2 in %ecx, which gets pushed. The kernel will use
+ * %ecx itself for arg2. The pushing is because the sysexit instruction
+ * (found in entry.S) requires that we clobber %ecx with the desired %esp.
+ * User code might expect that %ecx is unclobbered though, as it would be
+ * for returning via the iret instruction, so we must push and pop.
+ *
+ * The caller puts arg3 in %edx, which the sysexit instruction requires
+ * for %eip. Thus, exactly as for arg2, we must push and pop.
+ *
+ * Arg6 is different. The caller puts arg6 in %ebp. Since the sysenter
+ * instruction clobbers %esp, the user's %esp won't even survive entry
+ * into the kernel. We store %esp in %ebp. Code in entry.S must fetch
+ * arg6 from the stack.
+ */
.text
.globl __kernel_vsyscall
.type __kernel_vsyscall,@function</pre><hr>
Loading

0 comments on commit f6bd12f

Please sign in to comment.