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