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