1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22/* 23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27#pragma ident "%Z%%M% %I% %E% SMI" 28 29#if defined(__lint) 30#include <sys/types.h> 31#include <kmdb/kmdb_asmutil.h> 32#endif 33 34#include <sys/asm_linkage.h> 35 36#if defined(__lint) 37/*ARGSUSED*/ 38uintptr_t 39cas(uintptr_t *rs1, uintptr_t rs2, uintptr_t rd) 40{ 41 return (0); 42} 43#else 44 45 ENTRY(cas) 46 casx [%o0], %o1, %o2 47 retl 48 mov %o2, %o0 49 SET_SIZE(cas) 50 51#endif 52 53#if defined(__lint) 54/*ARGSUSED*/ 55void 56flush_windows(void) 57{ 58} 59#else 60 61 ENTRY(flush_windows) 62 save 63 flushw 64 restore 65 retl 66 nop 67 SET_SIZE(flush_windows) 68 69#endif 70 71#if defined(__lint) 72/*ARGSUSED*/ 73void 74membar_producer(void) 75{ 76} 77#else 78 79 /* 80 * US I has a problem with membars in the delay slot. We don't care 81 * about performance here, so for safety's sake, we'll assume that all 82 * the world's an US I. 83 */ 84 ENTRY(membar_producer) 85 membar #StoreStore 86 retl 87 nop 88 SET_SIZE(membar_producer) 89 90#endif 91 92#if defined(__lint) 93/*ARGSUSED*/ 94uint64_t 95rdasi(uint32_t asi, uintptr_t va) 96{ 97 return (0); 98} 99#else 100 101 ENTRY_NP(rdasi) 102 rd %asi, %o3 103 wr %o0, %asi 104 ldxa [%o1]%asi, %o0 105 retl 106 wr %o3, %asi 107 SET_SIZE(rdasi) 108 109#endif 110 111#if defined(__lint) 112/*ARGSUSED*/ 113void 114wrasi(uint32_t asi, uintptr_t va, uint64_t val) 115{ 116} 117#else 118 119 ENTRY_NP(wrasi) 120 rd %asi, %o3 121 wr %o0, %asi 122 stxa %o2, [%o1]%asi 123 retl 124 wr %o3, %asi 125 SET_SIZE(wrasi) 126 127#endif 128