All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Frysinger <vapier@gentoo.org>
To: John David Anglin <dave.anglin@bell.net>
Cc: Kyle McMartin <kyle@mcmartin.ca>,
	"Michael Kerrisk (man-pages)" <mtk.manpages@gmail.com>,
	linux-man <linux-man@vger.kernel.org>,
	Kyle McMartin <kyle@infradead.org>, Helge Deller <deller@gmx.de>,
	"James E.J. Bottomley" <jejb@parisc-linux.org>,
	linux-parisc@vger.kernel.org
Subject: Re: [PATCH] man2 : syscall.2 : document syscall calling conventions
Date: Thu, 11 Apr 2013 23:38:53 -0400	[thread overview]
Message-ID: <201304112338.56618.vapier@gentoo.org> (raw)
In-Reply-To: <BLU0-SMTP62F4273B01E0328ADCD7BE97C10@phx.gbl>

[-- Attachment #1: Type: Text/Plain, Size: 2707 bytes --]

On Thursday 11 April 2013 22:34:43 John David Anglin wrote:
> On 11-Apr-13, at 9:55 PM, Mike Frysinger wrote:
> > On Sunday 07 April 2013 14:48:42 John David Anglin wrote:
> >> On 7-Apr-13, at 2:39 PM, Mike Frysinger wrote:
> >>> just to be clear, the only insn you need is:
> >>> 	ble 0x100(%sr2, %r0);
> >>> 
> >>> the kernel docs say sr2 holds the kernel gateway page (so i guess
> >>> 0x100 is a
> >>> known offset into that).  the docs don't mention r0 that i can see,
> >>> so i'm
> >>> guessing it's one of those "always 0" registers ?
> >> 
> >> Yes.  There is also an entry at offset 0xb0 for light-weight-
> >> syscalls.  Currently,
> >> this implements an atomic CAS operation used for pthread support.
> > 
> > interesting.  sounds like a poor man's vDSO.  i'll document this the
> > new
> > vdso(7) man page.
> 
> Not exactly, the code runs on the gateway page which is in kernel space.
> The main reason for doing the operation in kernel space is to prevent
> processes from being preempted while executing in the lock region.  In
> general,
> parisc processes are not preempted on the gateway page.  There are
> some subtleties regarding fault handling.

sure ... the Blackfin arch does a similar thing for providing fast atomic 
primitives to userspace since the ISA can't.

what do you think of this section for vdso(7) ?  i might have to split the 
"real" vdso arches from these others since there's a couple now (arm, bfin, 
parisc), and i think there might be more down the line (microblaze).

.SS parisc (hppa) functions
.\" See linux/arch/parisc/kernel/syscall.S
.\" See linux/Documentation/parisc/registers
The parisc port has a code page full of utility functions.
Rather than use the normal ELF aux vector approach, it passes the address of
the page to the process via the SR2 register.
This is done to match the way HP-UX works.

Since it's just a raw page of code, there is no ELF information for doing
symbol lookups or versioning.
Simply call into the appropriate offset via the branch instruction, e.g.:
.br
ble <offset>(%sr2, %r0)
.if t \{\
.ft CW
\}
.TS
l l.
offset	function
_
00b0	lws_entry
00e0	set_thread_pointer
0100	linux_gateway_entry (syscall)
0268	syscall_nosys
0274	tracesys
0324	tracesys_next
0368	tracesys_exit
03a0	tracesys_sigexit
03b8	lws_start
03dc	lws_exit_nosys
03e0	lws_exit
03e4	lws_compare_and_swap64
03e8	lws_compare_and_swap
0404	cas_wouldblock
0410	cas_action
.TE
.if t \{\
.in
.ft P
\}

> There is support in glibc and libgcc for these calls.  The libgcc
> implementation
> in linux-atomic.c is very similar to that on arm.

interesting.  another arch to add :).
-mike

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

  reply	other threads:[~2013-04-12  3:38 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-27  5:11 [PATCH] man2 : syscall.2 : add notes ch0.han-Hm3cg6mZ9cc
     [not found] ` <1364361092-5948-1-git-send-email-ch0.han-Hm3cg6mZ9cc@public.gmane.org>
2013-03-27  7:53   ` (unknown), Changhee Han
2013-03-27  8:25   ` [PATCH v2] man2 : syscall.2 : add notes Changhee Han
2013-03-28  9:37   ` [PATCH] " Michael Kerrisk (man-pages)
2013-04-01  5:33   ` Changhee Han
     [not found]     ` <1364794429-20477-1-git-send-email-ch0.han-Hm3cg6mZ9cc@public.gmane.org>
2013-04-01  6:13       ` Mike Frysinger
     [not found]         ` <201304010213.06056.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01  6:22           ` Michael Kerrisk (man-pages)
     [not found]             ` <CAKgNAki_8bOsuKTJLx3iMLeSvVXHo0bZf8zSUQ08RR7+D33xgQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01  7:19               ` Mike Frysinger
     [not found]                 ` <201304010319.45019.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01  7:36                   ` Michael Kerrisk (man-pages)
     [not found]                     ` <CAKgNAkhBASGvXGfdBSjpGaMuxoJofcQvZQrX3a=uxbcKQnXOAQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01  8:29                       ` Mike Frysinger
     [not found]                         ` <201304010429.45737.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01  9:29                           ` Michael Kerrisk (man-pages)
     [not found]                             ` <CAKgNAkij3zDwakWvcRkRbknmV2Hpt4HWfH4uVqmxp+7gQek-2g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01 10:32                               ` Mike Frysinger
     [not found]                                 ` <201304010632.41520.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-02  6:54                                   ` Michael Kerrisk (man-pages)
     [not found]                                     ` <CAKgNAkgG2kdCC1tyZQkYU7O_nP7RB8VoCmx6eb8FcudU1s6RgA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-02 23:17                                       ` [PATCH] man2 : syscall.2 : document syscall calling conventions Mike Frysinger
2013-04-07 10:00                                         ` Michael Kerrisk (man-pages)
2013-04-07 13:55                                           ` Kyle McMartin
2013-04-07 14:56                                             ` James Bottomley
2013-04-07 15:11                                               ` Kyle McMartin
     [not found]                                                 ` <20130407151134.GX12938-PfSpb0PWhxZc2C7mugBRk2EX/6BAtgUQ@public.gmane.org>
2013-04-07 15:38                                                   ` James Bottomley
2013-04-08  9:18                                                   ` Michael Kerrisk (man-pages)
     [not found]                                             ` <20130407135514.GW12938-PfSpb0PWhxZc2C7mugBRk2EX/6BAtgUQ@public.gmane.org>
2013-04-07 18:39                                               ` Mike Frysinger
2013-04-07 18:48                                                 ` John David Anglin
     [not found]                                                   ` <BLU0-SMTP986B123D17DB8B88214F797C40-MsuGFMq8XAE@public.gmane.org>
2013-04-08  9:20                                                     ` Michael Kerrisk (man-pages)
2013-04-08  9:20                                                       ` Michael Kerrisk (man-pages)
     [not found]                                                       ` <CAKgNAkhv6tovvnucoofDR-eOe4H7xeFZDam9+iaVVndEqbuoXg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-12  1:40                                                         ` Mike Frysinger
     [not found]                                                           ` <201304112140.18506.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-16  6:01                                                             ` Michael Kerrisk (man-pages)
2013-04-12  1:55                                                   ` Mike Frysinger
     [not found]                                                     ` <201304112155.46349.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-12  2:34                                                       ` John David Anglin
2013-04-12  3:38                                                         ` Mike Frysinger [this message]
2013-04-12  4:45                                                           ` James Bottomley
2013-04-12 12:17                                                             ` John David Anglin
2013-04-12 18:45                                                             ` Mike Frysinger
2013-04-12 19:14                                                               ` James Bottomley
2013-04-12 19:46                                                                 ` Mike Frysinger
2013-04-12 20:25                                                                   ` James Bottomley
2013-04-12 14:01                                                     ` Kyle McMartin
     [not found]                                           ` <CAKgNAkgODPSWSeA8ZymiAjFBqSAZQMtQe9GW84Y6QHdFEc9S-w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-07 18:43                                             ` Mike Frysinger
2013-04-01  8:37                   ` [PATCH] man2 : syscall.2 : add notes Mike Frysinger
     [not found]                     ` <201304010437.52901.vapier-aBrp7R+bbdUdnm+yROfE0A@public.gmane.org>
2013-04-01  9:30                       ` Michael Kerrisk (man-pages)
     [not found]                         ` <CAKgNAkit-qRPErHDzGEJ_yedA+O97bFxDsqWJMZOhCZ9DPvOtw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-04-01 10:09                           ` Mike Frysinger
2013-04-01  7:05           ` Fw : Re : " 한창희

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=201304112338.56618.vapier@gentoo.org \
    --to=vapier@gentoo.org \
    --cc=dave.anglin@bell.net \
    --cc=deller@gmx.de \
    --cc=jejb@parisc-linux.org \
    --cc=kyle@infradead.org \
    --cc=kyle@mcmartin.ca \
    --cc=linux-man@vger.kernel.org \
    --cc=linux-parisc@vger.kernel.org \
    --cc=mtk.manpages@gmail.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.