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