xref: /openbsd-src/lib/libc/arch/hppa/sys/sbrk.S (revision 01422588aea879b986d4ff8bb39988e7dd8edad8)
1*01422588Sguenther/*	$OpenBSD: sbrk.S,v 1.17 2016/05/30 05:18:52 guenther Exp $	*/
2b8d7f14dSmickey
3b8d7f14dSmickey/*
4b8d7f14dSmickey * Copyright (c) 1999 Michael Shalayeff
5b8d7f14dSmickey * All rights reserved.
6b8d7f14dSmickey *
7b8d7f14dSmickey * Redistribution and use in source and binary forms, with or without
8b8d7f14dSmickey * modification, are permitted provided that the following conditions
9b8d7f14dSmickey * are met:
10b8d7f14dSmickey * 1. Redistributions of source code must retain the above copyright
11b8d7f14dSmickey *    notice, this list of conditions and the following disclaimer.
12b8d7f14dSmickey * 2. Redistributions in binary form must reproduce the above copyright
13b8d7f14dSmickey *    notice, this list of conditions and the following disclaimer in the
14b8d7f14dSmickey *    documentation and/or other materials provided with the distribution.
15b8d7f14dSmickey *
16b8d7f14dSmickey * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17b8d7f14dSmickey * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18b8d7f14dSmickey * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19b8d7f14dSmickey * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
20b8d7f14dSmickey * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21b8d7f14dSmickey * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22b8d7f14dSmickey * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23b8d7f14dSmickey * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24b8d7f14dSmickey * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
25b8d7f14dSmickey * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26b8d7f14dSmickey * THE POSSIBILITY OF SUCH DAMAGE.
27b8d7f14dSmickey */
28b8d7f14dSmickey
29c9d8341bSmickey#include "SYS.h"
30c9d8341bSmickey
31*01422588Sguenther	.import	_end, data
32b8d7f14dSmickey
337fcc402fSmickey	.data
34b6c3a27aSmickey	.export	__curbrk, data
35b6c3a27aSmickey__curbrk
36*01422588Sguenther	.long	_end
37b8d7f14dSmickey
383f373d41Sguenther	.weak	sbrk
39b3b7ef2eSguenther
403f373d41SguentherLEAF_ENTRY(sbrk)
4132b97dedSpascal#ifdef __PIC__
42b1011d27Smickey	addil	LT%__curbrk, r19
43b1011d27Smickey	ldw	RT%__curbrk(r1), t1
44b1011d27Smickey	ldw	0(t1), t2
45b1011d27Smickey#else
46b6c3a27aSmickey	ldil	L%__curbrk, t1
47b6c3a27aSmickey	ldw	R%__curbrk(t1), t2
48b1011d27Smickey#endif
497fcc402fSmickey	add	arg0, t2, arg0
50b8d7f14dSmickey	stw	arg0, HPPA_FRAME_ARG(0)(sp)
51b8d7f14dSmickey
52b8d7f14dSmickey	SYSCALL(break)
53b8d7f14dSmickey
5432b97dedSpascal#ifdef __PIC__
55b1011d27Smickey	addil	LT%__curbrk, r19
56b1011d27Smickey	ldw	RT%__curbrk(r1), t1
57b1011d27Smickey#else
58b6c3a27aSmickey	ldil	L%__curbrk, t1
59b1011d27Smickey	ldo	R%__curbrk(t1), t1
60b1011d27Smickey#endif
617fcc402fSmickey	ldw	HPPA_FRAME_ARG(0)(sp), arg0
62b1011d27Smickey	ldw	0(t1), ret0
63b344cd0aSmickey	bv	r0(rp)
64b1011d27Smickey	stw	arg0, 0(t1)
65b8d7f14dSmickey
663f373d41SguentherEXIT(sbrk)
67c9d8341bSmickey
68c9d8341bSmickey	.end
69b8d7f14dSmickey
70