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.10
11.10Smatt/*	$NetBSD: brk.S,v 1.10 2002/07/30 06:07:59 matt 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.8Skleink#ifdef WEAK_ALIAS
101.8SkleinkWEAK_ALIAS(brk, _brk)
111.8Skleink#endif
121.8Skleink
131.4Stsubai	.data
141.5Skleink_C_LABEL(__minbrk):
151.6Skleink	.long	_C_LABEL(_end)		# XXX not used yet
161.1Sthorpej
171.1Sthorpej	.text
181.1Sthorpej
191.8SkleinkENTRY(_brk)
201.1Sthorpej#ifdef PIC
211.10Smatt	mflr	%r10
221.4Stsubai	bl	_GLOBAL_OFFSET_TABLE_@local-4
231.10Smatt	mflr	%r9
241.10Smatt	mtlr	%r10
251.10Smatt	lwz	%r5,_C_LABEL(_end)@got(%r9)
261.1Sthorpej#else
271.10Smatt	lis	%r5,_C_LABEL(_end)@ha	# r5 = &_end
281.10Smatt	addi	%r5,%r5,_C_LABEL(_end)@l
291.4Stsubai#endif
301.10Smatt	cmplw	%r5,%r3			# if (&_end <= r3)
311.1Sthorpej	bgt	0f
321.10Smatt	mr	%r5,%r3			# r5 = r3
331.1Sthorpej0:
341.10Smatt	mr	%r3,%r5			# new break value
351.10Smatt	li	%r0,SYS_break
361.1Sthorpej	sc				# assume, that r5 is kept
371.1Sthorpej	bso	1f
381.4Stsubai#ifdef PIC
391.10Smatt	lwz	%r6,_C_LABEL(__curbrk)@got(%r9)
401.10Smatt	stw	%r5,0(%r6)
411.4Stsubai#else
421.10Smatt	lis	%r6,_C_LABEL(__curbrk)@ha	# record new break
431.10Smatt	stw	%r5,_C_LABEL(__curbrk)@l(%r6)
441.4Stsubai#endif
451.1Sthorpej	blr				# return 0
461.1Sthorpej
471.1Sthorpej1:
481.5Skleink	b	PIC_PLT(_C_LABEL(__cerror))
49

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