Home | History | Annotate | Line # | Download | only in sys
sbrk.S revision 1.8.4.1
      1  1.8.4.1     tron /*	$NetBSD: sbrk.S,v 1.8.4.1 2004/07/23 13:56:07 tron 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.7   kleink #ifdef WEAK_ALIAS
      9      1.7   kleink WEAK_ALIAS(sbrk, _sbrk)
     10      1.7   kleink #endif
     11      1.7   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.7   kleink ENTRY(_sbrk)
     18      1.1  thorpej #ifdef PIC
     19  1.8.4.1     tron 	mflr	%r10
     20      1.4   tsubai 	bl	_GLOBAL_OFFSET_TABLE_@local-4
     21  1.8.4.1     tron 	mflr	%r5
     22  1.8.4.1     tron 	mtlr	%r10
     23  1.8.4.1     tron 	lwz	%r5,_C_LABEL(__curbrk)@got(%r5)
     24  1.8.4.1     tron 	lwz	%r6,0(%r5)
     25      1.1  thorpej #else
     26  1.8.4.1     tron 	lis	%r5,_C_LABEL(__curbrk)@ha
     27  1.8.4.1     tron 	lwz	%r6,_C_LABEL(__curbrk)@l(%r5)	# r6 = old break
     28      1.4   tsubai #endif
     29  1.8.4.1     tron 	add	%r3,%r3,%r6
     30  1.8.4.1     tron 	mr	%r7,%r3				# r7 = new break
     31  1.8.4.1     tron 	li	%r0,SYS_break
     32      1.1  thorpej 	sc					# break(new_break)
     33      1.1  thorpej 	bso	1f
     34  1.8.4.1     tron 	mr	%r3,%r6				# set return value
     35      1.4   tsubai #ifdef PIC
     36  1.8.4.1     tron 	stw	%r7,0(%r5)
     37      1.4   tsubai #else
     38  1.8.4.1     tron 	stw	%r7,_C_LABEL(__curbrk)@l(%r5)	# 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