1*0a6a1f1dSLionel Sambuc/* $NetBSD: brk.S,v 1.14 2014/08/23 02:24:22 matt Exp $ */ 22fe8fb19SBen Gras 32fe8fb19SBen Gras#include "SYS.h" 42fe8fb19SBen Gras 52fe8fb19SBen Gras#if defined(LIBC_SCCS) && !defined(lint) 6*0a6a1f1dSLionel Sambuc__RCSID("$NetBSD: brk.S,v 1.14 2014/08/23 02:24:22 matt Exp $") 72fe8fb19SBen Gras#endif /* LIBC_SCCS && !lint */ 82fe8fb19SBen Gras 9*0a6a1f1dSLionel Sambuc .hidden _C_LABEL(__curbrk) 102fe8fb19SBen Gras .globl _C_LABEL(__curbrk) 11*0a6a1f1dSLionel Sambuc .hidden _C_LABEL(__minbrk) 122fe8fb19SBen Gras .globl _C_LABEL(__minbrk) 132fe8fb19SBen Gras .globl _C_LABEL(_end) 142fe8fb19SBen Gras 152fe8fb19SBen Gras#ifdef WEAK_ALIAS 162fe8fb19SBen GrasWEAK_ALIAS(brk, _brk) 172fe8fb19SBen Gras#endif 182fe8fb19SBen Gras 192fe8fb19SBen Gras .data 20*0a6a1f1dSLionel Sambuc .p2align 2 212fe8fb19SBen Gras_C_LABEL(__minbrk): 22*0a6a1f1dSLionel Sambuc .long _C_LABEL(_end) 23*0a6a1f1dSLionel Sambuc_C_LABEL(__curbrk): 24*0a6a1f1dSLionel Sambuc .long _C_LABEL(_end) 252fe8fb19SBen Gras 262fe8fb19SBen GrasENTRY(_brk) 2784d9c625SLionel Sambuc#ifdef __PIC__ 28*0a6a1f1dSLionel Sambuc mflr %r0 29*0a6a1f1dSLionel Sambuc bcl 20,31,.LPIC0 30*0a6a1f1dSLionel Sambuc.LPIC0: mflr %r9 31*0a6a1f1dSLionel Sambuc mtlr %r0 32*0a6a1f1dSLionel Sambuc addis %r9,%r9,(_C_LABEL(__minbrk)-.LPIC0)@ha 33*0a6a1f1dSLionel Sambuc ldptru %r5,(_C_LABEL(__minbrk)-.LPIC0)@l(%r9) # r5 = &_end 342fe8fb19SBen Gras#else 35*0a6a1f1dSLionel Sambuc lis %r9,_C_LABEL(__minbrk)@ha 36*0a6a1f1dSLionel Sambuc ldptru %r5,_C_LABEL(__minbrk)@l(%r9) # r5 = &_end 372fe8fb19SBen Gras#endif 38*0a6a1f1dSLionel Sambuc cmpptrl %r5,%r3 # if (__minbrk <= r3) 39*0a6a1f1dSLionel Sambuc#ifdef __PPC_ISEL__ 40*0a6a1f1dSLionel Sambuc iselgt %r3,%r5,%r3 41*0a6a1f1dSLionel Sambuc#else 422fe8fb19SBen Gras bgt 0f 432fe8fb19SBen Gras mr %r5,%r3 # r5 = r3 442fe8fb19SBen Gras0: 452fe8fb19SBen Gras mr %r3,%r5 # new break value 462fe8fb19SBen Gras#endif 47*0a6a1f1dSLionel Sambuc _DOSYSCALL(break) # assume that r5 is preserved 48*0a6a1f1dSLionel Sambuc bso 1f 49*0a6a1f1dSLionel Sambuc stptr %r5,__SIZEOF_POINTER__(%r9) 502fe8fb19SBen Gras blr # return 0 512fe8fb19SBen Gras 522fe8fb19SBen Gras1: 53*0a6a1f1dSLionel Sambuc BRANCH_TO_CERROR() 542fe8fb19SBen GrasEND(_brk) 55