1*9171Sxiuyan.wang@Sun.COM /* 2*9171Sxiuyan.wang@Sun.COM * CDDL HEADER START 3*9171Sxiuyan.wang@Sun.COM * 4*9171Sxiuyan.wang@Sun.COM * The contents of this file are subject to the terms of the 5*9171Sxiuyan.wang@Sun.COM * Common Development and Distribution License (the "License"). 6*9171Sxiuyan.wang@Sun.COM * You may not use this file except in compliance with the License. 7*9171Sxiuyan.wang@Sun.COM * 8*9171Sxiuyan.wang@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*9171Sxiuyan.wang@Sun.COM * or http://www.opensolaris.org/os/licensing. 10*9171Sxiuyan.wang@Sun.COM * See the License for the specific language governing permissions 11*9171Sxiuyan.wang@Sun.COM * and limitations under the License. 12*9171Sxiuyan.wang@Sun.COM * 13*9171Sxiuyan.wang@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 14*9171Sxiuyan.wang@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*9171Sxiuyan.wang@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 16*9171Sxiuyan.wang@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 17*9171Sxiuyan.wang@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 18*9171Sxiuyan.wang@Sun.COM * 19*9171Sxiuyan.wang@Sun.COM * CDDL HEADER END 20*9171Sxiuyan.wang@Sun.COM */ 21*9171Sxiuyan.wang@Sun.COM 22*9171Sxiuyan.wang@Sun.COM /* 23*9171Sxiuyan.wang@Sun.COM * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24*9171Sxiuyan.wang@Sun.COM * Use is subject to license terms. 25*9171Sxiuyan.wang@Sun.COM */ 26*9171Sxiuyan.wang@Sun.COM 27*9171Sxiuyan.wang@Sun.COM #ifndef _ASM_CPU_H 28*9171Sxiuyan.wang@Sun.COM #define _ASM_CPU_H 29*9171Sxiuyan.wang@Sun.COM 30*9171Sxiuyan.wang@Sun.COM #include <sys/types.h> 31*9171Sxiuyan.wang@Sun.COM 32*9171Sxiuyan.wang@Sun.COM #ifdef __cplusplus 33*9171Sxiuyan.wang@Sun.COM extern "C" { 34*9171Sxiuyan.wang@Sun.COM #endif 35*9171Sxiuyan.wang@Sun.COM 36*9171Sxiuyan.wang@Sun.COM #if !defined(__lint) && defined(__GNUC__) 37*9171Sxiuyan.wang@Sun.COM 38*9171Sxiuyan.wang@Sun.COM extern __inline__ void prefetch_read_many(void * addr)39*9171Sxiuyan.wang@Sun.COMprefetch_read_many(void *addr) 40*9171Sxiuyan.wang@Sun.COM { 41*9171Sxiuyan.wang@Sun.COM #if defined(__sparcv9) 42*9171Sxiuyan.wang@Sun.COM __asm__ __volatile__( 43*9171Sxiuyan.wang@Sun.COM "prefetch [%0],#n_reads\n\t" 44*9171Sxiuyan.wang@Sun.COM : "=r" (addr) 45*9171Sxiuyan.wang@Sun.COM : "0" (addr)); 46*9171Sxiuyan.wang@Sun.COM #else 47*9171Sxiuyan.wang@Sun.COM #error "port me" 48*9171Sxiuyan.wang@Sun.COM #endif 49*9171Sxiuyan.wang@Sun.COM } 50*9171Sxiuyan.wang@Sun.COM 51*9171Sxiuyan.wang@Sun.COM extern __inline__ void prefetch_read_once(void * addr)52*9171Sxiuyan.wang@Sun.COMprefetch_read_once(void *addr) 53*9171Sxiuyan.wang@Sun.COM { 54*9171Sxiuyan.wang@Sun.COM #if defined(__sparcv9) 55*9171Sxiuyan.wang@Sun.COM __asm__ __volatile__( 56*9171Sxiuyan.wang@Sun.COM "prefetch [%0],#one_read\n\t" 57*9171Sxiuyan.wang@Sun.COM : "=r" (addr) 58*9171Sxiuyan.wang@Sun.COM : "0" (addr)); 59*9171Sxiuyan.wang@Sun.COM #else 60*9171Sxiuyan.wang@Sun.COM #error "port me" 61*9171Sxiuyan.wang@Sun.COM #endif 62*9171Sxiuyan.wang@Sun.COM } 63*9171Sxiuyan.wang@Sun.COM 64*9171Sxiuyan.wang@Sun.COM extern __inline__ void prefetch_write_many(void * addr)65*9171Sxiuyan.wang@Sun.COMprefetch_write_many(void *addr) 66*9171Sxiuyan.wang@Sun.COM { 67*9171Sxiuyan.wang@Sun.COM #if defined(__sparcv9) 68*9171Sxiuyan.wang@Sun.COM __asm__ __volatile__( 69*9171Sxiuyan.wang@Sun.COM "prefetch [%0],#n_writes\n\t" 70*9171Sxiuyan.wang@Sun.COM : "=r" (addr) 71*9171Sxiuyan.wang@Sun.COM : "0" (addr)); 72*9171Sxiuyan.wang@Sun.COM #else 73*9171Sxiuyan.wang@Sun.COM #error "port me" 74*9171Sxiuyan.wang@Sun.COM #endif 75*9171Sxiuyan.wang@Sun.COM } 76*9171Sxiuyan.wang@Sun.COM 77*9171Sxiuyan.wang@Sun.COM extern __inline__ void prefetch_write_once(void * addr)78*9171Sxiuyan.wang@Sun.COMprefetch_write_once(void *addr) 79*9171Sxiuyan.wang@Sun.COM { 80*9171Sxiuyan.wang@Sun.COM #if defined(__sparcv9) 81*9171Sxiuyan.wang@Sun.COM __asm__ __volatile__( 82*9171Sxiuyan.wang@Sun.COM "prefetch [%0],#one_write\n\t" 83*9171Sxiuyan.wang@Sun.COM : "=r" (addr) 84*9171Sxiuyan.wang@Sun.COM : "0" (addr)); 85*9171Sxiuyan.wang@Sun.COM #else 86*9171Sxiuyan.wang@Sun.COM #error "port me" 87*9171Sxiuyan.wang@Sun.COM #endif 88*9171Sxiuyan.wang@Sun.COM } 89*9171Sxiuyan.wang@Sun.COM 90*9171Sxiuyan.wang@Sun.COM #endif /* !__lint && __GNUC__ */ 91*9171Sxiuyan.wang@Sun.COM 92*9171Sxiuyan.wang@Sun.COM #ifdef __cplusplus 93*9171Sxiuyan.wang@Sun.COM } 94*9171Sxiuyan.wang@Sun.COM #endif 95*9171Sxiuyan.wang@Sun.COM 96*9171Sxiuyan.wang@Sun.COM #endif /* _ASM_CPU_H */ 97