xref: /netbsd-src/lib/libc/arch/powerpc64/sys/sbrk.S (revision 413d532bcc3f62d122e56d92e13ac64825a40baf)
1/*	$NetBSD: sbrk.S,v 1.3 2006/07/07 06:50:06 ross 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
13	.data
14_C_LABEL(__curbrk):
15	.long	_C_LABEL(_end)
16	.text
17
18	.macro  LdAddr  r,sym
19	.pushsection    ".toc","aw"
20100:	.tc \sym[TC],\sym
21	.popsection
22	ld      \r,100b@toc(2)
23	.endm
24
25ENTRY(_sbrk)
26	ldAddr	%r6,__curbrk
27	add	%r3,%r3,%r6
28	mr	%r7,%r3				# r7 = new break
29	li	%r0,SYS_break
30	sc					# break(new_break)
31	bso	1f
32	mr	%r3,%r6				# set return value
33	LdAddr	%r6,__curbrk
34	std	%r7,0(%r6)
35	blr
361:
37	b	PIC_PLT(_C_LABEL(__cerror))
38