sbrk.S revision 1.7 1 /* $NetBSD: sbrk.S,v 1.7 2020/05/05 06:20:55 skrll Exp $ */
2
3 /* $OpenBSD: sbrk.S,v 1.7 2001/06/04 23:14:04 mickey Exp $ */
4
5 /*
6 * Copyright (c) 1999 Michael Shalayeff
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 *
18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21 * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
22 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
24 * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
27 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28 * THE POSSIBILITY OF SUCH DAMAGE.
29 */
30
31 #include "SYS.h"
32
33 #if defined(LIBC_SCCS) && !defined(lint)
34 RCSID("$NetBSD: sbrk.S,v 1.7 2020/05/05 06:20:55 skrll Exp $")
35 #endif /* LIBC_SCCS and not lint */
36
37 .global _end
38
39 #ifdef WEAK_ALIAS
40 WEAK_ALIAS(sbrk, _sbrk)
41 #endif
42
43 .data
44 .export curbrk, data
45 curbrk:
46 .long _end
47
48 ENTRY(_sbrk,0)
49 #ifdef __PIC__
50 addil LT%curbrk, %r19
51 ldw RT%curbrk(%r1), %r1
52 ldw 0(%r1), %t2
53 #else /* !__PIC__ */
54 ldil L%curbrk, %t1
55 ldw R%curbrk(%t1), %t2
56 #endif /* !__PIC__ */
57 add %arg0, %t2, %arg0
58 stw %arg0, HPPA_FRAME_ARG(0)(%sp)
59
60 SYSCALL(break)
61
62 #ifdef __PIC__
63 addil LT%curbrk, %r19
64 ldw RT%curbrk(%r1), %r1
65 #else /* !__PIC__ */
66 ldil L%curbrk, %t1
67 ldo R%curbrk(%t1), %r1
68 #endif /* !__PIC__ */
69 ldw 0(%r1), %ret0
70 ldw HPPA_FRAME_ARG(0)(%sp), %arg0
71 bv %r0(%rp)
72 stw %arg0, 0(%r1)
73
74 EXIT(sbrk)
75
76 .end
77