sbrk.S revision 1.1
11.1Smatt/* $NetBSD: sbrk.S,v 1.1 2014/09/03 19:34:26 matt Exp $ */ 21.1Smatt 31.1Smatt#include "SYS.h" 41.1Smatt 51.1Smatt#if defined(LIBC_SCCS) && !defined(lint) 61.1Smatt__RCSID("$NetBSD: sbrk.S,v 1.1 2014/09/03 19:34:26 matt Exp $") 71.1Smatt#endif /* LIBC_SCCS && !lint */ 81.1Smatt 91.1Smatt .hidden _C_LABEL(__curbrk) 101.1Smatt .globl _C_LABEL(__curbrk) 111.1Smatt 121.1Smatt#ifdef WEAK_ALIAS 131.1SmattWEAK_ALIAS(sbrk, _sbrk) 141.1Smatt#endif 151.1Smatt 161.1SmattENTRY(_sbrk) 171.1Smatt#ifdef __PIC__ 181.1Smatt l.or r8,r9,r0 191.1Smatt PIC_GOTSETUP(r6) 201.1Smatt l.or r9,r8,r0 211.1Smatt l.movhi r5,gotoffhi(_C_LABEL(__curbrk)) 221.1Smatt l.ori r5,r5,gotofflo(_C_LABEL(__curbrk)) 231.1Smatt l.add r5,r5,r6 241.1Smatt#else 251.1Smatt l.movhi r5,hi(_C_LABEL(__curbrk)) 261.1Smatt l.ori r5,r5,lo(_C_LABEL(__curbrk)) # r5 = old break; 271.1Smatt#endif 281.1Smatt l.lwz r6,0(r5) # r6 = old break, r5 = &curbrk 291.1Smatt l.add r3,r3,r6 301.1Smatt _DOSYSCALL(break) # break(new_break) 311.1Smatt l.bf _C_LABEL(__cerror) 321.1Smatt l.nop 331.1Smatt l.sw 0(r5),r3 # record new break 341.1Smatt l.or r11,r6,r0 # set return value 351.1Smatt l.jr lr 361.1Smatt l.nop 371.1SmattEND(_sbrk) 38