brk.S (270882) | brk.S (282782) |
---|---|
1/* $NetBSD: brk.S,v 1.6 2003/08/07 16:42:04 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: @(#)brk.s 5.2 (Berkeley) 12/17/90 32 */ 33 34#include <machine/asm.h> | 1/* $NetBSD: brk.S,v 1.6 2003/08/07 16:42:04 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: @(#)brk.s 5.2 (Berkeley) 12/17/90 32 */ 33 34#include <machine/asm.h> |
35__FBSDID("$FreeBSD: head/lib/libc/arm/sys/brk.S 270882 2014-08-31 17:21:51Z ian $"); | 35__FBSDID("$FreeBSD: head/lib/libc/arm/sys/brk.S 282782 2015-05-11 20:33:46Z andrew $"); |
36#include "SYS.h" 37 38 .globl _C_LABEL(_end) 39 .globl CURBRK 40 41#ifdef WEAK_ALIAS 42WEAK_ALIAS(brk, _brk) 43#endif --- 4 unchanged lines hidden (view full) --- 48 .type _C_LABEL(minbrk),#object 49_C_LABEL(minbrk): 50 .word _C_LABEL(_end) 51 52/* 53 * Change the data segment size 54 */ 55ENTRY(_brk) | 36#include "SYS.h" 37 38 .globl _C_LABEL(_end) 39 .globl CURBRK 40 41#ifdef WEAK_ALIAS 42WEAK_ALIAS(brk, _brk) 43#endif --- 4 unchanged lines hidden (view full) --- 48 .type _C_LABEL(minbrk),#object 49_C_LABEL(minbrk): 50 .word _C_LABEL(_end) 51 52/* 53 * Change the data segment size 54 */ 55ENTRY(_brk) |
56#ifdef PIC | |
57 /* Setup the GOT */ | 56 /* Setup the GOT */ |
58 ldr r3, .Lgot 59 add r3, pc, r3 60.L1: 61 ldr r1, .Lminbrk 62 ldr r1, [r3, r1] 63#else 64 ldr r1, .Lminbrk 65#endif | 57 GOT_INIT(r3, .Lgot, .L1) 58 GOT_GET(r1, r3, .Lminbrk) 59 |
66 /* Get the minimum allowable brk address */ 67 ldr r1, [r1] 68 69 /* 70 * Valid the address specified and set to the minimum 71 * if the address is below minbrk. 72 */ 73 cmp r0, r1 | 60 /* Get the minimum allowable brk address */ 61 ldr r1, [r1] 62 63 /* 64 * Valid the address specified and set to the minimum 65 * if the address is below minbrk. 66 */ 67 cmp r0, r1 |
68 it lt |
|
74 movlt r0, r1 75 mov r2, r0 76 SYSTRAP(break) 77 bcs PIC_SYM(CERROR, PLT) 78 79#ifdef PIC 80 ldr r1, .Lcurbrk 81 ldr r1, [r3, r1] 82#else 83 ldr r1, .Lcurbrk 84#endif 85 /* Store the new address in curbrk */ 86 str r2, [r1] 87 88 /* Return 0 for success */ 89 mov r0, #0x00000000 90 RET 91 92 .align 2 | 69 movlt r0, r1 70 mov r2, r0 71 SYSTRAP(break) 72 bcs PIC_SYM(CERROR, PLT) 73 74#ifdef PIC 75 ldr r1, .Lcurbrk 76 ldr r1, [r3, r1] 77#else 78 ldr r1, .Lcurbrk 79#endif 80 /* Store the new address in curbrk */ 81 str r2, [r1] 82 83 /* Return 0 for success */ 84 mov r0, #0x00000000 85 RET 86 87 .align 2 |
93#ifdef PIC 94.Lgot: 95 .word _GLOBAL_OFFSET_TABLE_ - (.L1+4) 96#endif | 88 GOT_INITSYM(.Lgot, .L1) |
97.Lminbrk: 98 .word PIC_SYM(_C_LABEL(minbrk), GOT) 99.Lcurbrk: 100 .word PIC_SYM(CURBRK, GOT) 101END(_brk) | 89.Lminbrk: 90 .word PIC_SYM(_C_LABEL(minbrk), GOT) 91.Lcurbrk: 92 .word PIC_SYM(CURBRK, GOT) 93END(_brk) |