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

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [newlib-1.17.0/] [libgloss/] [fr30/] [syscalls.c] - Diff between revs 148 and 158

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 148 Rev 158
/* FR30 system call emulation code
/* FR30 system call emulation code
   Copyright (C) 1998 Free Software Foundation, Inc.
   Copyright (C) 1998 Free Software Foundation, Inc.
   Contributed by Cygnus Solutions.
   Contributed by Cygnus Solutions.
 
 
This file is part of GNU CC.
This file is part of GNU CC.
 
 
GNU CC is free software; you can redistribute it and/or modify
GNU CC is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
the Free Software Foundation; either version 2, or (at your option)
any later version.
any later version.
 
 
GNU CC is distributed in the hope that it will be useful,
GNU CC is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
GNU General Public License for more details.
 
 
You should have received a copy of the GNU General Public License
You should have received a copy of the GNU General Public License
along with GNU CC; see the file COPYING.  If not, write to
along with GNU CC; see the file COPYING.  If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA.  */
Boston, MA 02111-1307, USA.  */
 
 
#include <sys/stat.h>
#include <sys/stat.h>
#include "../syscall.h"
#include "../syscall.h"
 
 
int
int
_read (file, ptr, len)
_read (file, ptr, len)
     int    file;
     int    file;
     char * ptr;
     char * ptr;
     int    len;
     int    len;
{
{
  asm ("ldi:8 %0, r0" :: "i" (SYS_read) : "r0");
  asm ("ldi:8 %0, r0" :: "i" (SYS_read) : "r0");
  asm ("int   #10");
  asm ("int   #10");
 
 
  return;
  return;
}
}
 
 
int
int
_lseek (file, ptr, dir)
_lseek (file, ptr, dir)
     int file;
     int file;
     int ptr;
     int ptr;
     int dir;
     int dir;
{
{
  asm ("ldi:8 %0, r0" :: "i" (SYS_lseek) : "r0");
  asm ("ldi:8 %0, r0" :: "i" (SYS_lseek) : "r0");
  asm ("int   #10");
  asm ("int   #10");
 
 
  return;
  return;
}
}
 
 
int
int
_write (file, ptr, len)
_write (file, ptr, len)
     int    file;
     int    file;
     char * ptr;
     char * ptr;
     int    len;
     int    len;
{
{
  asm ("ldi:8 %0, r0" :: "i" (SYS_write) : "r0");
  asm ("ldi:8 %0, r0" :: "i" (SYS_write) : "r0");
  asm ("int   #10");
  asm ("int   #10");
 
 
  return;
  return;
}
}
 
 
int
int
_open (path, flags)
_open (path, flags)
     const char * path;
     const char * path;
     int flags;
     int flags;
{
{
  asm ("ldi:8  %0, r0" :: "i" (SYS_open) : "r0");
  asm ("ldi:8  %0, r0" :: "i" (SYS_open) : "r0");
  asm ("int    #10");
  asm ("int    #10");
 
 
  return;
  return;
}
}
 
 
int
int
_close (file)
_close (file)
     int file;
     int file;
{
{
  asm ("ldi:8  %0, r0" :: "i" (SYS_close) : "r0");
  asm ("ldi:8  %0, r0" :: "i" (SYS_close) : "r0");
  asm ("int    #10");
  asm ("int    #10");
 
 
  return 0;
  return 0;
}
}
 
 
void
void
_exit (n)
_exit (n)
     int n;
     int n;
{
{
  asm ("ldi:8  %0, r0" :: "i" (SYS_exit) : "r0");
  asm ("ldi:8  %0, r0" :: "i" (SYS_exit) : "r0");
  asm ("int    #10");
  asm ("int    #10");
}
}
 
 
 
 
caddr_t
caddr_t
_sbrk (incr)
_sbrk (incr)
     int incr;
     int incr;
{
{
  extern char   end asm ("_end");       /* Defined by the linker */
  extern char   end asm ("_end");       /* Defined by the linker */
  extern int    __stack;                /* Defined by linker script.  */
  extern int    __stack;                /* Defined by linker script.  */
  static char * heap_end;
  static char * heap_end;
  char *        prev_heap_end;
  char *        prev_heap_end;
 
 
  if (heap_end == NULL)
  if (heap_end == NULL)
    heap_end = & end;
    heap_end = & end;
 
 
  prev_heap_end = heap_end;
  prev_heap_end = heap_end;
#if 0  
#if 0  
  if (heap_end + incr > __stack)
  if (heap_end + incr > __stack)
    {
    {
      _write ( 1, "_sbrk: Heap and stack collision\n", 32);
      _write ( 1, "_sbrk: Heap and stack collision\n", 32);
      abort ();
      abort ();
    }
    }
#endif
#endif
  heap_end += incr;
  heap_end += incr;
 
 
  return (caddr_t) prev_heap_end;
  return (caddr_t) prev_heap_end;
}
}
 
 
int
int
_fstat (file, st)
_fstat (file, st)
     int file;
     int file;
     struct stat * st;
     struct stat * st;
{
{
  st->st_mode = S_IFCHR;
  st->st_mode = S_IFCHR;
  return 0;
  return 0;
}
}
 
 
int
int
_unlink ()
_unlink ()
{
{
  return -1;
  return -1;
}
}
 
 
int
int
_isatty (fd)
_isatty (fd)
     int fd;
     int fd;
{
{
  return 0;
  return 0;
}
}
 
 
int
int
_raise ()
_raise ()
{
{
  return 0;
  return 0;
}
}
 
 
int
int
_times ()
_times ()
{
{
  return 0;
  return 0;
}
}
 
 
int
int
_kill (pid, sig)
_kill (pid, sig)
     int pid;
     int pid;
     int sig;
     int sig;
{
{
  return 0;
  return 0;
}
}
 
 
int
int
_getpid (void)
_getpid (void)
{
{
  return 0;
  return 0;
}
}
 
 

powered by: WebSVN 2.1.0

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