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

Subversion Repositories openrisc

[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc1/] [libgloss/] [m32r/] [sbrk.c] - Diff between revs 207 and 345

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

Rev 207 Rev 345
#include <sys/types.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/stat.h>
#include "syscall.h"
#include "syscall.h"
#include "eit.h"
#include "eit.h"
 
 
caddr_t
caddr_t
_sbrk (int incr)
_sbrk (int incr)
{
{
  /* `_end' is defined in the linker script.
  /* `_end' is defined in the linker script.
     We must handle it carefully as we don't want the compiler to think
     We must handle it carefully as we don't want the compiler to think
     it lives in the small data area.  Use medium model to ensure 32 bit
     it lives in the small data area.  Use medium model to ensure 32 bit
     addressability.  */
     addressability.  */
  extern char _end __attribute__ ((__model__(__medium__)));
  extern char _end __attribute__ ((__model__(__medium__)));
  static char *heap_end;
  static char *heap_end;
  char *prev_heap_end;
  char *prev_heap_end;
  char *sp = (char *)&sp;
  char *sp = (char *)&sp;
 
 
  if (heap_end == 0)
  if (heap_end == 0)
    {
    {
      heap_end = &_end;
      heap_end = &_end;
    }
    }
  prev_heap_end = heap_end;
  prev_heap_end = heap_end;
  if (heap_end > sp)
  if (heap_end > sp)
    {
    {
      _write (1, "Heap and stack collision\n", 25);
      _write (1, "Heap and stack collision\n", 25);
#if 0 /* Calling abort brings in the signal handling code.  */
#if 0 /* Calling abort brings in the signal handling code.  */
      abort ();
      abort ();
#else
#else
      exit (1);
      exit (1);
#endif
#endif
    }
    }
  heap_end += incr;
  heap_end += incr;
  return (caddr_t) prev_heap_end;
  return (caddr_t) prev_heap_end;
}
}
 
 

powered by: WebSVN 2.1.0

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