xref: /openbsd-src/lib/libc/arch/amd64/sys/brk.S (revision 39b8558c7ed42088504f32a89aaec359144031a7)
1*39b8558cSmortimer/*	$OpenBSD: brk.S,v 1.13 2023/01/11 01:55:17 mortimer Exp $	*/
2118f6189Smickey/*	$NetBSD: brk.S,v 1.2 2002/06/03 18:30:33 fvdl Exp $	*/
3118f6189Smickey
4118f6189Smickey/*-
5118f6189Smickey * Copyright (c) 1990 The Regents of the University of California.
6118f6189Smickey * All rights reserved.
7118f6189Smickey *
8118f6189Smickey * This code is derived from software contributed to Berkeley by
9118f6189Smickey * William Jolitz.
10118f6189Smickey *
11118f6189Smickey * Redistribution and use in source and binary forms, with or without
12118f6189Smickey * modification, are permitted provided that the following conditions
13118f6189Smickey * are met:
14118f6189Smickey * 1. Redistributions of source code must retain the above copyright
15118f6189Smickey *    notice, this list of conditions and the following disclaimer.
16118f6189Smickey * 2. Redistributions in binary form must reproduce the above copyright
17118f6189Smickey *    notice, this list of conditions and the following disclaimer in the
18118f6189Smickey *    documentation and/or other materials provided with the distribution.
1924fdaee6Sjsg * 3. Neither the name of the University nor the names of its contributors
20118f6189Smickey *    may be used to endorse or promote products derived from this software
21118f6189Smickey *    without specific prior written permission.
22118f6189Smickey *
23118f6189Smickey * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24118f6189Smickey * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25118f6189Smickey * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26118f6189Smickey * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27118f6189Smickey * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28118f6189Smickey * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29118f6189Smickey * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30118f6189Smickey * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31118f6189Smickey * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32118f6189Smickey * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33118f6189Smickey * SUCH DAMAGE.
34118f6189Smickey *
35118f6189Smickey *	from: @(#)brk.s	5.2 (Berkeley) 12/17/90
36118f6189Smickey */
37118f6189Smickey
38118f6189Smickey#include <machine/asm.h>
39118f6189Smickey
40118f6189Smickey#include "SYS.h"
41118f6189Smickey
42118f6189Smickey	.globl	_end
430b4d25b1Sdrahn	.globl	__curbrk
44118f6189Smickey
45118f6189Smickey	.data
46b3b7ef2eSguenther__minbrk:
47118f6189Smickey	.quad	_end
48aa797096Sguenther	END(__minbrk)
49aa797096Sguenther	.type	__minbrk,@object
50118f6189Smickey
51ec0f1ad6SguentherENTRY_NB(brk)
52*39b8558cSmortimer	RETGUARD_SETUP(brk, r11);
53*39b8558cSmortimer	RETGUARD_PUSH(r11);
54b3b7ef2eSguenther	cmpq	%rdi,__minbrk(%rip)
55118f6189Smickey	jb	1f
56b3b7ef2eSguenther	movq	__minbrk(%rip),%rdi
57118f6189Smickey1:
58118f6189Smickey	SYSTRAP(break)
59aa797096Sguenther	jc	1f
600b4d25b1Sdrahn	movq	%rdi,__curbrk(%rip)
61118f6189Smickey	xorl	%eax,%eax
62*39b8558cSmortimer	jmp	2f
63aa797096Sguenther1:
64fe38b55cSguenther	SET_ERRNO
65*39b8558cSmortimer2:
66*39b8558cSmortimer	RETGUARD_POP(r11);
67*39b8558cSmortimer	RETGUARD_CHECK(brk, r11);
68fe38b55cSguenther	ret
69aa797096SguentherEND(brk)
709a9a94f4Skettenis	.weak	brk
71