xref: /netbsd-src/lib/libc/arch/hppa/sys/brk.S (revision 62da6573ee05ade829ef5904bec5283fdf55ff58)
1*62da6573Sskrll/*	$NetBSD: brk.S,v 1.9 2020/05/10 14:34:31 skrll Exp $	*/
202ac1ae2Sfredette
302ac1ae2Sfredette/*	$OpenBSD: brk.S,v 1.7 2001/06/04 23:14:04 mickey Exp $	*/
402ac1ae2Sfredette
502ac1ae2Sfredette/*
602ac1ae2Sfredette * Copyright (c) 1999 Michael Shalayeff
702ac1ae2Sfredette * All rights reserved.
802ac1ae2Sfredette *
902ac1ae2Sfredette * Redistribution and use in source and binary forms, with or without
1002ac1ae2Sfredette * modification, are permitted provided that the following conditions
1102ac1ae2Sfredette * are met:
1202ac1ae2Sfredette * 1. Redistributions of source code must retain the above copyright
1302ac1ae2Sfredette *    notice, this list of conditions and the following disclaimer.
1402ac1ae2Sfredette * 2. Redistributions in binary form must reproduce the above copyright
1502ac1ae2Sfredette *    notice, this list of conditions and the following disclaimer in the
1602ac1ae2Sfredette *    documentation and/or other materials provided with the distribution.
1702ac1ae2Sfredette *
1802ac1ae2Sfredette * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1902ac1ae2Sfredette * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
2002ac1ae2Sfredette * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
2102ac1ae2Sfredette * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
2202ac1ae2Sfredette * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2302ac1ae2Sfredette * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2402ac1ae2Sfredette * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2502ac1ae2Sfredette * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2602ac1ae2Sfredette * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
2702ac1ae2Sfredette * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
2802ac1ae2Sfredette * THE POSSIBILITY OF SUCH DAMAGE.
2902ac1ae2Sfredette */
3002ac1ae2Sfredette
3102ac1ae2Sfredette#include "SYS.h"
3202ac1ae2Sfredette
3302ac1ae2Sfredette#if defined(LIBC_SCCS) && !defined(lint)
34*62da6573Sskrll	RCSID("$NetBSD: brk.S,v 1.9 2020/05/10 14:34:31 skrll Exp $")
3502ac1ae2Sfredette#endif /* LIBC_SCCS and not lint */
3602ac1ae2Sfredette
37*62da6573Sskrll	.import	__curbrk, data
38*62da6573Sskrll	.hidden __curbrk
39938140d1Sskrll	.global	_end
4002ac1ae2Sfredette
4102ac1ae2Sfredette#ifdef WEAK_ALIAS
4202ac1ae2Sfredette	WEAK_ALIAS(brk, _brk)
4302ac1ae2Sfredette#endif
4402ac1ae2Sfredette
4502ac1ae2Sfredette	.data
4658e86abcSfredette	.export	__minbrk, data
47*62da6573Sskrll	.hidden __minbrk
48ed9d4336Smatt__minbrk:
49938140d1Sskrll	.long	_end
5002ac1ae2Sfredette
5102ac1ae2SfredetteENTRY(_brk,0)
524d12bfcdSjoerg#ifdef __PIC__
5358e86abcSfredette	addil	LT%__minbrk, %r19
5458e86abcSfredette	ldw	RT%__minbrk(%r1), %r1
55ed9d4336Smatt	ldw	0(%r1), %t2
564d12bfcdSjoerg#else  /* !__PIC__ */
57ed9d4336Smatt	ldil	L%__minbrk, %t1
58ed9d4336Smatt	ldw	R%__minbrk(%t1), %t2
594d12bfcdSjoerg#endif /* !__PIC__ */
60ed9d4336Smatt	sub,<<	%t2, %arg0, %r0
61ed9d4336Smatt	copy	%t2, %arg0
62ed9d4336Smatt	stw	%arg0, HPPA_FRAME_ARG(0)(%sp)
6302ac1ae2Sfredette
6402ac1ae2Sfredette	SYSCALL(break)
6502ac1ae2Sfredette
66ed9d4336Smatt	ldw	HPPA_FRAME_ARG(0)(%sp), %arg0
674d12bfcdSjoerg#ifdef __PIC__
68*62da6573Sskrll	addil	LT%__curbrk, %r19
69*62da6573Sskrll	ldw	RT%__curbrk(%r1), %r1
70ed9d4336Smatt	bv	%r0(%rp)
71ed9d4336Smatt	 stw	%arg0, 0(%r1)
724d12bfcdSjoerg#else  /* !__PIC__ */
73*62da6573Sskrll	ldil	L%__curbrk, %t1
74ed9d4336Smatt	bv	%r0(%rp)
75*62da6573Sskrll	 stw	%arg0, R%__curbrk(%t1)
764d12bfcdSjoerg#endif /* !__PIC__ */
7702ac1ae2SfredetteEXIT(brk)
7802ac1ae2Sfredette
7902ac1ae2Sfredette	.end
8002ac1ae2Sfredette
81