File: sysdep.h

package info (click to toggle)
glibc-pre2.1 2.0.93-980414-1
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 43,920 kB
  • ctags: 42,602
  • sloc: ansic: 325,848; asm: 23,534; makefile: 3,352; sh: 3,283; awk: 582; perl: 474; csh: 15; sed: 10
file content (151 lines) | stat: -rw-r--r-- 3,612 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/* Copyright (C) 1997 Free Software Foundation, Inc.
   This file is part of the GNU C Library.
   Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, January 1997.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public License as
   published by the Free Software Foundation; either version 2 of the
   License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public
   License along with the GNU C Library; see the file COPYING.LIB.  If not,
   write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   Boston, MA 02111-1307, USA.  */

#ifndef _LINUX_SPARC_SYSDEP_H
#define _LINUX_SPARC_SYSDEP_H 1

#include <sysdeps/unix/sparc/sysdep.h>

/* Some SparcLinux syscalls are SunOS specific;
   we don't want to use them inside glibc */
#undef __NR_execv
#undef __NR_mctl
#undef __NR_sbrk
#undef __NR_sstk
#undef __NR_vadvise
#undef __NR_madvise
#undef __NR_mincore
#undef __NR_gethostname
#undef __NR_getdtablesize
#undef __NR_getdopt
#undef __NR_setdopt
#undef __NR_socket
#undef __NR_connect
#undef __NR_accept
#undef __NR_send
#undef __NR_recv
#undef __NR_bind
#undef __NR_setsockopt
#undef __NR_listen
#undef __NR_sigvec
#undef __NR_sigblock
#undef __NR_sigsetmask
#undef __NR_sigpause
#undef __NR_sigstack
#undef __NR_recvmsg
#undef __NR_sendmsg
#undef __NR_vtrace
#undef __NR_getsockopt
#undef __NR_recvfrom
#undef __NR_sendto
#undef __NR_shutdown
#undef __NR_socketpair
#undef __NR_utimes
#undef __NR_adjtime
#undef __NR_getpeername
#undef __NR_gethostid
#undef __NR_killpg
#undef __NR_getsockname
#undef __NR_getmsg
#undef __NR_putmsg
#undef __NR_poll
#undef __NR_nfssvc
#undef __NR_getdirentries
#undef __NR_async_daemon
#undef __NR_getfh
#undef __NR_getdomainname
#undef __NR_exportfs
#undef __NR_semsys
#undef __NR_msgsys
#undef __NR_shmsys
#undef __NR_auditsys
#undef __NR_rfssys
#undef __NR_fchroot
#undef __NR_vpixsys
#undef __NR_aioread
#undef __NR_aiowrite
#undef __NR_aiowait
#undef __NR_aiocancel
#undef __NR_pathconf
#undef __NR_fpathconf
#undef __NR_sysconf

#undef SYS_ify
#define SYS_ify(syscall_name) __NR_##syscall_name

#ifdef ASSEMBLER

#ifdef DONT_LOAD_G1
# define LOADSYSCALL(x)
#else
# define LOADSYSCALL(x) mov __NR_##x, %g1
#endif

/* Linux/SPARC uses a different trap number */
#undef PSEUDO
#undef ENTRY
#undef END
#undef LOC

#define ENTRY(name) \
	.global C_SYMBOL_NAME(name); \
	.align 4;\
	C_LABEL(name);\
	.type name,@function;

#define END(name) \
	.size name, . - name

#define LOC(name)  . ## L ## name

#ifdef PIC
#define SYSCALL_ERROR_HANDLER					\
	.global C_SYMBOL_NAME(__errno_location);		\
        .type   C_SYMBOL_NAME(__errno_location),@function;	\
	save   %sp,-96,%sp;					\
	call   __errno_location;				\
	nop;							\
	st %i0,[%o0];						\
	restore;						\
	retl;							\
	mov -1,%o0;
#else
#define SYSCALL_ERROR_HANDLER					\
	save %sp,-96,%sp;					\
	call __errno_location;					\
	nop;							\
	st %i0,[%o0];						\
	restore;						\
	retl;							\
	mov -1,%o0;
#endif   /* PIC */

#define PSEUDO(name, syscall_name, args)			\
	.text;							\
	ENTRY(name);						\
	LOADSYSCALL(syscall_name);				\
	ta 0x10;						\
	bcc,a 9000f;						\
	nop;							\
	SYSCALL_ERROR_HANDLER;					\
9000:;

#endif	/* ASSEMBLER */

#endif /* linux/sparc/sysdep.h */