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.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

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