Sync usage with man page.
[netbsd-mini2440.git] / lib / libc / arch / sh3 / sys / ptrace.S
blobf83fe4b0d9f36e15503d7533ddea1bc00fcfc71e
1 /*      $NetBSD: ptrace.S,v 1.7 2006/01/06 03:58:31 uwe Exp $   */
3 /*-
4  * Copyright (c) 1990 The Regents of the University of California.
5  * All rights reserved.
6  *
7  * This code is derived from software contributed to Berkeley by
8  * William Jolitz.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  * 1. Redistributions of source code must retain the above copyright
14  *    notice, this list of conditions and the following disclaimer.
15  * 2. Redistributions in binary form must reproduce the above copyright
16  *    notice, this list of conditions and the following disclaimer in the
17  *    documentation and/or other materials provided with the distribution.
18  * 3. Neither the name of the University nor the names of its contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
26  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32  * SUCH DAMAGE.
33  *
34  *      from: @(#)ptrace.s      5.1 (Berkeley) 4/23/90
35  */
37 #include <machine/asm.h>
38 #if defined(SYSLIBC_SCCS) && !defined(lint)
39         RCSID("$NetBSD: ptrace.S,v 1.7 2006/01/06 03:58:31 uwe Exp $")
40 #endif /* SYSLIBC_SCCS and not lint */
42 #include "SYS.h"
45  * int
46  * ptrace(int request, pid_t pid, caddr_t addr, int data);
47  */
48 ENTRY(ptrace)
49 #ifdef _REENTRANT
51         mov.l   .L___errno, r1
52         PIC_PROLOGUE(.L_GOT)
53         sts.l   pr, @-sp
54         mov.l   r7, @-sp
55         mov.l   r6, @-sp
56         mov.l   r5, @-sp
57 1:      CALL    r1
58          mov.l  r4, @-sp
59         mov.l   @sp+, r4
60         mov.l   @sp+, r5
61         mov.l   @sp+, r6
62         mov.l   @sp+, r7
63         lds.l   @sp+, pr
64         PIC_EPILOGUE
66 #else  /* ! _REENTRANT */
68 #ifdef PIC
69         mova    .L_GOT, r0
70         mov.l   .L_GOT, r1
71         add     r0, r1
72         mov.l   .L_errno, r0
73         mov.l   @(r0, r1), r0
74 #else
75         mov.l   .L_errno, r0
76 #endif
78 #endif /* ! _REENTRANT */
80         mov     #0, r1
81         mov.l   r1, @r0                 /* errno = 0; */
83         mov     #SYS_ptrace, r0
84         trapa   #0x80
85         bf      err
86         rts
87          nop
88 err:
89         JUMP_CERROR
91         .align  2
92 .L_GOT:
93         PIC_GOT_DATUM
95 #ifdef _REENTRANT
96         .global _C_LABEL(__errno)
97 .L___errno:
98         CALL_DATUM(_C_LABEL(__errno), 1b)
100 #else  /* ! _REENTRANT */
101         .global _C_LABEL(errno)
102 .L_errno:
103 #ifdef PIC
104         .long   PIC_GOT(_C_LABEL(errno))
105 #else
106         .long   _C_LABEL(errno)
107 #endif
109 #endif /* ! _REENTRANT */
111         SET_ENTRY_SIZE(ptrace)