xref: /csrg-svn/lib/libc/sparc/sys/brk.s (revision 61176)
154403Storek/*
2*61176Sbostic * Copyright (c) 1992, 1993
3*61176Sbostic *	The Regents of the University of California.  All rights reserved.
454403Storek *
554403Storek * This software was developed by the Computer Systems Engineering group
654403Storek * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
754403Storek * contributed to Berkeley.
854403Storek *
954403Storek * %sccs.include.redist.c%
1054403Storek *
1154403Storek * from: $Header: brk.s,v 1.3 92/06/25 12:56:05 mccanne Exp $
1254403Storek */
1354403Storek
1454403Storek#if defined(LIBC_SCCS) && !defined(lint)
15*61176Sbostic	.asciz "@(#)brk.s	8.1 (Berkeley) 06/04/93"
1654403Storek#endif /* LIBC_SCCS and not lint */
1754403Storek
1854403Storek#include "SYS.h"
1954403Storek
2054403Storek	.globl	curbrk
2154403Storek	.globl	minbrk
2254403Storek
2354403Storek	.data
2454403Storekminbrk:	.long	_end			! lower brk limit; also for gmon code
2554403Storek	.text
2654403Storek
2754403StorekENTRY(brk)
2854403Storek	sethi	%hi(minbrk), %o1	! %o1 = minbrk
2954403Storek	ld	[%o1 + %lo(minbrk)], %o1
3054403Storek	cmp	%o1, %o0		! if (minbrk > %o0)
3154403Storek	bg,a	0f
3254403Storek	 mov	%o1, %o0		!	%o0 = minbrk
3354403Storek0:
3454403Storek	mov	%o0, %o2		! save argument to syscall
3554403Storek	mov	SYS_break, %g1
3654403Storek	t	ST_SYSCALL
3754403Storek	bcc,a	1f
3854403Storek	 sethi	%hi(curbrk), %g1
3954403Storek	ERROR()
4054403Storek1:
4154403Storek	retl				! success, return 0 & record new break
4254403Storek	 st	%o2, [%g1 + %lo(curbrk)]
43