#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