1*0a6a1f1dSLionel Sambuc/* $NetBSD: sbrk.S,v 1.13 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: sbrk.S,v 1.13 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) 112fe8fb19SBen Gras 122fe8fb19SBen Gras#ifdef WEAK_ALIAS 132fe8fb19SBen GrasWEAK_ALIAS(sbrk, _sbrk) 142fe8fb19SBen Gras#endif 152fe8fb19SBen Gras 162fe8fb19SBen GrasENTRY(_sbrk) 1784d9c625SLionel Sambuc#ifdef __PIC__ 18*0a6a1f1dSLionel Sambuc mflr %r0 19*0a6a1f1dSLionel Sambuc bcl 20,31,.LPIC0 20*0a6a1f1dSLionel Sambuc.LPIC0: mflr %r5 21*0a6a1f1dSLionel Sambuc mtlr %r0 22*0a6a1f1dSLionel Sambuc addis %r8,%r5,(_C_LABEL(__curbrk)-.LPIC0)@ha 23*0a6a1f1dSLionel Sambuc ldptru %r6,(_C_LABEL(__curbrk)-.LPIC0)@l(%r8) 242fe8fb19SBen Gras#else 25*0a6a1f1dSLionel Sambuc lis %r8,_C_LABEL(__curbrk)@ha 26*0a6a1f1dSLionel Sambuc ldptru %r6,_C_LABEL(__curbrk)@l(%r8) # r6 = old break, r5 = &curbrk 272fe8fb19SBen Gras#endif 282fe8fb19SBen Gras add %r3,%r3,%r6 292fe8fb19SBen Gras mr %r7,%r3 # r7 = new break 302fe8fb19SBen Gras _DOSYSCALL(break) # break(new_break) 312fe8fb19SBen Gras bso 1f 322fe8fb19SBen Gras mr %r3,%r6 # set return value 33*0a6a1f1dSLionel Sambuc stptr %r7,0(%r8) # record new break 342fe8fb19SBen Gras blr 352fe8fb19SBen Gras1: 36*0a6a1f1dSLionel Sambuc BRANCH_TO_CERROR() 372fe8fb19SBen GrasEND(_sbrk) 38