Deleted Added
full compact
sbrk.S (11183) sbrk.S (15634)
1/*-
2 * Copyright (c) 1990 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * William Jolitz.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 19 unchanged lines hidden (view full) ---

28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
1/*-
2 * Copyright (c) 1990 The Regents of the University of California.
3 * All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * William Jolitz.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 19 unchanged lines hidden (view full) ---

28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
30 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
31 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
33 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * $Id: sbrk.S,v 1.2 1995/01/23 01:30:04 davidg Exp $
36 * $Id: sbrk.S,v 1.3 1995/10/04 15:58:57 phk Exp $
37 */
38
39#if defined(SYSLIBC_RCS) && !defined(lint)
40 .text
37 */
38
39#if defined(SYSLIBC_RCS) && !defined(lint)
40 .text
41 .asciz "$Id: sbrk.S,v 1.2 1995/01/23 01:30:04 davidg Exp $"
41 .asciz "$Id: sbrk.S,v 1.3 1995/10/04 15:58:57 phk Exp $"
42#endif /* SYSLIBC_RCS and not lint */
43
44#include "SYS.h"
45
42#endif /* SYSLIBC_RCS and not lint */
43
44#include "SYS.h"
45
46#define SYS_brk 17
46 .globl CNAME(end)
47 .globl HIDENAME(minbrk)
48 .globl HIDENAME(curbrk)
47
49
48 .globl _end
49 .globl minbrk
50 .globl curbrk
51
52 .data
50 .data
53minbrk: .long _end
54curbrk: .long _end
51HIDENAME(minbrk): .long CNAME(end)
52HIDENAME(curbrk): .long CNAME(end)
55 .text
56
57ENTRY(sbrk)
58#ifdef PIC
59 movl 4(%esp),%ecx
60 PIC_PROLOGUE
53 .text
54
55ENTRY(sbrk)
56#ifdef PIC
57 movl 4(%esp),%ecx
58 PIC_PROLOGUE
61 movl PIC_GOT(curbrk),%edx
59 movl PIC_GOT(HIDENAME(curbrk)),%edx
62 movl (%edx),%eax
63 PIC_EPILOGUE
64 testl %ecx,%ecx
65 jz back
66 addl %eax,4(%esp)
60 movl (%edx),%eax
61 PIC_EPILOGUE
62 testl %ecx,%ecx
63 jz back
64 addl %eax,4(%esp)
67 lea SYS_brk,%eax
68 LCALL(7,0)
65 lea SYS_break,%eax
66 KERNCALL
69 jb err
70 PIC_PROLOGUE
67 jb err
68 PIC_PROLOGUE
71 movl PIC_GOT(curbrk),%edx
69 movl PIC_GOT(HIDENAME(curbrk)),%edx
72 movl (%edx),%eax
73 addl %ecx,(%edx)
74 PIC_EPILOGUE
75back:
76 ret
77err:
70 movl (%edx),%eax
71 addl %ecx,(%edx)
72 PIC_EPILOGUE
73back:
74 ret
75err:
78 jmp PIC_PLT(cerror)
76 PIC_PROLOGUE
77 jmp PIC_PLT(HIDENAME(cerror))
79
80#else /* !PIC */
81
82 movl 4(%esp),%ecx
78
79#else /* !PIC */
80
81 movl 4(%esp),%ecx
83 movl curbrk,%eax
82 movl HIDENAME(curbrk),%eax
84 testl %ecx,%ecx
85 jz back
86 addl %eax,4(%esp)
83 testl %ecx,%ecx
84 jz back
85 addl %eax,4(%esp)
87 lea SYS_brk,%eax
88 LCALL(7,0)
86 lea SYS_break,%eax
87 KERNCALL
89 jb err
88 jb err
90 movl curbrk,%eax
91 addl %ecx,curbrk
89 movl HIDENAME(curbrk),%eax
90 addl %ecx,HIDENAME(curbrk)
92back:
93 ret
94err:
91back:
92 ret
93err:
95 jmp cerror
94 jmp HIDENAME(cerror)
96#endif /* PIC */
95#endif /* PIC */