OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [newlib-1.17.0/] [libgloss/] [cris/] [gensyscalls] - Blame information for rev 820

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 148 jeremybenn
#! /bin/sh
2
#  Copyright (C) 2005 Axis Communications.
3
#  All rights reserved.
4
#
5
#  Redistribution and use in source and binary forms, with or without
6
#  modification, are permitted provided that the following conditions
7
#  are met:
8
#
9
#  1. Redistributions of source code must retain the above copyright
10
#     notice, this list of conditions and the following disclaimer.
11
#
12
#  2. Neither the name of Axis Communications nor the names of its
13
#     contributors may be used to endorse or promote products derived
14
#     from this software without specific prior written permission.
15
#
16
#  THIS SOFTWARE IS PROVIDED BY AXIS COMMUNICATIONS AND ITS CONTRIBUTORS
17
#  ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
#  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL AXIS
20
#  COMMUNICATIONS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
21
#  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22
#  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
23
#  SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
#  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
25
#  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
26
#  IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
27
#  POSSIBILITY OF SUCH DAMAGE.
28
 
29
# To avoid an abundance of copyright/license messages for boilerplate
30
# code, we instead generate them from this file.  Generating the
31
# function code could also be done automatically, but at the cost of
32
# slightly more intricate build machinery and/or scattered syscall
33
# information.  Beware that the cat-lines must match the sed regexp
34
# "^cat > \([^ ]*\).*".
35
 
36
lu='/* -*- buffer-read-only: t -*-
37
   THIS FILE IS AUTOMATICALLY GENERATED
38
   FROM "'$0'".  */
39
#include "linunistd.h"
40
#define R(x) return (x); }
41
'
42
lui="$lu int"
43
r=") { R (_Sys_"
44
 
45
cat > close.c <
46
$lui _close (int fd${r}close (fd))
47
EOF
48
cat > execve.c <
49
$lui _execve (char *path, char **argv, char **env${r}execve (path, argv, env))
50
EOF
51
cat > exit.c <
52
$lu void _exit (int val) { _Sys_exit (val); /* Appease GCC: */ while (1) ; }
53
EOF
54
cat > fcntl.c <
55
$lui _fcntl (int fd, int cmd, long arg${r}fcntl (fd, cmd, arg))
56
EOF
57
cat > fork.c <
58
$lui _fork (void${r}fork ())
59
EOF
60
cat > fstat.c <
61
$lu#include 
62
#include 
63
int
64
_fstat (int fd, struct stat *buf)
65
{
66
  struct new_stat ks;
67
  int retval = _Sys_fstat (fd, &ks);
68
 
69
  /* Blank before filling it in.  */
70
  memset (buf, 0, sizeof (*buf));
71
 
72
  /* We have to translate from the linux struct new_stat.
73
     It seems we don't have to translate the contents, though.  */
74
  buf->st_dev = ks.st_dev;
75
  buf->st_ino = ks.st_ino;
76
  buf->st_mode = ks.st_mode;
77
  buf->st_nlink = ks.st_nlink;
78
  buf->st_uid = ks.st_uid;
79
  buf->st_gid = ks.st_gid;
80
  buf->st_rdev = ks.st_rdev;
81
  buf->st_size = ks.st_size;
82
  buf->st_blksize = ks.st_blksize;
83
  buf->st_blocks = ks.st_blocks;
84
  buf->st_atime = ks.st_atime;
85
  buf->st_mtime = ks.st_mtime;
86
  buf->st_ctime = ks.st_ctime;
87
  R (retval)
88
EOF
89
cat > getpid.c <
90
$lui _getpid (void${r}getpid ())
91
EOF
92
cat > gettod.c <
93
$lu#include 
94
#include 
95
int
96
_gettimeofday (struct timeval *tp, void *tzp
97
${r}gettimeofday (tp, tzp))
98
EOF
99
cat > isatty.c <
100
$lu
101
typedef unsigned int tcflag_t;
102
typedef unsigned char cc_t;
103
#define NCCS 19
104
 
105
struct termios {
106
        tcflag_t c_iflag;               /* input mode flags */
107
        tcflag_t c_oflag;               /* output mode flags */
108
        tcflag_t c_cflag;               /* control mode flags */
109
        tcflag_t c_lflag;               /* local mode flags */
110
        cc_t c_line;                    /* line discipline */
111
        cc_t c_cc[NCCS];                /* control characters */
112
};
113
 
114
/* From asm-etrax100/ioctls.h: beware of updates.  */
115
#define TCGETS          0x5401
116
 
117
int
118
_isatty (int fd)
119
{
120
  struct termios dummy;
121
  int save_errno = errno;
122
  int ret = _Sys_ioctl (fd, TCGETS, (unsigned long) &dummy);
123
  errno = save_errno;
124
  R (ret == 0)
125
EOF
126
cat > kill.c <
127
$lui _kill (int pid, int sig${r}kill (pid, sig))
128
EOF
129
cat > link.c <
130
$lui _link (const char *old, const char *new${r}link (old, new))
131
EOF
132
cat > lseek.c <
133
$lui _lseek (int fd, int offset, int whence${r}lseek (fd, offset, whence))
134
EOF
135
cat > open.c <
136
$lui _open (const char *fnam, int flags, int mode${r}open (fnam, flags, mode))
137
EOF
138
cat > read.c <
139
$lui _read (int fd, char *buf, int nbytes${r}read (fd, buf, nbytes))
140
EOF
141
cat > rename.c <
142
$lui _rename (const char *old, const char *new${r}rename (old, new))
143
EOF
144
cat > sbrk.c <
145
$lu
146
/* From asm-etrax100/mman.h: beware of updates.  */
147
#define PROT_READ       0x1             /* page can be read */
148
#define PROT_WRITE      0x2             /* page can be written */
149
#define MAP_ANONYMOUS   0x20            /* don't use a file */
150
char *
151
_sbrk (int d)
152
{
153
  static long last_alloc = 0;
154
 
155
  /* FIXME: Things are a whole lot different than elinux.  */
156
#ifdef __elinux__
157
 
158
  /* We can't promise linear memory from a predetermined location.
159
     We're NO_MM.  We're paria.  We have to rely on tweaks and unclean
160
     behavior.  We abuse the fact that the malloc function in newlib
161
     accepts nonlinear chunks in return to its sbrk calls (with a minor
162
     patch).  */
163
 
164
  /* We use an "old" type mmap, which takes a pointer to a vector of 6
165
     longs where the parameters are stored.  */
166
  long buffer[6];
167
 
168
  /* We can't return memory.  Well we could, but we would have to keep a
169
     list of previous allocations.  FIXME:  Seems reasonable to do that
170
     later.  */
171
  if (d < 0)
172
    return (char *) last_alloc;
173
 
174
  buffer[3] = MAP_ANONYMOUS;    /* Not associated with a file.  */
175
  buffer[4] = -1;               /* No file.  */
176
  buffer[0] = 0;                /* Address 0: let mmap pick one.  */
177
  buffer[1] = d;                /* Length.  */
178
  buffer[2] = (PROT_READ | PROT_WRITE); /* Protection flags.  */
179
  buffer[5] = 0;                /* Offset into file.  */
180
 
181
  last_alloc = _Sys_mmap (buffer);
182
 
183
  return (char *) last_alloc;
184
 
185
#else /* not __elinux__ */
186
 
187
  long prev_brk;
188
 
189
  if (last_alloc == 0)
190
  {
191
    last_alloc = _Sys_brk (0);
192
 
193
    if (last_alloc < 0)
194
      return (char *) -1;
195
  }
196
 
197
  prev_brk = last_alloc;
198
 
199
  if (_Sys_brk (last_alloc + d) < last_alloc + d)
200
    return (char *) -1;
201
 
202
  last_alloc += d;
203
 
204
  return (char *) prev_brk;
205
#endif
206
}
207
EOF
208
cat > stat.c <
209
$lu#include 
210
#include 
211
int
212
_stat (const char *path, struct stat *buf)
213
{
214
  struct new_stat ks;
215
  int retval = _Sys_stat (path, &ks);
216
 
217
  /* Blank before filling it in.  */
218
  memset (buf, 0, sizeof (*buf));
219
 
220
  /* We have to translate from the linux struct new_stat.
221
     It seems we don't have to translate the contents, though.  */
222
  buf->st_dev = ks.st_dev;
223
  buf->st_ino = ks.st_ino;
224
  buf->st_mode = ks.st_mode;
225
  buf->st_nlink = ks.st_nlink;
226
  buf->st_uid = ks.st_uid;
227
  buf->st_gid = ks.st_gid;
228
  buf->st_rdev = ks.st_rdev;
229
  buf->st_size = ks.st_size;
230
  buf->st_blksize = ks.st_blksize;
231
  buf->st_blocks = ks.st_blocks;
232
  buf->st_atime = ks.st_atime;
233
  buf->st_mtime = ks.st_mtime;
234
  buf->st_ctime = ks.st_ctime;
235
  R (retval)
236
EOF
237
cat > times.c <
238
$lu#include 
239
clock_t
240
_times (struct tms * tp${r}times (tp))
241
EOF
242
cat > unlink.c <
243
$lui _unlink (const char *f${r}unlink (f))
244
EOF
245
cat > wait.c <
246
$lui _wait (int *status${r}wait4 (_getpid(), status, 0, 0))
247
EOF
248
cat > write.c <
249
$lui _write (int fd, char *buf, int nbytes${r}write (fd, buf, nbytes))
250
EOF
251
exit 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.