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/asm_linkage.h> 31#include <sys/privregs.h> 32#endif 33 34/* 35 * The interface for a client programs that call the 64-bit romvec OBP 36 */ 37 38#if defined(__lint) 39/* ARGSUSED */ 40int 41client_handler(void *cif_handler, void *arg_array) 42{ 43 return (0); 44} 45#else /* __lint */ 46 47 ENTRY(client_handler) 48 save %sp, -SA64(MINFRAME64), %sp ! 32 bit frame, 64 bit sized 49 mov %i1, %o0 501: 51 rdpr %pstate, %l4 ! Get the present pstate value 52 andn %l4, PSTATE_AM, %l6 53 wrpr %l6, 0, %pstate ! Set PSTATE_AM = 0 54 jmpl %i0, %o7 ! Call cif handler 55 nop 56 wrpr %l4, 0, %pstate ! Just restore 57 ret ! Return result ... 58 restore %o0, %g0, %o0 ! delay; result in %o0 59 SET_SIZE(client_handler) 60 61#endif /* __lint */ 62