Home | History | Annotate | Line # | Download | only in sys
sbrk.S revision 1.12
      1  1.12    joerg /*	$NetBSD: sbrk.S,v 1.12 2013/09/12 15:36:15 joerg Exp $	*/
      2   1.1  thorpej 
      3   1.1  thorpej #include "SYS.h"
      4   1.1  thorpej 
      5  1.10     matt #if defined(LIBC_SCCS) && !defined(lint)
      6  1.12    joerg __RCSID("$NetBSD: sbrk.S,v 1.12 2013/09/12 15:36:15 joerg Exp $")
      7  1.10     matt #endif /* LIBC_SCCS && !lint */
      8  1.10     matt 
      9   1.5   kleink 	.globl	_C_LABEL(__curbrk)
     10   1.6   kleink 	.globl	_C_LABEL(_end)
     11   1.1  thorpej 
     12   1.7   kleink #ifdef WEAK_ALIAS
     13   1.7   kleink WEAK_ALIAS(sbrk, _sbrk)
     14   1.7   kleink #endif
     15   1.7   kleink 
     16   1.1  thorpej 	.data
     17   1.5   kleink _C_LABEL(__curbrk):
     18   1.6   kleink 	.long	_C_LABEL(_end)
     19   1.1  thorpej 	.text
     20   1.1  thorpej 
     21   1.7   kleink ENTRY(_sbrk)
     22  1.12    joerg #ifdef __PIC__
     23   1.9     matt 	mflr	%r10
     24  1.11     matt 	PIC_GOTSETUP(%r5)
     25   1.9     matt 	mtlr	%r10
     26   1.9     matt 	lwz	%r5,_C_LABEL(__curbrk)@got(%r5)
     27   1.9     matt 	lwz	%r6,0(%r5)
     28   1.1  thorpej #else
     29   1.9     matt 	lis	%r5,_C_LABEL(__curbrk)@ha
     30  1.10     matt 	lwzu	%r6,_C_LABEL(__curbrk)@l(%r5)	# r6 = old break, r5 = &curbrk
     31   1.4   tsubai #endif
     32   1.9     matt 	add	%r3,%r3,%r6
     33   1.9     matt 	mr	%r7,%r3				# r7 = new break
     34  1.10     matt 	_DOSYSCALL(break)			# break(new_break)
     35   1.1  thorpej 	bso	1f
     36   1.9     matt 	mr	%r3,%r6				# set return value
     37  1.10     matt 	stw	%r7,0(%r5)			# record new break
     38   1.1  thorpej 	blr
     39   1.1  thorpej 1:
     40  1.10     matt 	b	_C_LABEL(__cerror)
     41  1.10     matt END(_sbrk)
     42