brk.S revision 1.4
11.4Stsubai/* $NetBSD: brk.S,v 1.4 1998/11/24 11:14:54 tsubai Exp $ */ 21.1Sthorpej 31.1Sthorpej#include "SYS.h" 41.1Sthorpej 51.3Sws .globl _ASM_LABEL(curbrk) 61.4Stsubai .globl minbrk 71.4Stsubai 81.4Stsubai .data 91.4Stsubaiminbrk: .long _C_LABEL(end) # XXX not used yet 101.1Sthorpej 111.1Sthorpej .text 121.1Sthorpej 131.4StsubaiENTRY(brk) 141.1Sthorpej#ifdef PIC 151.4Stsubai mflr 10 161.4Stsubai bl _GLOBAL_OFFSET_TABLE_@local-4 171.4Stsubai mflr 9 181.4Stsubai mtlr 10 191.4Stsubai lwz 5,_C_LABEL(end)@got(9) 201.1Sthorpej#else 211.3Sws lis 5,_C_LABEL(end)@ha # r5 = &_end 221.3Sws addi 5,5,_C_LABEL(end)@l 231.4Stsubai#endif 241.1Sthorpej cmplw 5,3 # if (&_end <= r3) 251.1Sthorpej bgt 0f 261.1Sthorpej mr 5,3 # r5 = r3 271.1Sthorpej0: 281.1Sthorpej mr 3,5 # new break value 291.1Sthorpej li 0,SYS_break 301.1Sthorpej sc # assume, that r5 is kept 311.1Sthorpej bso 1f 321.4Stsubai#ifdef PIC 331.4Stsubai lwz 6,_ASM_LABEL(curbrk)@got(9) 341.4Stsubai stw 5,0(6) 351.4Stsubai#else 361.3Sws lis 6,_ASM_LABEL(curbrk)@ha # record new break 371.3Sws stw 5,_ASM_LABEL(curbrk)@l(6) 381.4Stsubai#endif 391.1Sthorpej blr # return 0 401.1Sthorpej 411.1Sthorpej1: 421.4Stsubai b PIC_PLT(_ASM_LABEL(cerror)) 43