xref: /titanic_51/usr/src/lib/libumem/i386/asm_subr.s (revision 4f364e7c95ee7fd9d5bbeddc1940e92405bb0e72)
17c478bd9Sstevel@tonic-gate/*
27c478bd9Sstevel@tonic-gate * CDDL HEADER START
37c478bd9Sstevel@tonic-gate *
47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the
57c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
67c478bd9Sstevel@tonic-gate * (the "License").  You may not use this file except in compliance
77c478bd9Sstevel@tonic-gate * with the License.
87c478bd9Sstevel@tonic-gate *
97c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate * and limitations under the License.
137c478bd9Sstevel@tonic-gate *
147c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate *
207c478bd9Sstevel@tonic-gate * CDDL HEADER END
217c478bd9Sstevel@tonic-gate */
227c478bd9Sstevel@tonic-gate/*
237c478bd9Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
247c478bd9Sstevel@tonic-gate * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate */
267c478bd9Sstevel@tonic-gate
277c478bd9Sstevel@tonic-gate#include <sys/asm_linkage.h>
287c478bd9Sstevel@tonic-gate
29*4f364e7cSRobert Mustacchi#define	NOP4	\
30*4f364e7cSRobert Mustacchi	nop;	\
31*4f364e7cSRobert Mustacchi	nop;	\
32*4f364e7cSRobert Mustacchi	nop;	\
33*4f364e7cSRobert Mustacchi	nop;
34*4f364e7cSRobert Mustacchi
35*4f364e7cSRobert Mustacchi#define NOP16	\
36*4f364e7cSRobert Mustacchi	NOP4	\
37*4f364e7cSRobert Mustacchi	NOP4	\
38*4f364e7cSRobert Mustacchi	NOP4	\
39*4f364e7cSRobert Mustacchi	NOP4
40*4f364e7cSRobert Mustacchi
41*4f364e7cSRobert Mustacchi#define	NOP64	\
42*4f364e7cSRobert Mustacchi	NOP16	\
43*4f364e7cSRobert Mustacchi	NOP16	\
44*4f364e7cSRobert Mustacchi	NOP16	\
45*4f364e7cSRobert Mustacchi	NOP16
46*4f364e7cSRobert Mustacchi
47*4f364e7cSRobert Mustacchi#define	NOP256	\
48*4f364e7cSRobert Mustacchi	NOP64	\
49*4f364e7cSRobert Mustacchi	NOP64	\
50*4f364e7cSRobert Mustacchi	NOP64	\
51*4f364e7cSRobert Mustacchi	NOP64
52*4f364e7cSRobert Mustacchi
537c478bd9Sstevel@tonic-gate#if defined(lint)
547c478bd9Sstevel@tonic-gate
557c478bd9Sstevel@tonic-gatevoid *
567c478bd9Sstevel@tonic-gategetfp(void)
577c478bd9Sstevel@tonic-gate{
587c478bd9Sstevel@tonic-gate	return (NULL);
597c478bd9Sstevel@tonic-gate}
607c478bd9Sstevel@tonic-gate
617c478bd9Sstevel@tonic-gate#ifndef UMEM_STANDALONE
627c478bd9Sstevel@tonic-gatevoid
637c478bd9Sstevel@tonic-gate_breakpoint(void)
647c478bd9Sstevel@tonic-gate{
657c478bd9Sstevel@tonic-gate	return;
667c478bd9Sstevel@tonic-gate}
677c478bd9Sstevel@tonic-gate#endif
687c478bd9Sstevel@tonic-gate
697c478bd9Sstevel@tonic-gate#else	/* lint */
707c478bd9Sstevel@tonic-gate
717c478bd9Sstevel@tonic-gate#if defined(__amd64)
727c478bd9Sstevel@tonic-gate
737c478bd9Sstevel@tonic-gate	ENTRY(getfp)
747c478bd9Sstevel@tonic-gate	movq	%rbp, %rax
757c478bd9Sstevel@tonic-gate	ret
767c478bd9Sstevel@tonic-gate	SET_SIZE(getfp)
777c478bd9Sstevel@tonic-gate
787c478bd9Sstevel@tonic-gate#else	/* __i386 */
797c478bd9Sstevel@tonic-gate
807c478bd9Sstevel@tonic-gate	ENTRY(getfp)
817c478bd9Sstevel@tonic-gate	movl	%ebp, %eax
827c478bd9Sstevel@tonic-gate	ret
837c478bd9Sstevel@tonic-gate	SET_SIZE(getfp)
847c478bd9Sstevel@tonic-gate
857c478bd9Sstevel@tonic-gate#endif
867c478bd9Sstevel@tonic-gate
877c478bd9Sstevel@tonic-gate#ifndef UMEM_STANDALONE
887c478bd9Sstevel@tonic-gate	ENTRY(_breakpoint)
897c478bd9Sstevel@tonic-gate	int	$3
907c478bd9Sstevel@tonic-gate	ret
917c478bd9Sstevel@tonic-gate	SET_SIZE(_breakpoint)
927c478bd9Sstevel@tonic-gate#endif
937c478bd9Sstevel@tonic-gate
94*4f364e7cSRobert Mustacchi	ENTRY(_malloc)
95*4f364e7cSRobert Mustacchi	jmp umem_malloc;
96*4f364e7cSRobert Mustacchi	NOP256
97*4f364e7cSRobert Mustacchi	NOP256
98*4f364e7cSRobert Mustacchi#if defined(__amd64)
99*4f364e7cSRobert Mustacchi	NOP64
100*4f364e7cSRobert Mustacchi#endif
101*4f364e7cSRobert Mustacchi	SET_SIZE(_malloc)
102*4f364e7cSRobert Mustacchi
103*4f364e7cSRobert Mustacchi	ENTRY(_free)
104*4f364e7cSRobert Mustacchi	jmp umem_malloc_free;
105*4f364e7cSRobert Mustacchi	NOP256
106*4f364e7cSRobert Mustacchi	NOP256
107*4f364e7cSRobert Mustacchi#if defined(__amd64)
108*4f364e7cSRobert Mustacchi	NOP64
109*4f364e7cSRobert Mustacchi#endif
110*4f364e7cSRobert Mustacchi	SET_SIZE(_free)
111*4f364e7cSRobert Mustacchi
112*4f364e7cSRobert Mustacchi	ANSI_PRAGMA_WEAK2(malloc,_malloc,function)
113*4f364e7cSRobert Mustacchi	ANSI_PRAGMA_WEAK2(free,_free,function)
114*4f364e7cSRobert Mustacchi
1157c478bd9Sstevel@tonic-gate#endif	/* lint */
116