brk.S revision 1.2
11.2Sross/* $NetBSD: brk.S,v 1.2 2006/07/06 17:05:04 ross Exp $ */ 21.1Sross 31.1Sross#include "SYS.h" 41.1Sross 51.1Sross .globl _C_LABEL(__curbrk) 61.1Sross .globl _C_LABEL(__minbrk) 71.1Sross .globl _C_LABEL(_end) 81.1Sross 91.1Sross#ifdef WEAK_ALIAS 101.1SrossWEAK_ALIAS(brk, _brk) 111.1Sross#endif 121.1Sross 131.2Sross .macro LdAddr r,sym 141.2Sross .pushsection ".toc","aw" 151.2Sross100: .tc sym[TC],sym 161.2Sross .popsection 171.2Sross ld \r,100b@toc(2) 181.2Sross .endm 191.1Sross 201.1Sross .text 211.1Sross 221.1SrossENTRY(_brk) 231.2Sross LdAddr %r5,_end 241.2Sross cmpld %r5,%r3 # if (&_end <= r3) 251.1Sross bgt 0f 261.1Sross mr %r5,%r3 # r5 = r3 271.1Sross0: 281.1Sross mr %r3,%r5 # new break value 291.1Sross li %r0,SYS_break 301.1Sross sc # assume, that r5 is kept 311.1Sross bso 1f 321.2Sross LdAddr %r6,__curbrk 331.2Sross std %r5,0(%r6) 341.1Sross blr # return 0 351.1Sross 361.1Sross1: 371.2Sross b .__cerror 38