Home | History | Annotate | Line # | Download | only in sys
sbrk.S revision 1.7
      1 /*	$NetBSD: sbrk.S,v 1.7 2000/06/23 15:40:38 kleink Exp $	*/
      2 
      3 #include "SYS.h"
      4 
      5 	.globl	_C_LABEL(__curbrk)
      6 	.globl	_C_LABEL(_end)
      7 
      8 #ifdef WEAK_ALIAS
      9 WEAK_ALIAS(sbrk, _sbrk)
     10 #endif
     11 
     12 	.data
     13 _C_LABEL(__curbrk):
     14 	.long	_C_LABEL(_end)
     15 	.text
     16 
     17 #ifdef WEAK_ALIAS
     18 ENTRY(_sbrk)
     19 #else
     20 ENTRY(sbrk)
     21 #endif
     22 #ifdef PIC
     23 	mflr	10
     24 	bl	_GLOBAL_OFFSET_TABLE_@local-4
     25 	mflr	5
     26 	mtlr	10
     27 	lwz	5,_C_LABEL(__curbrk)@got(5)
     28 	lwz	6,0(5)
     29 #else
     30 	lis	5,_C_LABEL(__curbrk)@ha
     31 	lwz	6,_C_LABEL(__curbrk)@l(5)	# r6 = old break
     32 #endif
     33 	add	3,3,6
     34 	mr	7,3				# r7 = new break
     35 	li	0,SYS_break
     36 	sc					# break(new_break)
     37 	bso	1f
     38 	mr	3,6				# set return value
     39 #ifdef PIC
     40 	stw	7,0(5)
     41 #else
     42 	stw	7,_C_LABEL(__curbrk)@l(5)	# record new break
     43 #endif
     44 	blr
     45 1:
     46 	b	PIC_PLT(_C_LABEL(__cerror))
     47