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