brk.S revision 1.4
1/* $NetBSD: brk.S,v 1.4 1998/11/24 11:14:54 tsubai Exp $ */ 2 3#include "SYS.h" 4 5 .globl _ASM_LABEL(curbrk) 6 .globl minbrk 7 8 .data 9minbrk: .long _C_LABEL(end) # XXX not used yet 10 11 .text 12 13ENTRY(brk) 14#ifdef PIC 15 mflr 10 16 bl _GLOBAL_OFFSET_TABLE_@local-4 17 mflr 9 18 mtlr 10 19 lwz 5,_C_LABEL(end)@got(9) 20#else 21 lis 5,_C_LABEL(end)@ha # r5 = &_end 22 addi 5,5,_C_LABEL(end)@l 23#endif 24 cmplw 5,3 # if (&_end <= r3) 25 bgt 0f 26 mr 5,3 # r5 = r3 270: 28 mr 3,5 # new break value 29 li 0,SYS_break 30 sc # assume, that r5 is kept 31 bso 1f 32#ifdef PIC 33 lwz 6,_ASM_LABEL(curbrk)@got(9) 34 stw 5,0(6) 35#else 36 lis 6,_ASM_LABEL(curbrk)@ha # record new break 37 stw 5,_ASM_LABEL(curbrk)@l(6) 38#endif 39 blr # return 0 40 411: 42 b PIC_PLT(_ASM_LABEL(cerror)) 43