kaif.h revision ae115bc77f6fcde83175c75b4206dc2e50747966
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse/*
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * CDDL HEADER START
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse *
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * The contents of this file are subject to the terms of the
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * Common Development and Distribution License (the "License").
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * You may not use this file except in compliance with the License.
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse *
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * or http://www.opensolaris.org/os/licensing.
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * See the License for the specific language governing permissions
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * and limitations under the License.
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse *
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * When distributing Covered Code, include this CDDL HEADER in each
bc8fd1b0b1afdf89b8d28eefa8cd74e26ba97986fielding * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse * If applicable, add the following below this CDDL HEADER, with the
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * fields enclosed by brackets "[]" replaced with your own identifying
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * information: Portions Copyright [yyyy] [name of copyright owner]
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse *
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * CDDL HEADER END
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse */
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse/*
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse * Use is subject to license terms.
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse */
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#ifndef _KAIF_H
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#define _KAIF_H
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#pragma ident "%Z%%M% %I% %E% SMI"
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#ifndef sun4v
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#include <sys/spitregs.h>
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#endif /* sun4v */
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#ifndef _ASM
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#include <kmdb/kmdb_dpi_impl.h>
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#include <kmdb/kaif_regs.h>
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#endif
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#ifdef __cplusplus
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rseextern "C" {
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#endif
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#define KAIF_CPU_STATE_NONE 0
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#define KAIF_CPU_STATE_MASTER 1
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#define KAIF_CPU_STATE_SLAVE 2
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#define KAIF_LSUCTL_VWAPT_MASK (LSU_VM|LSU_VR|LSU_VW)
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#define KAIF_LSUCTL_PWAPT_MASK (LSU_PM|LSU_PR|LSU_PW)
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#define KAIF_LSUCTL_WAPT_MASK (LSU_PM|LSU_VM|LSU_PR|LSU_PW|LSU_VR|LSU_VW)
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rse#ifndef _ASM
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rseextern kaif_cpusave_t *kaif_cpusave;
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rseextern kaif_cpusave_t kaif_cb_save;
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rseextern int kaif_ncpusave;
d86ef5503dcbc38e87c0e03cd3e1f16458cb6323rseextern int kaif_master_cpuid;
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern int *kaif_promexitarmp;
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void (*kaif_ktrap_install)(int, void (*)(void));
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void (*kaif_ktrap_restore)(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern caddr_t kaif_tba;
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern caddr_t kaif_tba_obp;
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#ifdef sun4v
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern caddr_t kaif_tba_kernel;
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#endif
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern caddr_t kaif_tba_native;
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern size_t kaif_tba_native_sz;
ae398ee382477f3c2bbe9afcb325ae563e9c1595dougm
ae398ee382477f3c2bbe9afcb325ae563e9c1595dougmextern int kaif_trap_switch;
ae398ee382477f3c2bbe9afcb325ae563e9c1595dougm
a943533fd4d91d114af622731a405407990c4fb1rseextern void kaif_trap_set_debugger(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_trap_set_saved(kaif_cpusave_t *);
0a621c0dfbe5dc8d2ee2a65e84ab833d22d52714dougm
bfd35b329124266ebdab96567241bea57f2e8481dougmextern void kaif_hdlr_imiss(void);
a943533fd4d91d114af622731a405407990c4fb1rseextern caddr_t kaif_hdlr_imiss_patch;
d572c96f3a1c0f6b712bf2522352b929872a607edougmextern void kaif_hdlr_dmiss(void);
d572c96f3a1c0f6b712bf2522352b929872a607edougmextern caddr_t kaif_hdlr_dmiss_patch;
0a621c0dfbe5dc8d2ee2a65e84ab833d22d52714dougmextern void kaif_hdlr_generic(void);
a943533fd4d91d114af622731a405407990c4fb1rseextern void kaif_dtrap(void);
0a621c0dfbe5dc8d2ee2a65e84ab833d22d52714dougm
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern caddr_t kaif_dseg_start;
0a621c0dfbe5dc8d2ee2a65e84ab833d22d52714dougmextern caddr_t kaif_dseg_lim;
d572c96f3a1c0f6b712bf2522352b929872a607edougm
d572c96f3a1c0f6b712bf2522352b929872a607edougmextern uintptr_t kaif_invoke(uintptr_t, uint_t, const uintptr_t[],
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse kreg_t, kreg_t);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_enter(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_ktrap(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_slave_entry(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_trap_obp(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_mod_loaded(struct modctl *);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_mod_unloading(struct modctl *);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_wapt_set_regs(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_wapt_clear_regs(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_activate(kdi_debugvec_t **, uint_t);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_deactivate(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_resume(int);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_slave_entry(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_prom_rearm(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_debugger_entry(kaif_cpusave_t *);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrseextern void kaif_slave_loop_barrier(void);
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#endif
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#ifdef __cplusplus
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse}
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#endif
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse#endif /* _KAIF_H */
cc003103e52ff9d5fe9bed567ef9438613ab4fbfrse