brk.S revision 1.2
1/* $NetBSD: brk.S,v 1.2 2006/07/06 17:05:04 ross Exp $ */ 2 3#include "SYS.h" 4 5 .globl _C_LABEL(__curbrk) 6 .globl _C_LABEL(__minbrk) 7 .globl _C_LABEL(_end) 8 9#ifdef WEAK_ALIAS 10WEAK_ALIAS(brk, _brk) 11#endif 12 13 .macro LdAddr r,sym 14 .pushsection ".toc","aw" 15100: .tc sym[TC],sym 16 .popsection 17 ld \r,100b@toc(2) 18 .endm 19 20 .text 21 22ENTRY(_brk) 23 LdAddr %r5,_end 24 cmpld %r5,%r3 # if (&_end <= r3) 25 bgt 0f 26 mr %r5,%r3 # r5 = r3 270: 28 mr %r3,%r5 # new break value 29 li %r0,SYS_break 30 sc # assume, that r5 is kept 31 bso 1f 32 LdAddr %r6,__curbrk 33 std %r5,0(%r6) 34 blr # return 0 35 361: 37 b .__cerror 38