17c478bdstevel@tonic-gate/*
27c478bdstevel@tonic-gate * CDDL HEADER START
37c478bdstevel@tonic-gate *
47c478bdstevel@tonic-gate * The contents of this file are subject to the terms of the
57c478bdstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only
67c478bdstevel@tonic-gate * (the "License").  You may not use this file except in compliance
77c478bdstevel@tonic-gate * with the License.
87c478bdstevel@tonic-gate *
97c478bdstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bdstevel@tonic-gate * or http://www.opensolaris.org/os/licensing.
117c478bdstevel@tonic-gate * See the License for the specific language governing permissions
127c478bdstevel@tonic-gate * and limitations under the License.
137c478bdstevel@tonic-gate *
147c478bdstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each
157c478bdstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bdstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the
177c478bdstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying
187c478bdstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bdstevel@tonic-gate *
207c478bdstevel@tonic-gate * CDDL HEADER END
217c478bdstevel@tonic-gate */
227c478bdstevel@tonic-gate/*
237c478bdstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
247c478bdstevel@tonic-gate * Use is subject to license terms.
257c478bdstevel@tonic-gate */
267c478bdstevel@tonic-gate
277c478bdstevel@tonic-gate#ifndef	_SYS_FPRAS_H
287c478bdstevel@tonic-gate#define	_SYS_FPRAS_H
297c478bdstevel@tonic-gate
307c478bdstevel@tonic-gate#pragma ident	"%Z%%M%	%I%	%E% SMI"
317c478bdstevel@tonic-gate
327c478bdstevel@tonic-gate#ifdef	__cplusplus
337c478bdstevel@tonic-gateextern "C" {
347c478bdstevel@tonic-gate#endif
357c478bdstevel@tonic-gate
367c478bdstevel@tonic-gate/*
377c478bdstevel@tonic-gate * The following identify copy operations using the fpras mechanism.
387c478bdstevel@tonic-gate * They are used in array indexing so keep them sequential.
397c478bdstevel@tonic-gate */
407c478bdstevel@tonic-gate#define	FPRAS_BCOPY	0
417c478bdstevel@tonic-gate#define	FPRAS_COPYIN	1
427c478bdstevel@tonic-gate#define	FPRAS_COPYOUT	2
437c478bdstevel@tonic-gate#define	FPRAS_PGCOPY	3
447c478bdstevel@tonic-gate#define	FPRAS_NCOPYOPS	(FPRAS_PGCOPY + 1)
457c478bdstevel@tonic-gate
467c478bdstevel@tonic-gate/*
477c478bdstevel@tonic-gate * Identifying where fpras_failure was called from.
487c478bdstevel@tonic-gate */
497c478bdstevel@tonic-gate#define	FPRAS_FROMCHKFN	0
507c478bdstevel@tonic-gate#define	FPRAS_FROMTRAP	1
517c478bdstevel@tonic-gate
527c478bdstevel@tonic-gate/*
537c478bdstevel@tonic-gate * Return values from a check function.
547c478bdstevel@tonic-gate */
557c478bdstevel@tonic-gate#define	FPRAS_OK	0
567c478bdstevel@tonic-gate#define	FPRAS_BADCALC	1
577c478bdstevel@tonic-gate#define	FPRAS_BADTRAP	2
587c478bdstevel@tonic-gate
597c478bdstevel@tonic-gate#if !defined(_ASM)
607c478bdstevel@tonic-gate
617c478bdstevel@tonic-gate/*
627c478bdstevel@tonic-gate * Set if an architecture/cpu combination implements fpRAS.
637c478bdstevel@tonic-gate */
647c478bdstevel@tonic-gateextern int fpras_implemented;
657c478bdstevel@tonic-gate
667c478bdstevel@tonic-gate/*
677c478bdstevel@tonic-gate * Set in /etc/system to disable fpRAS mechanism at reboot.
687c478bdstevel@tonic-gate * Changing this value on a live system may have no effect (eg, if an
697c478bdstevel@tonic-gate * implementation checks only at startup).
707c478bdstevel@tonic-gate */
717c478bdstevel@tonic-gateextern int fpras_disable;
727c478bdstevel@tonic-gate
737c478bdstevel@tonic-gate/*
747c478bdstevel@tonic-gate * Set in /etc/system to disable checking of particular copy operations.  Set
757c478bdstevel@tonic-gate * bit N to disable checking of the corresponding copy operation (eg, bit 2
767c478bdstevel@tonic-gate * for copyout).  Changing this value on a live system may have no effect.
777c478bdstevel@tonic-gate */
787c478bdstevel@tonic-gateextern int fpras_disableids;
797c478bdstevel@tonic-gate
807c478bdstevel@tonic-gate/*
817c478bdstevel@tonic-gate * Function called from a check function to indicate an incorrect result
827c478bdstevel@tonic-gate * was obtained and from trap handlers to determine if the trap was due to
837c478bdstevel@tonic-gate * an fpRAS failure.  Symbol only appears for architecture/cpu combinations
847c478bdstevel@tonic-gate * that implement fpRAS.
857c478bdstevel@tonic-gate */
867c478bdstevel@tonic-gate#pragma	weak fpras_chktrap
877c478bdstevel@tonic-gatestruct regs;
887c478bdstevel@tonic-gateextern int fpras_chktrap(struct regs *);
897c478bdstevel@tonic-gateextern int fpras_failure(int, int);
907c478bdstevel@tonic-gate
917c478bdstevel@tonic-gate#endif	/* !_ASM */
927c478bdstevel@tonic-gate
937c478bdstevel@tonic-gate#ifdef	__cplusplus
947c478bdstevel@tonic-gate}
957c478bdstevel@tonic-gate#endif
967c478bdstevel@tonic-gate
977c478bdstevel@tonic-gate#endif	/* _SYS_FPRAS_H */
98