|
|
#ifndef OSMCA_H_INCLUDED
#define OSMCA_H_INCLUDED
//###########################################################################
//**
//** Copyright (C) 1996-98 Intel Corporation. All rights reserved.
//**
//** The information and source code contained herein is the exclusive
//** property of Intel Corporation and may not be disclosed, examined
//** or reproduced in whole or in part without explicit written authorization
//** from the company.
//**
//###########################################################################
//-----------------------------------------------------------------------------
// Version control information follows.
//
// $Header: I:/DEVPVCS/OSMCA/osmca.h_v 2.2 09 Mar 1999 10:30:26 smariset $
// $Log: I:/DEVPVCS/OSMCA/osmca.h_v $
//
// Rev 2.2 09 Mar 1999 10:30:26 smariset
// *.h consolidation
//
// Rev 2.0 Dec 11 1998 11:42:18 khaw
// Post FW 0.5 release sync-up
//
// Rev 1.4 29 Oct 1998 14:25:02 smariset
//Consolidated Sources
//
// Rev 1.3 07 Aug 1998 13:47:50 smariset
//
//
// Rev 1.2 10 Jul 1998 11:04:24 smariset
//just checking in
//
// Rev 1.1 08 Jul 1998 14:23:16 smariset
//
//
// Rev 1.0 02 Jul 1998 09:20:56 smariset
//
//
//
//*****************************************************************************//
// SAL_MC_SET_PARAMS
// typedef's
typedef (*fptr)(void); typedef SAL_PAL_RETURN_VALUES (*fpSalProc)(ULONGLONG,ULONGLONG,ULONGLONG,ULONGLONG,ULONGLONG,ULONGLONG,ULONGLONG,ULONGLONG);
typedef struct tagPLabel { ULONGLONG fPtr; ULONGLONG gp; } PLabel;
typedef struct tagSalHandOffState { ULONGLONG OsGp; ULONGLONG pPalProc; fptr pSalProc; ULONGLONG SalGp; LONGLONG RendzResult; ULONGLONG SalRtnAddr; ULONGLONG MinStatePtr; } SalHandOffState;
#define SAL_RZ_NOT_REQUIRED 0
#define SAL_RZ_WITH_MC_RENDEZVOUS 1
#define SAL_RZ_WITH_MC_RENDEZVOUS_AND_INIT 2
#define SAL_RZ_FAILED -1
#define SalRendezVousSucceeded( _SalHandOffState ) \
((_SalHandOffState).RendzResult > SAL_RZ_NOT_REQUIRED)
//
// HAL Private SalRendezVousSucceeded definition,
// using ntos\inc\ia64.h: _SAL_HANDOFF_STATE.
//
#define HalpSalRendezVousSucceeded( _SalHandOffState ) \
((_SalHandOffState).RendezVousResult > SAL_RZ_NOT_REQUIRED)
typedef struct tagOsHandOffState { ULONGLONG Result; ULONGLONG SalGp; ULONGLONG nMinStatePtr; ULONGLONG SalRtnAddr; ULONGLONG NewCxFlag; } OsHandOffState;
typedef SAL_PAL_RETURN_VALUES (*fpOemMcaDispatch)(ULONGLONG);
// function prototypes
void HalpOsMcaDispatch(void); void HalpOsInitDispatch(void); VOID HalpCMCEnable ( VOID ); VOID HalpCMCDisable( VOID ); VOID HalpCMCDisableForAllProcessors( VOID ); VOID HalpCPEEnable ( VOID ); VOID HalpCPEDisable( VOID ); BOOLEAN HalpInitializeOSMCA( ULONG Number ); VOID HalpCmcHandler( VOID ); VOID HalpCpeHandler( VOID ); SAL_PAL_RETURN_VALUES HalpMcaHandler(ULONG64 RendezvousState, PPAL_MINI_SAVE_AREA Pmsa);
extern VOID HalpAcquireMcaSpinLock( PKSPIN_LOCK ); extern VOID HalpReleaseMcaSpinLock( PKSPIN_LOCK ); void HalpOsMcaDispatch1(void);
//
// wrappers to SAL procedure calls
//
SAL_PAL_RETURN_VALUES HalpGetErrLogSize( ULONGLONG Reserved, ULONGLONG EventType );
#define HalpGetStateInfoSize( /* ULONGLONG */ _EventType ) HalpGetErrLogSize( 0, (_EventType) )
SAL_PAL_RETURN_VALUES HalpGetErrLog( ULONGLONG Reserved, ULONGLONG EventType, ULONGLONG *MemAddr );
#define HalpGetStateInfo( /* ULONGLONG */ _EventType, /* ULONGLONG * */ _Buffer ) \
HalpGetErrLog( 0, (ULONGLONG)(_EventType), (PULONGLONG)(_Buffer) )
SAL_PAL_RETURN_VALUES HalpClrErrLog( ULONGLONG Reserved, ULONGLONG EventType // MCA_EVENT,INIT_EVENT,CMC_EVENT,CPE_EVENT
);
#define HalpClearStateInfo( /* ULONGLONG */ _EventType ) HalpClrErrLog( 0, (_EventType) )
SAL_PAL_RETURN_VALUES HalpSalSetParams(ULONGLONG, ULONGLONG, ULONGLONG, ULONGLONG, ULONGLONG); SAL_PAL_RETURN_VALUES HalpSalSetVectors(ULONGLONG, ULONGLONG, PHYSICAL_ADDRESS, ULONGLONG, ULONGLONG); SAL_PAL_RETURN_VALUES HalpSalRendz(void);
#define GetGp() __getReg(CV_IA64_IntGp)
#endif // OSMCA_H_INCLUDED
|