11.5Smatt/* $NetBSD: brk.S,v 1.5 2014/08/23 02:24:22 matt Exp $ */ 21.1Sross 31.1Sross#include "SYS.h" 41.1Sross 51.5Smatt 61.5Smatt .hidden _C_LABEL(__curbrk) 71.1Sross .globl _C_LABEL(__curbrk) 81.5Smatt .hidden _C_LABEL(__minbrk) 91.1Sross .globl _C_LABEL(__minbrk) 101.1Sross .globl _C_LABEL(_end) 111.1Sross 121.1Sross#ifdef WEAK_ALIAS 131.1SrossWEAK_ALIAS(brk, _brk) 141.1Sross#endif 151.1Sross 161.5Smatt .data 171.5Smatt .p2align 3 181.3Sross_C_LABEL(__minbrk): 191.5Smatt .quad _C_LABEL(_end) 201.5Smatt_C_LABEL(__curbrk): 211.5Smatt .quad _C_LABEL(_end) 221.1Sross 231.1SrossENTRY(_brk) 241.5Smatt addis %r9,%r2,_C_LABEL(__minbrk)@toc@ha 251.5Smatt ldptru %r5,_C_LABEL(__minbrk)@toc@l(%r9) 261.5Smatt cmpptrl %r5,%r3 # if (__minbrk <= r3) 271.5Smatt#ifdef __PPC_ISEL__ 281.5Smatt iselgt %r3,%r5,%r3 291.5Smatt#else 301.1Sross bgt 0f 311.1Sross mr %r5,%r3 # r5 = r3 321.1Sross0: 331.1Sross mr %r3,%r5 # new break value 341.5Smatt#endif 351.5Smatt _DOSYSCALL(break) # assume that r5 is preserved 361.1Sross bso 1f 371.5Smatt stptr %r5,__SIZEOF_POINTER__(%r9) 381.1Sross blr # return 0 391.1Sross 401.1Sross1: 411.5Smatt BRANCH_TO_CERROR() 421.5SmattEND(_brk) 43