1 /* Copyright (C) 1995-1997 Robert de Bath <rdebath@cix.compulink.co.uk>
2 * This file is part of the Linux-8086 C library and is distributed
3 * under the GNU Library General Public License.
8 /****************************************************************************/
10 #if defined(__GNUC__) && defined(__i386__)
11 extern char * __brk_addr
;
12 extern char * __brk();
15 char * __brk_addr
= 0; /* This holds the current return for sbrk(0) */
17 /* "mov %ebx,4(%esp),%ebx\n\t" "mov $45,%eax\n\t" */
33 if( __brk_addr
== 0 && (__brk_addr
= __brk(0)) == 0 )
48 if( __brk_addr_init() ) return (char*)-1;
49 if( brk_off
== 0 ) return __brk_addr
;
51 new_brk
= __brk_addr
+ brk_off
;
52 __brk_addr
= __brk(new_brk
);
53 if( __brk_addr
!= new_brk
)
58 return __brk_addr
- brk_off
;
67 if( __brk_addr_init() ) return -1;
69 __brk_addr
= __brk(new_brk
);
70 if( __brk_addr
== new_brk
) return 0;