/*

    Copyright (C) Corollary, Inc., 1993, 1994.
    All Rights Reserved.
    This Module contains Proprietary Information of
    Corollary, Inc., and should be treated as Confidential.

Module Name:

    cbus_sw.h

Abstract:

    OS/2 PSD-specific definitions for the Corollary C-bus I & II
    MP PSD modules.  The global definitions needed for the
    OS/2 2.x PSD reside here.  Hardware architecture-specific
    definitions are in their respective modules.

Author:

    Landy Wang (landy@corollary.com) 11-Jan-1994
 */

/*
 * WARNING: if you change the CBUS_MAX_BRIDGES definition below,
 * scan the rest of this file carefully for Vector assignment and
 * other #defines that are dependent on it.
 */

#define CBUS_MAX_BRIDGES	2

extern ULONG			CbusProcessors;

extern PVOID			CbusBroadcastCSR;

/*
 * The first 0x10 IDT entries are reserved by Intel.
 * OS/2 has informed us that we can use any of the others, ie:
 * none of them are used for system calls, etc.
 */

/*
 * Definitions of supported Corollary C-bus platforms
 */
#define COROLLARY_CBUS1	1		/* Corollary C-bus 1 system */
#define COROLLARY_CBUS2	2		/* Corollary C-bus 2 system */

/*
 * Definitions of the switch table for multiple Corollary C-bus platforms.
 * The structure of this is defined by the OS/2 PSD implementation for Cbus.
 */
typedef struct _CBUS_PSDSW {

	VOID		(*RequestSoftwareInterrupt)(IN ULONG, IN ULONG);

	VOID		(*BootCPU)(IN ULONG, IN ULONG);

	VOID		(*InitializePlatform)(VOID);

	VOID		(*InitializeCPU)(ULONG);

	BOOL		(*EnableInterrupt)(IN ULONG, IN ULONG);

	VOID		(*DisableInterrupt)(ULONG, ULONG);

	VOID		(*ParseRRD)(IN OUT PEXT_ID_INFO, IN OUT PULONG);

	ULONG		(*ResolveNMI)(VOID);

	VOID		(*ResetAllOtherProcessors)(IN ULONG);

	VOID		(*EnablePIC)(IN ULONG);

	ULONG		(*GetMasks)(VOID);

	ULONG		(*GetIRR)(VOID);

	ULONG		(*GetISR)(VOID);

	BOOL		(*ReachIOPic)(VOID);

} CBUS_PSDSW, *PCBUS_PSDSW;
	
extern PCBUS_PSDSW CbusBackend;
