brk.S revision 1.3
11.3Sross/* $NetBSD: brk.S,v 1.3 2006/07/07 06:50:06 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.3Sross100: .tc \sym[TC],\sym 161.2Sross .popsection 171.2Sross ld \r,100b@toc(2) 181.2Sross .endm 191.1Sross 201.3Sross .data 211.3Sross_C_LABEL(__minbrk): 221.3Sross .long _C_LABEL(_end) 231.1Sross .text 241.1Sross 251.1SrossENTRY(_brk) 261.2Sross LdAddr %r5,_end 271.2Sross cmpld %r5,%r3 # if (&_end <= r3) 281.1Sross bgt 0f 291.1Sross mr %r5,%r3 # r5 = r3 301.1Sross0: 311.1Sross mr %r3,%r5 # new break value 321.1Sross li %r0,SYS_break 331.1Sross sc # assume, that r5 is kept 341.1Sross bso 1f 351.2Sross LdAddr %r6,__curbrk 361.2Sross std %r5,0(%r6) 371.1Sross blr # return 0 381.1Sross 391.1Sross1: 401.2Sross b .__cerror 41