From: David Mosberger <davidm@napali.hpl.hp.com>
To: linux-ia64@vger.kernel.org
Subject: Re: newbie question about 2.6 ia64 linux-gate etc
Date: Mon, 25 Oct 2004 15:33:14 +0000 [thread overview]
Message-ID: <16765.7354.650202.130073@napali.hpl.hp.com> (raw)
In-Reply-To: <BAY14-F23L9BGTuAyHs000156b6@hotmail.com>
>>>>> On Mon, 25 Oct 2004 10:57:25 -0400, "Raj Patil" <rpatil0299@hotmail.com> said:
Raj> Hello, I am looking for some basic info on how the
Raj> linux-gate.so is used and how it gets mapped to the process
Raj> address space in 2.6 ia64 and how all the system call function
Raj> names gets included here? (I have access to SuSE 9.0, based on
Raj> 2.6.5-7.97)
Raj> Can some please point/direct me to some doc/notes, if it exists
Raj> or write few lines to give some basic information information
Raj> about these?
Raj> Thank you very much and really appreciate info.
See the last section "Using fast system calls" of
Documentation/ia64/fsys.txt
I'll append it below for convenience.
BTW: The vDSO approach isn't unique to ia64. It was invented for x86
and other platforms use it as well.
--david
----
* Using fast system calls
To use fast system calls, userspace applications need simply call
__kernel_syscall_via_epc(). For example
-- example fgettimeofday() call --
-- fgettimeofday.S --
#include <asm/asmmacro.h>
GLOBAL_ENTRY(fgettimeofday)
.prologue
.save ar.pfs, r11
mov r11 = ar.pfs
.body
mov r2 = 0xa000000000020660;; // gate address
// found by inspection of System.map for the
// __kernel_syscall_via_epc() function. See
// below for how to do this for real.
mov b7 = r2
mov r15 = 1087 // gettimeofday syscall
;;
br.call.sptk.many b6 = b7
;;
.restore sp
mov ar.pfs = r11
br.ret.sptk.many rp;; // return to caller
END(fgettimeofday)
-- end fgettimeofday.S --
In reality, getting the gate address is accomplished by two extra
values passed via the ELF auxiliary vector (include/asm-ia64/elf.h)
o AT_SYSINFO : is the address of __kernel_syscall_via_epc()
o AT_SYSINFO_EHDR : is the address of the kernel gate ELF DSO
The ELF DSO is a pre-linked library that is mapped in by the kernel at
the gate page. It is a proper ELF shared object so, with a dynamic
loader that recognises the library, you should be able to make calls to
the exported functions within it as with any other shared library.
AT_SYSINFO points into the kernel DSO at the
__kernel_syscall_via_epc() function for historical reasons (it was
used before the kernel DSO) and as a convenience.
prev parent reply other threads:[~2004-10-25 15:33 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-25 14:57 newbie question about 2.6 ia64 linux-gate etc Raj Patil
2004-10-25 15:33 ` David Mosberger [this message]
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=16765.7354.650202.130073@napali.hpl.hp.com \
--to=davidm@napali.hpl.hp.com \
--cc=linux-ia64@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox