OSDN Git Service

e9974d5158c0e4ba62a580b393acfa90d6777595
[uclinux-h8/uClibc.git] / libc / sysdeps / linux / ia64 / brk.S
1 /* brk system call for Linux/ia64
2    Copyright (C) 1999,2000,2001,2003 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
4    Written by Stephane Eranian <eranian@hpl.hp.com> and
5               Jes Sorensen, <Jes.Sorensen@cern.ch>, April 1999.
6
7    The GNU C Library is free software; you can redistribute it and/or
8    modify it under the terms of the GNU Lesser General Public
9    License as published by the Free Software Foundation; either
10    version 2.1 of the License, or (at your option) any later version.
11
12    The GNU C Library is distributed in the hope that it will be useful,
13    but WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    Lesser General Public License for more details.
16
17    You should have received a copy of the GNU Lesser General Public
18    License along with the GNU C Library; if not, write to the Free
19    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
20    02111-1307 USA.  */
21
22 #include "sysdep.h"
23
24 #include <asm/unistd.h>
25 #include <asm/errno.h>
26
27         .global __curbrk
28         .hidden __curbrk
29         .type __curbrk,@object
30         .size __curbrk,8
31         .data
32         .align  8
33 __curbrk:
34         data8   0
35
36 weak_alias (__curbrk, ___brk_addr)
37
38 LEAF(brk)
39         .regstk 1, 0, 0, 0
40         DO_CALL(__NR_brk)
41         cmp.ltu p6, p0 = ret0, in0
42         addl r9 = @ltoff(__curbrk), gp
43         ;;
44         ld8 r9 = [r9]
45 (p6)    mov ret0 = ENOMEM
46 (p6)    br.cond.spnt.few __syscall_error
47         ;;
48         st8 [r9] = ret0
49         mov ret0 = 0
50         ret
51 END(brk)
52 libc_hidden_def(brk)