brk.S revision 1.7
11.7Skleink/* $NetBSD: brk.S,v 1.7 2000/02/24 15:37:34 kleink Exp $ */ 21.1Sthorpej 31.1Sthorpej#include "SYS.h" 41.1Sthorpej 51.5Skleink .globl _C_LABEL(__curbrk) 61.5Skleink .globl _C_LABEL(__minbrk) 71.6Skleink .globl _C_LABEL(_end) 81.4Stsubai 91.4Stsubai .data 101.5Skleink_C_LABEL(__minbrk): 111.6Skleink .long _C_LABEL(_end) # XXX not used yet 121.1Sthorpej 131.1Sthorpej .text 141.1Sthorpej 151.4StsubaiENTRY(brk) 161.1Sthorpej#ifdef PIC 171.4Stsubai mflr 10 181.4Stsubai bl _GLOBAL_OFFSET_TABLE_@local-4 191.4Stsubai mflr 9 201.4Stsubai mtlr 10 211.7Skleink lwz 5,_C_LABEL(_end)@got(9) 221.1Sthorpej#else 231.7Skleink lis 5,_C_LABEL(_end)@ha # r5 = &_end 241.7Skleink addi 5,5,_C_LABEL(_end)@l 251.4Stsubai#endif 261.1Sthorpej cmplw 5,3 # if (&_end <= r3) 271.1Sthorpej bgt 0f 281.1Sthorpej mr 5,3 # r5 = r3 291.1Sthorpej0: 301.1Sthorpej mr 3,5 # new break value 311.1Sthorpej li 0,SYS_break 321.1Sthorpej sc # assume, that r5 is kept 331.1Sthorpej bso 1f 341.4Stsubai#ifdef PIC 351.5Skleink lwz 6,_C_LABEL(__curbrk)@got(9) 361.4Stsubai stw 5,0(6) 371.4Stsubai#else 381.5Skleink lis 6,_C_LABEL(__curbrk)@ha # record new break 391.5Skleink stw 5,_C_LABEL(__curbrk)@l(6) 401.4Stsubai#endif 411.1Sthorpej blr # return 0 421.1Sthorpej 431.1Sthorpej1: 441.5Skleink b PIC_PLT(_C_LABEL(__cerror)) 45