/* Copyright (C) 1991, 1994 Free Software Foundation, Inc. Ported to standalone by Joel Sherrill jsherril@redstone-emh2.army.mil, On-Line Applications Research Corporation. This file is part of the GNU C Library. 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include extern char edata[]; /*extern unsigned long memSize asm("memSize");*/ unsigned long memSize = 64*1024*1024-4; PTR __curbrk = (PTR)edata; PTR __rorig = (PTR)edata; unsigned long __C_heap_size; PTR __rlimit; static __brk_init_needed = 1; int DEFUN(__brk, (inaddr), PTR inaddr) { if(__brk_init_needed) __NONE_set_memvals(); if ( ( (void *)inaddr > (void *)__rlimit ) || ( (void *)inaddr < (void *)__rorig ) ) return -1; __curbrk = inaddr; return 0; } /* Initialization Code for Memory Allocation */ void DEFUN(__NONE_set_memvals, (argc, argv, envp), int argc AND char **argv AND char **envp) { __brk_init_needed = 0; __rorig = __curbrk; __C_heap_size = (memSize - (unsigned long)(__curbrk))/2; __rlimit = __curbrk + __C_heap_size; (void) &__NONE_set_memvals; /* Avoid "defined but not used" warning. */ }