source: trunk/libs/newlib/src/libgloss/sparc/libsys/sbrk.S @ 479

Last change on this file since 479 was 444, checked in by satin@…, 7 years ago

add newlib,libalmos-mkh, restructure shared_syscalls.h and mini-libc

File size: 1.2 KB
Line 
1! sbrk() system call
2
3#include "syscallasm.h"
4
5        TEXT_SECTION
6        ALIGN (4)
7#ifdef REENT
8        GLOBAL (ASM_SYMBOL (_sbrk_r))
9ASM_SYMBOL (_sbrk_r):
10        mov     %o0,%o5
11        mov     %o1,%o0
12#else
13        GLOBAL (ASM_SYMBOL (sbrk))
14ASM_SYMBOL (sbrk):
15#endif
16        add     %o0,7,%o0
17        andn    %o0,7,%o0
18        sethi   %hi (ASM_PRIVATE_SYMBOL (curbrk)),%o2
19#ifdef __sparc_v9__
20        lduw    [%o2+%lo (ASM_PRIVATE_SYMBOL (curbrk))],%o3
21#else
22        ld      [%o2+%lo (ASM_PRIVATE_SYMBOL (curbrk))],%o3
23#endif
24        add     %o3,7,%o3
25        andn    %o3,7,%o3
26        add     %o3,%o0,%o0
27        mov     %o0,%o4
28        mov     SYS_brk,%g1
29        ta      SYSCALL_TRAP
30        bcs     err
31        nop
32        st      %o4,[%o2+%lo (ASM_PRIVATE_SYMBOL (curbrk))]
33        jmpl    %o7+8,%g0
34        mov     %o3,%o0
35
36#ifdef REENT
37        GLOBAL (ASM_SYMBOL (_brk_r))
38ASM_SYMBOL (_brk_r):
39        mov     %o0,%o5
40        mov     %o1,%o0
41#else
42        GLOBAL (ASM_SYMBOL (brk))
43ASM_SYMBOL (brk):
44#endif
45        add     %o0,7,%o0
46        andn    %o0,7,%o0
47        mov     %o0,%o2
48        mov     SYS_brk,%g1
49        ta      SYSCALL_TRAP
50        bcs     err
51        nop
52        sethi   %hi (ASM_PRIVATE_SYMBOL (curbrk)),%o3
53        st      %o2,[%o3+%lo (ASM_PRIVATE_SYMBOL (curbrk))]
54        retl
55        mov     %g0,%o0
56
57err:
58#ifdef REENT
59        sethi   %hi (ASM_PRIVATE_SYMBOL (cerror_r)),%g1
60        or      %g1,%lo (ASM_PRIVATE_SYMBOL (cerror_r)),%g1
61#else
62        sethi   %hi (ASM_PRIVATE_SYMBOL (cerror)),%g1
63        or      %g1,%lo (ASM_PRIVATE_SYMBOL (cerror)),%g1
64#endif
65        jmpl    %g1,%g0
66        mov     %o5,%o1
Note: See TracBrowser for help on using the repository browser.