xref: /csrg-svn/lib/libc/sparc/sys/brk.s (revision 54403)
1*54403Storek/*
2*54403Storek * Copyright (c) 1992 The Regents of the University of California.
3*54403Storek * All rights reserved.
4*54403Storek *
5*54403Storek * This software was developed by the Computer Systems Engineering group
6*54403Storek * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
7*54403Storek * contributed to Berkeley.
8*54403Storek *
9*54403Storek * %sccs.include.redist.c%
10*54403Storek *
11*54403Storek * from: $Header: brk.s,v 1.3 92/06/25 12:56:05 mccanne Exp $
12*54403Storek */
13*54403Storek
14*54403Storek#if defined(LIBC_SCCS) && !defined(lint)
15*54403Storek	.asciz "@(#)brk.s	5.1 (Berkeley) 06/25/92"
16*54403Storek#endif /* LIBC_SCCS and not lint */
17*54403Storek
18*54403Storek#include "SYS.h"
19*54403Storek
20*54403Storek	.globl	curbrk
21*54403Storek	.globl	minbrk
22*54403Storek
23*54403Storek	.data
24*54403Storekminbrk:	.long	_end			! lower brk limit; also for gmon code
25*54403Storek	.text
26*54403Storek
27*54403StorekENTRY(brk)
28*54403Storek	sethi	%hi(minbrk), %o1	! %o1 = minbrk
29*54403Storek	ld	[%o1 + %lo(minbrk)], %o1
30*54403Storek	cmp	%o1, %o0		! if (minbrk > %o0)
31*54403Storek	bg,a	0f
32*54403Storek	 mov	%o1, %o0		!	%o0 = minbrk
33*54403Storek0:
34*54403Storek	mov	%o0, %o2		! save argument to syscall
35*54403Storek	mov	SYS_break, %g1
36*54403Storek	t	ST_SYSCALL
37*54403Storek	bcc,a	1f
38*54403Storek	 sethi	%hi(curbrk), %g1
39*54403Storek	ERROR()
40*54403Storek1:
41*54403Storek	retl				! success, return 0 & record new break
42*54403Storek	 st	%o2, [%g1 + %lo(curbrk)]
43