1/* $NetBSD: sbrk.S,v 1.8 2000/06/26 06:25:44 kleink Exp $ */ 2 3#include "SYS.h" 4 5 .globl _C_LABEL(__curbrk) 6 .globl _C_LABEL(_end) 7 8#ifdef WEAK_ALIAS 9WEAK_ALIAS(sbrk, _sbrk) 10#endif 11 12 .data 13_C_LABEL(__curbrk): 14 .long _C_LABEL(_end) 15 .text 16 17ENTRY(_sbrk) 18#ifdef PIC 19 mflr 10 20 bl _GLOBAL_OFFSET_TABLE_@local-4 21 mflr 5 22 mtlr 10 23 lwz 5,_C_LABEL(__curbrk)@got(5) 24 lwz 6,0(5) 25#else 26 lis 5,_C_LABEL(__curbrk)@ha 27 lwz 6,_C_LABEL(__curbrk)@l(5) # r6 = old break 28#endif 29 add 3,3,6 30 mr 7,3 # r7 = new break 31 li 0,SYS_break 32 sc # break(new_break) 33 bso 1f 34 mr 3,6 # set return value 35#ifdef PIC 36 stw 7,0(5) 37#else 38 stw 7,_C_LABEL(__curbrk)@l(5) # record new break 39#endif 40 blr 411: 42 b PIC_PLT(_C_LABEL(__cerror)) 43