1/* $NetBSD: brk.S,v 1.5 2014/08/23 02:24:22 matt Exp $ */ 2 3#include "SYS.h" 4 5 6 .hidden _C_LABEL(__curbrk) 7 .globl _C_LABEL(__curbrk) 8 .hidden _C_LABEL(__minbrk) 9 .globl _C_LABEL(__minbrk) 10 .globl _C_LABEL(_end) 11 12#ifdef WEAK_ALIAS 13WEAK_ALIAS(brk, _brk) 14#endif 15 16 .data 17 .p2align 3 18_C_LABEL(__minbrk): 19 .quad _C_LABEL(_end) 20_C_LABEL(__curbrk): 21 .quad _C_LABEL(_end) 22 23ENTRY(_brk) 24 addis %r9,%r2,_C_LABEL(__minbrk)@toc@ha 25 ldptru %r5,_C_LABEL(__minbrk)@toc@l(%r9) 26 cmpptrl %r5,%r3 # if (__minbrk <= r3) 27#ifdef __PPC_ISEL__ 28 iselgt %r3,%r5,%r3 29#else 30 bgt 0f 31 mr %r5,%r3 # r5 = r3 320: 33 mr %r3,%r5 # new break value 34#endif 35 _DOSYSCALL(break) # assume that r5 is preserved 36 bso 1f 37 stptr %r5,__SIZEOF_POINTER__(%r9) 38 blr # return 0 39 401: 41 BRANCH_TO_CERROR() 42END(_brk) 43