All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zachary Amsden <zach@vmware.com>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: "linux-os (Dick Johnson)" <linux-os@analogic.com>,
	Coywolf Qi Hunt <coywolf@gmail.com>,
	7eggert@gmx.de, Ukil a <ukil_a@yahoo.com>,
	linux-kernel@vger.kernel.org
Subject: Re: Need help in understanding x86 syscall
Date: Thu, 11 Aug 2005 10:59:22 -0700	[thread overview]
Message-ID: <42FB91FA.7070104@vmware.com> (raw)
In-Reply-To: <1123781639.17269.83.camel@localhost.localdomain>

Steven Rostedt wrote:

>I expect that if I had a Gentoo system that I compiled for my machine,
>this would be different. But I suspect that Debian still wants to run on
>my old Pentium 75MHz laptop.  How would libc know to use sysenter
>instead of int 0x80.  It could do a test of the system, but would there
>be an if statement for every system call then?   I guess that libc needs
>to be compiled either to use it or not. Since there are still several
>machines out there that don't have this feature, it would be safer to
>not use it.
>  
>

zach-dev2:~ $ ldd /bin/ls
        linux-gate.so.1 =>  (0xffffe000)

This is the vsyscall entry point, which gets linked by ld into all 
processes.  It is a kernel page which is visible to user space, and is 
rewritten to support sysenter if indeed that instruction is available.  
Glibc has fixed entry points to this page.  Here is a view of the system 
call entry point on a machine which supports sysenter:

(gdb) break _init
Breakpoint 1 at 0x8049522
(gdb) run
Starting program: /bin/ls
(no debugging symbols found)...[Thread debugging using libthread_db enabled]
[New Thread 1075283616 (LWP 5328)]
[Switching to Thread 1075283616 (LWP 5328)]

Breakpoint 1, 0x08049522 in _init ()
(gdb) x/10i 0xffffe400
0xffffe400:     push   %ecx
0xffffe401:     push   %edx
0xffffe402:     push   %ebp
0xffffe403:     mov    %esp,%ebp
0xffffe405:     sysenter
0xffffe407:     nop   
0xffffe408:     nop   
0xffffe409:     nop   
0xffffe40a:     nop   
0xffffe40b:     nop   

On a machine that does not support sysenter, this will give you:

int $0x80
ret

The int $0x80 system calls are still fully supported by a sysenter 
capable kernel, since it must run older binaries and potentially support 
syscalls during early boot up before it is known that sysenter is supported.

Zach

  parent reply	other threads:[~2005-08-11 17:59 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <4Ae73-6Mm-5@gated-at.bofh.it>
2005-08-11 13:41 ` Need help in understanding x86 syscall Bodo Eggert
2005-08-11 14:04   ` linux-os (Dick Johnson)
2005-08-11 14:31     ` Steven Rostedt
2005-08-11 15:13       ` Coywolf Qi Hunt
2005-08-11 15:22         ` Steven Rostedt
2005-08-11 15:28         ` linux-os (Dick Johnson)
2005-08-11 15:51           ` Steven Rostedt
2005-08-11 16:19             ` Steven Rostedt
2005-08-11 16:31               ` Coywolf Qi Hunt
2005-08-11 16:59                 ` Coywolf Qi Hunt
2005-08-11 17:10                   ` linux-os (Dick Johnson)
2005-08-11 17:26                     ` Steven Rostedt
2005-08-11 17:33                       ` Steven Rostedt
2005-08-11 17:57                         ` linux-os (Dick Johnson)
2005-08-11 17:59                         ` Zachary Amsden [this message]
2005-08-11 18:17                           ` Steven Rostedt
2005-08-11 19:58                             ` Zachary Amsden
2005-08-11 20:04                               ` Steven Rostedt
2005-08-12 19:30                           ` Jan Engelhardt
2005-08-11 17:46                       ` linux-os (Dick Johnson)
2005-08-11 18:11                         ` Steven Rostedt
2005-08-11 18:21                           ` linux-os (Dick Johnson)
2005-08-11 19:00                             ` Steven Rostedt
2005-08-11 20:39                           ` Zwane Mwaikambo
2005-08-12 11:29                             ` Bodo Eggert
2005-08-11 17:18                   ` Steven Rostedt
2005-08-12  5:04                     ` Jeff Carr
2005-08-12  5:30                       ` Coywolf Qi Hunt
2005-08-12 10:34                       ` Steven Rostedt
2005-08-12 10:40                       ` Steven Rostedt
2005-08-11 14:05   ` Steven Rostedt
2005-08-11 23:25     ` Bodo Eggert
2005-08-11  5:39 Ukil a
2005-08-11 13:54 ` Steven Rostedt
2005-08-11 15:52 ` Zachary Amsden

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=42FB91FA.7070104@vmware.com \
    --to=zach@vmware.com \
    --cc=7eggert@gmx.de \
    --cc=coywolf@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-os@analogic.com \
    --cc=rostedt@goodmis.org \
    --cc=ukil_a@yahoo.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.