vm: fix a null dereference on out-of-memory
[minix.git] / lib / libc / arch / hppa / sys / brk.S
blob61ce62527b6a048ef6e10219177db1ec0ddd5c08
1 /*      $NetBSD: brk.S,v 1.4 2009/11/03 05:07:25 snj Exp $      */
3 /*      $OpenBSD: brk.S,v 1.7 2001/06/04 23:14:04 mickey Exp $  */
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  */
31 #include "SYS.h"
33 #if defined(LIBC_SCCS) && !defined(lint)
34         RCSID("$NetBSD: brk.S,v 1.4 2009/11/03 05:07:25 snj Exp $")
35 #endif /* LIBC_SCCS and not lint */
37         .import curbrk, data
38         .import end, data
40 #ifdef WEAK_ALIAS
41         WEAK_ALIAS(brk, _brk) 
42 #endif
44         .data
45         .export __minbrk, data
46 __minbrk:
47         .long   end
49 ENTRY(_brk,0)
50 #ifdef PIC
51         addil   LT%__minbrk, %r19
52         ldw     RT%__minbrk(%r1), %r1
53         ldw     0(%r1), %t2
54 #else  /* !PIC */
55         ldil    L%__minbrk, %t1
56         ldw     R%__minbrk(%t1), %t2
57 #endif /* !PIC */
58         sub,<<  %t2, %arg0, %r0
59         copy    %t2, %arg0
60         stw     %arg0, HPPA_FRAME_ARG(0)(%sp)
62         SYSCALL(break)
64         ldw     HPPA_FRAME_ARG(0)(%sp), %arg0
65 #ifdef PIC
66         addil   LT%curbrk, %r19
67         ldw     RT%curbrk(%r1), %r1
68         bv      %r0(%rp)
69         stw     %arg0, 0(%r1)
70 #else  /* !PIC */
71         ldil    L%curbrk, %t1
72         bv      %r0(%rp)
73         stw     %arg0, R%curbrk(%t1)
74 #endif /* !PIC */
75 EXIT(brk)
77         .end