Cross Reference: brk.S
xref: /src/lib/libc/arch/powerpc64/sys/brk.S
  • Home
  • History
  • AnnotateAnnotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /src/lib/libc/arch/powerpc64/sys/
brk.S revision 1.3
11.3Sross/*	$NetBSD: brk.S,v 1.3 2006/07/07 06:50:06 ross Exp $	*/
21.1Sross
31.1Sross#include "SYS.h"
41.1Sross
51.1Sross	.globl	_C_LABEL(__curbrk)
61.1Sross	.globl	_C_LABEL(__minbrk)
71.1Sross	.globl	_C_LABEL(_end)
81.1Sross
91.1Sross#ifdef WEAK_ALIAS
101.1SrossWEAK_ALIAS(brk, _brk)
111.1Sross#endif
121.1Sross
131.2Sross	.macro  LdAddr  r,sym
141.2Sross	.pushsection    ".toc","aw"
151.3Sross100:	.tc \sym[TC],\sym
161.2Sross	.popsection
171.2Sross	ld      \r,100b@toc(2)
181.2Sross	.endm
191.1Sross
201.3Sross        .data
211.3Sross_C_LABEL(__minbrk):
221.3Sross	.long   _C_LABEL(_end)
231.1Sross	.text
241.1Sross
251.1SrossENTRY(_brk)
261.2Sross	LdAddr	%r5,_end
271.2Sross	cmpld	%r5,%r3			# if (&_end <= r3)
281.1Sross	bgt	0f
291.1Sross	mr	%r5,%r3			# r5 = r3
301.1Sross0:
311.1Sross	mr	%r3,%r5			# new break value
321.1Sross	li	%r0,SYS_break
331.1Sross	sc				# assume, that r5 is kept
341.1Sross	bso	1f
351.2Sross	LdAddr	%r6,__curbrk
361.2Sross	std	%r5,0(%r6)
371.1Sross	blr				# return 0
381.1Sross
391.1Sross1:
401.2Sross	b	.__cerror
41

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