Cross Reference: brk.S
xref: /src/lib/libc/arch/powerpc/sys/brk.S
  • Home
  • History
  • AnnotateAnnotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /src/lib/libc/arch/powerpc/sys/
brk.S revision 1.5
11.5Skleink/*	$NetBSD: brk.S,v 1.5 1999/01/14 22:48:21 kleink Exp $	*/
21.1Sthorpej
31.1Sthorpej#include "SYS.h"
41.1Sthorpej
51.5Skleink	.globl	_C_LABEL(__curbrk)
61.5Skleink	.globl	_C_LABEL(__minbrk)
71.4Stsubai
81.4Stsubai	.data
91.5Skleink_C_LABEL(__minbrk):
101.5Skleink	.long	_C_LABEL(end)		# XXX not used yet
111.1Sthorpej
121.1Sthorpej	.text
131.1Sthorpej
141.4StsubaiENTRY(brk)
151.1Sthorpej#ifdef PIC
161.4Stsubai	mflr	10
171.4Stsubai	bl	_GLOBAL_OFFSET_TABLE_@local-4
181.4Stsubai	mflr	9
191.4Stsubai	mtlr	10
201.4Stsubai	lwz	5,_C_LABEL(end)@got(9)
211.1Sthorpej#else
221.3Sws	lis	5,_C_LABEL(end)@ha	# r5 = &_end
231.3Sws	addi	5,5,_C_LABEL(end)@l
241.4Stsubai#endif
251.1Sthorpej	cmplw	5,3			# if (&_end <= r3)
261.1Sthorpej	bgt	0f
271.1Sthorpej	mr	5,3			# r5 = r3
281.1Sthorpej0:
291.1Sthorpej	mr	3,5			# new break value
301.1Sthorpej	li	0,SYS_break
311.1Sthorpej	sc				# assume, that r5 is kept
321.1Sthorpej	bso	1f
331.4Stsubai#ifdef PIC
341.5Skleink	lwz	6,_C_LABEL(__curbrk)@got(9)
351.4Stsubai	stw	5,0(6)
361.4Stsubai#else
371.5Skleink	lis	6,_C_LABEL(__curbrk)@ha	# record new break
381.5Skleink	stw	5,_C_LABEL(__curbrk)@l(6)
391.4Stsubai#endif
401.1Sthorpej	blr				# return 0
411.1Sthorpej
421.1Sthorpej1:
431.5Skleink	b	PIC_PLT(_C_LABEL(__cerror))
44

Indexes created Mon Nov 10 17:20:41 GMT 2025