Deleted Added
full compact
sbrk.S (270882) sbrk.S (282782)
1/* $NetBSD: sbrk.S,v 1.7 2003/08/07 16:42:05 agc Exp $ */
2
3/*-
4 * Copyright (c) 1990 The Regents of the University of California.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

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

27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * from: @(#)sbrk.s 5.1 (Berkeley) 4/23/90
32 */
33
34#include <machine/asm.h>
1/* $NetBSD: sbrk.S,v 1.7 2003/08/07 16:42:05 agc Exp $ */
2
3/*-
4 * Copyright (c) 1990 The Regents of the University of California.
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions

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

27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * from: @(#)sbrk.s 5.1 (Berkeley) 4/23/90
32 */
33
34#include <machine/asm.h>
35__FBSDID("$FreeBSD: head/lib/libc/arm/sys/sbrk.S 270882 2014-08-31 17:21:51Z ian $");
35__FBSDID("$FreeBSD: head/lib/libc/arm/sys/sbrk.S 282782 2015-05-11 20:33:46Z andrew $");
36#include "SYS.h"
37
38 .globl _C_LABEL(_end)
39
40#ifdef WEAK_ALIAS
41WEAK_ALIAS(sbrk, _sbrk)
42#endif
43
44 .data
45 .align 0
46 .globl CURBRK
47 .type CURBRK,#object
48CURBRK:
49 .word _C_LABEL(_end)
50
51/*
52 * Change the data segment size
53 */
54ENTRY(_sbrk)
36#include "SYS.h"
37
38 .globl _C_LABEL(_end)
39
40#ifdef WEAK_ALIAS
41WEAK_ALIAS(sbrk, _sbrk)
42#endif
43
44 .data
45 .align 0
46 .globl CURBRK
47 .type CURBRK,#object
48CURBRK:
49 .word _C_LABEL(_end)
50
51/*
52 * Change the data segment size
53 */
54ENTRY(_sbrk)
55#ifdef PIC
56 /* Setup the GOT */
55 /* Setup the GOT */
57 ldr r3, .Lgot
58 add r3, pc, r3
59.L1:
60 ldr r2, .Lcurbrk
61 ldr r2, [r3, r2]
62#else
63 ldr r2, .Lcurbrk
64#endif
56 GOT_INIT(r3, .Lgot, .L1)
57 GOT_GET(r2, r3, .Lcurbrk)
58
65 /* Get the current brk address */
66 ldr r1, [r2]
67
68 /* Calculate new value */
69 mov r3, r0
70 add r0, r0, r1
71 SYSTRAP(break)
72 bcs PIC_SYM(CERROR, PLT)
73
74 /* Store new curbrk value */
75 ldr r0, [r2]
76 add r1, r0, r3
77 str r1, [r2]
78
79 /* Return old curbrk value */
80 RET
81
82 .align 0
59 /* Get the current brk address */
60 ldr r1, [r2]
61
62 /* Calculate new value */
63 mov r3, r0
64 add r0, r0, r1
65 SYSTRAP(break)
66 bcs PIC_SYM(CERROR, PLT)
67
68 /* Store new curbrk value */
69 ldr r0, [r2]
70 add r1, r0, r3
71 str r1, [r2]
72
73 /* Return old curbrk value */
74 RET
75
76 .align 0
83#ifdef PIC
84.Lgot:
85 .word _GLOBAL_OFFSET_TABLE_ - (.L1+4)
86#endif
77 GOT_INITSYM(.Lgot, .L1)
87.Lcurbrk:
88 .word PIC_SYM(CURBRK, GOT)
89END(_sbrk)
78.Lcurbrk:
79 .word PIC_SYM(CURBRK, GOT)
80END(_sbrk)