sbrk.S revision 1.1
1#include "SYS.h"
2
3	.data
4	.globl _end
5	.globl curbrk
6	.globl minbrk
7curbrk:	.long _end
8minbrk:	.long _end
9
10
11	.text
12PSEUDO_PREFIX(sbrk,break)
13
14	/* call break(curbrk + size) */
15	addis	6,0,curbrk@h
16	ori	6,6,curbrk@l	/* # 6 = &curbrk */
17	lwz	5, 0(6)		/* # 5 = *6 (old_curbrk) */
18	add	3, 5, 3		/* # 3 = new_curbrk */
19	mr	7, 3
20
21	sc
22
23	/* check for error */
24	cmpwi 0, 0
25	beq+ sbrk_ok		/* OK so this is stupid but I haven't read b */
26	b cerror
27
28	/* update, curbrk and return */
29sbrk_ok:
30	stw	7, 0(6)		/* # remember, 6=&curbrk, 7=new_curbrk */
31	mr	3, 5		/* # remember, 5=old_curbrk */
32	blr
33