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