#ifndef _SYS_US3_MODULE_H
#define _SYS_US3_MODULE_H
#include <sys/async.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _KERNEL
#define CPU_PRIVATE_PTR(cp, x) (&(((cheetah_private_t *)CPU_PRIVATE(cp))->x))
#define CPU_PRIVATE_VAL(cp, x) (((cheetah_private_t *)CPU_PRIVATE(cp))->x)
#define CHP_WORD_TO_OFF(word, off) (((word) * 8) == off)
#if defined(JALAPENO) || defined(SERRANO)
#define C_AFSR_JREQ_ERRS (C_AFSR_RUE | C_AFSR_BP | C_AFSR_WBP | \
C_AFSR_RCE | C_AFSR_TO | C_AFSR_BERR | C_AFSR_UMS)
#define C_AFSR_AID_ERRS (C_AFSR_CPU | C_AFSR_FRU | C_AFSR_CPC | \
C_AFSR_FRC)
#if defined(SERRANO)
#define C_AFSR_CECC_ERRS (C_AFSR_UMS | C_AFSR_IVPE | C_AFSR_CPC | \
C_AFSR_CPU | C_AFSR_WDC | C_AFSR_WDU | C_AFSR_EDC | \
C_AFSR_CE | C_AFSR_RCE | C_AFSR_WBP | C_AFSR_FRC | \
C_AFSR_FRU | C_AFSR_EDU | C_AFSR_ETI | C_AFSR_ETC)
#else
#define C_AFSR_CECC_ERRS (C_AFSR_UMS | C_AFSR_IVPE | C_AFSR_CPC | \
C_AFSR_CPU | C_AFSR_WDC | C_AFSR_WDU | C_AFSR_EDC | \
C_AFSR_CE | C_AFSR_RCE | C_AFSR_WBP | C_AFSR_FRC | \
C_AFSR_FRU | C_AFSR_EDU)
#endif
#if defined(SERRANO)
#define C_AFSR_ASYNC_ERRS (C_AFSR_OM | C_AFSR_TO | C_AFSR_BERR | \
C_AFSR_UE | C_AFSR_RUE | C_AFSR_EDU | C_AFSR_BP | \
C_AFSR_ETU | C_AFSR_ETS)
#else
#define C_AFSR_ASYNC_ERRS (C_AFSR_OM | C_AFSR_TO | C_AFSR_BERR | \
C_AFSR_UE | C_AFSR_RUE | C_AFSR_EDU | C_AFSR_BP)
#endif
#if defined(SERRANO)
#define C_AFSR_FECC_ERRS (C_AFSR_UCU | C_AFSR_UCC | C_AFSR_ETI | \
C_AFSR_ETC)
#else
#define C_AFSR_FECC_ERRS (C_AFSR_UCU | C_AFSR_UCC)
#endif
#if defined(SERRANO)
#define C_AFSR_FATAL_ERRS (C_AFSR_JETO | C_AFSR_SCE | C_AFSR_JEIC | \
C_AFSR_JEIT | C_AFSR_JEIS | C_AFSR_IERR | \
C_AFSR_ISAP | C_AFSR_EFES | C_AFSR_ETS | C_AFSR_ETU)
#else
#define C_AFSR_FATAL_ERRS (C_AFSR_JETO | C_AFSR_SCE | C_AFSR_JEIC | \
C_AFSR_JEIT | C_AFSR_JEIS | C_AFSR_IERR | \
C_AFSR_ISAP | C_AFSR_ETP)
#endif
#define C_AFSR_ALL_ERRS (C_AFSR_FATAL_ERRS | C_AFSR_FECC_ERRS | \
C_AFSR_CECC_ERRS | C_AFSR_ASYNC_ERRS | C_AFSR_ME)
#if defined(SERRANO)
#define C_AFSR_ALL_ME_ERRS (C_AFSR_ISAP | C_AFSR_UE | C_AFSR_UCU | \
C_AFSR_EDU | C_AFSR_WDU | C_AFSR_CPU | C_AFSR_UCC | \
C_AFSR_BERR | C_AFSR_TO | C_AFSR_ETU | C_AFSR_OM | \
C_AFSR_UMS | C_AFSR_IVPE | C_AFSR_RUE | C_AFSR_BP | \
C_AFSR_WBP | C_AFSR_FRU | C_AFSR_JETO | C_AFSR_SCE | \
C_AFSR_JEIC | C_AFSR_JEIT | C_AFSR_JEIS | \
C_AFSR_ETC | C_AFSR_ETI)
#else
#define C_AFSR_ALL_ME_ERRS (C_AFSR_ISAP | C_AFSR_UE | C_AFSR_UCU | \
C_AFSR_EDU | C_AFSR_WDU | C_AFSR_CPU | C_AFSR_UCC | \
C_AFSR_BERR | C_AFSR_TO | C_AFSR_ETP | C_AFSR_OM | \
C_AFSR_UMS | C_AFSR_IVPE | C_AFSR_RUE | C_AFSR_BP | \
C_AFSR_WBP | C_AFSR_FRU | C_AFSR_JETO | C_AFSR_SCE | \
C_AFSR_JEIC | C_AFSR_JEIT | C_AFSR_JEIS)
#endif
#define C_AFSR_MEMORY (C_AFSR_UE | C_AFSR_CE | C_AFSR_FRC | C_AFSR_FRU |\
C_AFSR_RCE | C_AFSR_RUE)
#define C_AFSR_MSYND_ERRS (C_AFSR_IVPE | C_AFSR_BP | C_AFSR_WBP)
#define C_AFSR_ESYND_ERRS (C_AFSR_UE | C_AFSR_CE | \
C_AFSR_UCU | C_AFSR_UCC | C_AFSR_EDU | C_AFSR_EDC | \
C_AFSR_WDU | C_AFSR_WDC | C_AFSR_CPU | C_AFSR_CPC | \
C_AFSR_FRC | C_AFSR_FRU)
#define C_AFSR_LEVEL1 (C_AFSR_UE | C_AFSR_RUE | C_AFSR_UCU | C_AFSR_EDU | \
C_AFSR_WDU | C_AFSR_CPU | C_AFSR_IVPE | C_AFSR_TO | \
C_AFSR_BERR | C_AFSR_UMS | C_AFSR_OM | C_AFSR_WBP | \
C_AFSR_FRU | C_AFSR_BP)
#elif defined(CHEETAH_PLUS)
#define C_AFSR_CECC_ERRS (C_AFSR_CE | C_AFSR_EMC | C_AFSR_EDU | \
C_AFSR_EDC | C_AFSR_WDU | C_AFSR_WDC | C_AFSR_CPU | \
C_AFSR_CPC | C_AFSR_IVU | C_AFSR_IVC | C_AFSR_DUE | \
C_AFSR_THCE | C_AFSR_DBERR | C_AFSR_DTO | C_AFSR_IMU | \
C_AFSR_IMC)
#define C_AFSR_ASYNC_ERRS (C_AFSR_UE | C_AFSR_EMU | C_AFSR_EDU | \
C_AFSR_TO | C_AFSR_BERR)
#define C_AFSR_FECC_ERRS (C_AFSR_UCU | C_AFSR_UCC | C_AFSR_TSCE)
#define C_AFSR_FATAL_ERRS (C_AFSR_PERR | C_AFSR_IERR | C_AFSR_ISAP | \
C_AFSR_TUE | C_AFSR_TUE_SH | C_AFSR_IMU | C_AFSR_EMU)
#define C_AFSR_ALL_ERRS (C_AFSR_FATAL_ERRS | C_AFSR_FECC_ERRS | \
C_AFSR_CECC_ERRS | C_AFSR_ASYNC_ERRS | C_AFSR_ME)
#define C_AFSR_ALL_ME_ERRS (C_AFSR_TUE_SH | C_AFSR_IMU | C_AFSR_DTO | \
C_AFSR_DBERR | C_AFSR_TSCE | C_AFSR_TUE | C_AFSR_DUE | \
C_AFSR_ISAP | C_AFSR_EMU | C_AFSR_IVU | C_AFSR_TO | \
C_AFSR_BERR | C_AFSR_UCC | C_AFSR_UCU | C_AFSR_CPU | \
C_AFSR_WDU | C_AFSR_EDU | C_AFSR_UE | \
C_AFSR_L3_TUE_SH | C_AFSR_L3_TUE | C_AFSR_L3_EDU | \
C_AFSR_L3_UCC | C_AFSR_L3_UCU | C_AFSR_L3_CPU | \
C_AFSR_L3_WDU)
#define C_AFSR_EC_DATA_ERRS (C_AFSR_UCU | C_AFSR_UCC | C_AFSR_EDU | \
C_AFSR_EDC | C_AFSR_WDU | C_AFSR_WDC | C_AFSR_CPU | \
C_AFSR_CPC)
#define C_AFSR_MEMORY (C_AFSR_UE | C_AFSR_CE | C_AFSR_EMU | C_AFSR_EMC | \
C_AFSR_DUE)
#define C_AFSR_MSYND_ERRS (C_AFSR_EMU | C_AFSR_EMC | C_AFSR_IMU | \
C_AFSR_IMC)
#define C_AFSR_ESYND_ERRS (C_AFSR_UE | C_AFSR_CE | \
C_AFSR_UCU | C_AFSR_UCC | C_AFSR_EDU | C_AFSR_EDC | \
C_AFSR_WDU | C_AFSR_WDC | C_AFSR_CPU | C_AFSR_CPC | \
C_AFSR_IVU | C_AFSR_IVC | C_AFSR_DUE)
#define C_AFSR_LEVEL1 (C_AFSR_UE | C_AFSR_UCU | C_AFSR_EMU | C_AFSR_EDU | \
C_AFSR_WDU | C_AFSR_CPU | C_AFSR_IVU | C_AFSR_TO | \
C_AFSR_BERR | C_AFSR_DUE | C_AFSR_TUE | C_AFSR_DTO | \
C_AFSR_DBERR | C_AFSR_TUE_SH | C_AFSR_IMU)
#else
#define C_AFSR_CECC_ERRS (C_AFSR_CE | C_AFSR_EMC | C_AFSR_EDU | \
C_AFSR_EDC | C_AFSR_WDU | C_AFSR_WDC | C_AFSR_CPU | \
C_AFSR_CPC | C_AFSR_IVU | C_AFSR_IVC)
#define C_AFSR_ASYNC_ERRS (C_AFSR_UE | C_AFSR_EMU | C_AFSR_EDU | \
C_AFSR_TO | C_AFSR_BERR)
#define C_AFSR_FECC_ERRS (C_AFSR_UCU | C_AFSR_UCC)
#define C_AFSR_FATAL_ERRS (C_AFSR_PERR | C_AFSR_IERR | C_AFSR_ISAP | \
C_AFSR_EMU)
#define C_AFSR_ALL_ERRS (C_AFSR_FATAL_ERRS | C_AFSR_FECC_ERRS | \
C_AFSR_CECC_ERRS | C_AFSR_ASYNC_ERRS | C_AFSR_ME)
#define C_AFSR_ALL_ME_ERRS (C_AFSR_ISAP | C_AFSR_UE | C_AFSR_IVU | \
C_AFSR_EMU | C_AFSR_UCU | C_AFSR_EDU | C_AFSR_WDU | \
C_AFSR_CPU | C_AFSR_UCC | C_AFSR_BERR | C_AFSR_TO)
#define C_AFSR_EC_DATA_ERRS (C_AFSR_UCU | C_AFSR_UCC | C_AFSR_EDU | \
C_AFSR_EDC | C_AFSR_WDU | C_AFSR_WDC | C_AFSR_CPU | \
C_AFSR_CPC)
#define C_AFSR_MEMORY (C_AFSR_UE | C_AFSR_CE | C_AFSR_EMU | C_AFSR_EMC)
#define C_AFSR_MSYND_ERRS (C_AFSR_EMU | C_AFSR_EMC)
#define C_AFSR_ESYND_ERRS (C_AFSR_UE | C_AFSR_CE | \
C_AFSR_UCU | C_AFSR_UCC | C_AFSR_EDU | C_AFSR_EDC | \
C_AFSR_WDU | C_AFSR_WDC | C_AFSR_CPU | C_AFSR_CPC | \
C_AFSR_IVU | C_AFSR_IVC)
#define C_AFSR_LEVEL1 (C_AFSR_UE | C_AFSR_UCU | C_AFSR_EMU | C_AFSR_EDU | \
C_AFSR_WDU | C_AFSR_CPU | C_AFSR_IVU | C_AFSR_TO | \
C_AFSR_BERR)
#endif
#if defined(JALAPENO) || defined(SERRANO)
#define C_AFSR_MASK (C_AFSR_ALL_ERRS | C_AFSR_PRIV | C_AFSR_B_SYND | \
C_AFSR_E_SYND | C_AFSR_AID | C_AFSR_JREQ)
#else
#define C_AFSR_MASK (C_AFSR_ALL_ERRS | C_AFSR_PRIV | C_AFSR_M_SYND | \
C_AFSR_E_SYND)
#endif
#define C_AFSR_EXT_CECC_ERRS (C_AFSR_L3_EDU | C_AFSR_L3_EDC | \
C_AFSR_L3_WDU | C_AFSR_L3_WDC | C_AFSR_L3_CPU | \
C_AFSR_L3_CPC | C_AFSR_L3_THCE)
#define C_AFSR_EXT_ASYNC_ERRS (C_AFSR_L3_EDU)
#define C_AFSR_EXT_FECC_ERRS (C_AFSR_L3_UCU | C_AFSR_L3_UCC)
#define C_AFSR_EXT_FATAL_ERRS (C_AFSR_L3_TUE | C_AFSR_L3_TUE_SH | \
C_AFSR_RED_ERR | C_AFSR_EFA_PAR_ERR)
#define C_AFSR_EXT_ALL_ERRS (C_AFSR_EXT_FATAL_ERRS | \
C_AFSR_EXT_FECC_ERRS | C_AFSR_EXT_CECC_ERRS | \
C_AFSR_EXT_ASYNC_ERRS | C_AFSR_L3_MECC)
#define C_AFSR_EXT_L3_DATA_ERRS (C_AFSR_L3_WDU | C_AFSR_L3_WDC | \
C_AFSR_L3_CPU | C_AFSR_L3_CPC | C_AFSR_L3_UCU | \
C_AFSR_L3_UCC | C_AFSR_L3_EDU | C_AFSR_L3_EDC | \
C_AFSR_L3_MECC)
#define C_AFSR_EXT_ESYND_ERRS (C_AFSR_L3_UCU | C_AFSR_L3_UCC | \
C_AFSR_L3_EDU | C_AFSR_L3_EDC | C_AFSR_L3_WDU | \
C_AFSR_L3_WDC | C_AFSR_L3_CPU | C_AFSR_L3_CPC)
#define C_AFSR_EXT_LEVEL1 (C_AFSR_L3_UCU | C_AFSR_L3_EDU | \
C_AFSR_L3_WDU | C_AFSR_L3_CPU | C_AFSR_L3_TUE | \
C_AFSR_L3_TUE_SH)
#define C_AFSR_PANIC(errs) (((errs) & (C_AFSR_FATAL_ERRS | \
C_AFSR_EXT_FATAL_ERRS)) != 0)
#define AFSR_EXT_IN_AFSR_MASK C_AFSR_EXT_ALL_ERRS
#define AFSR_EXT_IN_AFSR_SHIFT 20
#define CLO_FLAGS_TT_MASK 0xff000
#define CLO_FLAGS_TT_SHIFT 12
#define CLO_FLAGS_TL_MASK 0xf00
#define CLO_FLAGS_TL_SHIFT 8
#define CLO_NESTING_MAX 20
#define C_M_SYND_SHIFT 16
#define GET_M_SYND(afsr) (((afsr) & C_AFSR_M_SYND) >> C_M_SYND_SHIFT)
#define GET_E_SYND(afsr) ((afsr) & C_AFSR_E_SYND)
#define C_AFAR_PA INT64_C(0x000007fffffffff0)
#define FLUSHALL_TYPE 0x0
#define FLUSHMATCH_TYPE 0x1
#define FLUSHPAGE_TYPE 0x2
#define ICACHE_FLUSHSZ 0x20
#define CHEETAH_DC_VBIT_SHIFT 1
#define CHEETAH_DC_VBIT_MASK 0x1
#define MAX_REASON_STRING 40
#define CPU_TO 1
#define CPU_BERR 2
#define CPU_CE 3
#define CPU_UE 4
#define CPU_CE_ECACHE 5
#define CPU_UE_ECACHE 6
#define CPU_EMC 7
#define CPU_FATAL 8
#define CPU_ORPH 9
#define CPU_IV 10
#define CPU_INV_AFSR 11
#define CPU_UE_ECACHE_RETIRE 12
#define CPU_IC_PARITY 13
#define CPU_DC_PARITY 14
#define CPU_DUE 15
#define CPU_FPUERR 16
#define CPU_RCE 17
#define CPU_RUE 18
#define CPU_FRC 19
#define CPU_FRU 20
#define CPU_BPAR 21
#define CPU_UMS 22
#define CPU_PC_PARITY 23
#define CPU_ITLB_PARITY 24
#define CPU_DTLB_PARITY 25
#define CPU_L3_ADDR_PE 26
#define CH_SET_TRAP(ttentry, ttlabel) \
bcopy((const void *)&ttlabel, &ttentry, 32); \
flush_instr_mem((caddr_t)&ttentry, 32);
#define CH_ASYNC_LOG_DONE 0
#define CH_ASYNC_LOG_CONTINUE 1
#define CH_ASYNC_LOG_UNKNOWN 2
#define CH_ASYNC_LOG_RECIRC 3
#ifndef _ASM
typedef struct cheetah_async_flt {
struct async_flt cmn_asyncflt;
ushort_t flt_type;
uint64_t flt_bit;
uint64_t afsr_ext;
uint64_t afsr_errs;
uint64_t afar2;
ch_diag_data_t flt_diag_data;
int flt_data_incomplete;
int flt_trapped_ce;
#if defined(CPU_IMP_L1_CACHE_PARITY)
ch_l1_parity_log_t parity_data;
#endif
pn_tlb_logout_t tlb_diag_data;
uint32_t flt_fpdata[16];
uint64_t flt_sdw_afar;
uint64_t flt_sdw_afsr;
uint64_t flt_sdw_afsr_ext;
} ch_async_flt_t;
#define ECC_ALL_TRAPS (ECC_D_TRAP | ECC_I_TRAP | ECC_C_TRAP | ECC_F_TRAP)
#define ECC_ORPH_TRAPS (ECC_D_TRAP | ECC_I_TRAP | ECC_C_TRAP)
#define ECC_ASYNC_TRAPS (ECC_D_TRAP | ECC_I_TRAP)
#define ECC_MECC_TRAPS (ECC_D_TRAP | ECC_C_TRAP | ECC_F_TRAP)
typedef struct ecc_type_to_info {
uint64_t ec_afsr_bit;
char *ec_reason;
uint_t ec_flags;
int ec_flt_type;
char *ec_desc;
uint64_t ec_err_payload;
char *ec_err_class;
} ecc_type_to_info_t;
typedef struct bus_config_eclk {
uint_t divisor;
uint64_t mask;
} bus_config_eclk_t;
#endif
#endif
#ifndef _ASM
#include <sys/cpuvar.h>
extern uint64_t get_safari_config(void);
extern void set_safari_config(uint64_t safari_config);
extern void shipit(int, int);
extern void cpu_aflt_log(int ce_code, int tagnum, ch_async_flt_t *aflt,
uint_t logflags, const char *endstr, const char *fmt, ...);
extern uint8_t flt_to_trap_type(struct async_flt *aflt);
extern void cpu_log_err(struct async_flt *aflt);
extern void cpu_page_retire(ch_async_flt_t *ch_flt);
extern int clear_errors(ch_async_flt_t *ch_flt);
extern void cpu_init_ecache_scrub_dr(struct cpu *cp);
extern void get_cpu_error_state(ch_cpu_errors_t *);
extern void set_cpu_error_state(ch_cpu_errors_t *);
extern int cpu_flt_in_memory(ch_async_flt_t *ch_flt, uint64_t t_afsr_bit);
extern int cpu_queue_events(ch_async_flt_t *ch_flt, char *reason,
uint64_t t_afsr, ch_cpu_logout_t *clop);
extern void cpu_error_ecache_flush(ch_async_flt_t *);
extern void cpu_clearphys(struct async_flt *aflt);
extern void cpu_async_log_ic_parity_err(ch_async_flt_t *);
extern void cpu_async_log_dc_parity_err(ch_async_flt_t *);
extern uint64_t get_ecache_ctrl(void);
extern uint64_t get_jbus_config(void);
extern void set_jbus_config(uint64_t jbus_config);
extern uint64_t get_mcu_ctl_reg1(void);
extern void set_mcu_ctl_reg1(uint64_t mcu_ctl);
extern void cpu_init_trap(void);
extern int cpu_ecache_nway(void);
extern void cpu_delayed_logout(size_t, ch_cpu_logout_t *);
extern void cpu_payload_add_pcache(struct async_flt *, nvlist_t *);
extern void cpu_payload_add_tlb(struct async_flt *, nvlist_t *);
extern int cpu_scrub_cpu_setup(cpu_setup_t, int, void *);
#if defined(JALAPENO) || defined(SERRANO)
extern int afsr_to_jaid_status(uint64_t afsr, uint64_t afsr_bit);
#endif
extern void ch_pil15_interrupt_instr();
#ifdef CHEETAHPLUS_ERRATUM_25
extern int mondo_recover(uint16_t, int);
#endif
extern void fecc_err_instr(void);
extern void fecc_err_tl1_instr(void);
extern void fecc_err_tl1_cont_instr(void);
extern int afsr_to_overw_status(uint64_t afsr, uint64_t afsr_bit,
uint64_t *ow_bits);
#if defined(CHEETAH_PLUS)
extern int afsr_to_pn_esynd_status(uint64_t afsr, uint64_t afsr_bit);
#endif
extern void flush_ecache(uint64_t physaddr, size_t ecachesize, size_t linesize);
extern void flush_dcache(void);
extern void flush_icache(void);
extern void flush_pcache(void);
extern void flush_ipb(void);
extern uint64_t get_dcu(void);
extern void set_dcu(uint64_t ncc);
extern void scrubphys(uint64_t paddr, int ecache_set_size);
extern void clearphys(uint64_t paddr, int ecache_set_size, int ecache_linesize);
extern void stick_adj(int64_t skew);
extern void stick_timestamp(int64_t *ts);
extern void icache_inval_all(void);
extern void dcache_inval_line(int index);
extern void ecache_flush_line(uint64_t flushaddr, int ec_size);
extern int ecache_get_lineinfo(uint32_t ecache_index, uint64_t *tag,
uint64_t *data);
#if defined(CPU_IMP_L1_CACHE_PARITY)
extern void get_dcache_dtag(uint32_t dcache_idx, uint64_t *data);
extern void get_icache_dtag(uint32_t icache_idx, uint64_t *data);
extern void get_pcache_dtag(uint32_t pcache_idx, uint64_t *data);
extern void correct_dcache_parity(size_t dcache_size, size_t dcache_linesize);
#endif
extern void cpu_check_block(caddr_t, uint_t);
extern uint32_t us3_gen_ecc(uint64_t data_low, uint64_t data_high);
extern int cpu_impl_async_log_err(void *, errorq_elem_t *);
extern void cpu_fast_ecc_error(struct regs *rp, ulong_t p_clo_flags);
extern void cpu_tl1_error(struct regs *rp, int panic);
extern void cpu_tl1_err_panic(struct regs *rp, ulong_t flags);
extern void cpu_disrupting_error(struct regs *rp, ulong_t p_clo_flags);
extern void cpu_deferred_error(struct regs *rp, ulong_t p_clo_flags);
#if defined(CPU_IMP_L1_CACHE_PARITY)
extern void cpu_parity_error(struct regs *rp, uint_t flags, caddr_t tpc);
#endif
extern void claimlines(uint64_t startpa, size_t len, int stride);
extern void copy_tsb_entry(uintptr_t src, uintptr_t dest);
extern void hwblkpagecopy(const void *src, void *dst);
#if defined(CHEETAH_PLUS)
extern void pn_cpu_log_diag_l2_info(ch_async_flt_t *ch_flt);
extern void set_afsr_ext(uint64_t afsr_ext);
#endif
extern void cpu_tlb_parity_error(struct regs *rp, ulong_t trap_va,
ulong_t tlb_info);
extern void log_flt_func(struct async_flt *aflt, char *unum);
extern uint64_t pn_get_tlb_index(uint64_t va, uint64_t pg_sz);
extern int popc64(uint64_t val);
extern bus_config_eclk_t bus_config_eclk[];
extern ecc_type_to_info_t ecc_type_to_info[];
extern uint64_t ch_err_tl1_paddrs[];
extern uchar_t ch_err_tl1_pending[];
#ifdef CHEETAHPLUS_ERRATUM_25
extern int cheetah_sendmondo_recover;
#endif
int dcache_nlines;
extern uint64_t afar_overwrite[];
extern uint64_t esynd_overwrite[];
extern uint64_t msynd_overwrite[];
#if defined(JALAPENO) || defined(SERRANO)
extern uint64_t jreq_overwrite[];
#if defined(SERRANO)
extern uint64_t afar2_overwrite[];
#endif
#endif
extern uint64_t xc_tick_limit;
extern uint64_t xc_tick_jump_limit;
extern struct kmem_cache *ch_private_cache;
#if defined(CPU_IMP_L1_CACHE_PARITY)
extern void *tt0_dperr;
extern void *tt1_dperr;
extern void *tt1_swtrap1;
extern void *tt0_iperr;
extern void *tt1_iperr;
extern void *tt1_swtrap2;
extern void dcache_parity_instr();
extern void dcache_parity_tl1_instr();
extern void dcache_parity_tl1_cont_instr();
extern void icache_parity_instr();
extern void icache_parity_tl1_instr();
extern void icache_parity_tl1_cont_instr();
#endif
extern void *tt0_fecc;
extern void *tt1_fecc;
extern void *tt1_swtrap0;
extern void *pil15_epilogue;
extern int dcache_size;
extern int dcache_linesize;
extern int icache_size;
extern int icache_linesize;
extern cpuset_t cpu_offline_set;
#endif
#ifdef __cplusplus
}
#endif
#endif