/*++ * * Copyright (c) 1994,1996 FirePower Systems, Inc. * Copyright (c) 1994 FirmWorks, Mountain View CA USA. All rights reserved. * * $RCSfile: veneer.h $ * $Revision: 1.20 $ * $Date: 1996/06/19 23:13:15 $ * $Locker: $ * * Module Name: veneer.h Abstract: This module contains the private data structures and procedure prototypes for the veneer for the PowerPC NT. This module is specifically tailored for the PowerPro and PowerTop systems. Author: A. Benjamin 9-May-1994 Revision History: 20-Jul-94 Shin Iwamoto at FirePower Systems Inc. Added VRDBG_LOAD. 13-Jul-94 Shin Iwamoto at FirePower Systems Inc. Added ReadAheadCount and ReadAheadBuffer[2] in FileTable. 12-Jul-94 Shin Iwamoto at FirePower Systems Inc. Added Delete and NetworkDevice flags in FILE_FLAGS. --*/ #ifndef _VENEER #define _VENEER //---------------------------------------------------------------- // // Headers // #include #include "vrheader.h" #include #include #include #ifdef putchar # undef putchar #endif #ifdef puts # undef puts #endif //---------------------------------------------------------------- // // Define common macros.... // //---------------------------------------------------------------- // // IEEE 1275-1994 definitions // typedef long phandle; typedef long ihandle; typedef struct { long hi, lo; long size; } reg; //---------------------------------------------------------------- // // Global definitions and macros // #define MAX_IDE_DEVICE 4 #ifdef BAT_MMU #define CLAIM(BaseAddr, SizeOfImage) \ claim(BaseAddr, SizeOfImage) #else #define CLAIM(BaseAddr, SizeOfImage) \ claimreal(BaseAddr, SizeOfImage) #endif typedef enum { NOALLOC, ALLOC } allocflag; #define new(t) (t *)zalloc(sizeof(t)); #ifdef islower # undef islower #endif #define islower(c) (((c) >= 'a') && ((c) <= 'z')) #ifdef toupper # undef toupper #endif #define toupper(c) (((c) - 'a') + 'A') // // Current version and revision numbers. // These values are in OSLoader specifications (3-49). // #define ARC_VERSION 2 #define ARC_REVISION 0 // // CPU type // typedef enum { PPC_UNKNOWN = 0, PPC_601 = 1, PPC_603 = 3, PPC_604 = 4, PPC_603E = 6, PPC_604E = 9, nPROCESSOR_TYPE } PROCESSOR_TYPE; // // Definitions associated with ARC. // #define SYSTEM_BLOCK_SIGNATURE 0x53435241 #define RSTB_SIGNATURE 0x42545352 // // The current (1/95) PowerPC port requires a "MIPS kseg0"-like // mapping which aliases 0x80000000 to 0x00000000. This macro, // used by claim(), undoes the mapping. // #define MAP(x) ((ULONG)(x) & ~0x80000000) #define UNMAP(x) ((ULONG)(x) | 0x80000000) //---------------------------------------------------------------- // // Veneer data structures and declarations // /* * This data structure is intended to link the components of the ARC * tree with the nodes of the OF tree. */ typedef struct _CONFIGURATION_NODE { phandle OfPhandle; CONFIGURATION_COMPONENT Component; CM_PARTIAL_RESOURCE_LIST *ConfigurationData; struct _CONFIGURATION_NODE *Peer, *Child, *Parent; char *ComponentName; int Wildcard; char *WildcardAddrPath; } CONFIGURATION_NODE, *PCONFIGURATION_NODE; // // Define the vendor specific entry point numbers. // typedef enum _VENDOR_ENTRY { MaximumVendorRoutine } VENDOR_ENTRY; // // Define file table structure. // #define FILE_TABLE_SIZE 32 typedef struct _FILE_FLAGS { ULONG Open : 1; ULONG Read : 1; ULONG Write : 1; ULONG Delete : 1; ULONG Device : 1; ULONG Partition : 1; ULONG DisplayDevice : 1; ULONG RemovableDevice : 1; ULONG NetworkDevice : 1; } FILE_FLAGS, *PFILE_FLAGS; #define MAX_PATH_NAME_SIZE 128 typedef struct _FILE_TABLE_ENTRY { ihandle IHandle; FILE_FLAGS Flags; LARGE_INTEGER Position; PCHAR PathName; LONG ReadAheadCount; CHAR ReadAheadBuffer[2]; } FILE_TABLE_ENTRY, *PFILE_TABLE_ENTRY; extern FILE_TABLE_ENTRY FileTable[]; // // Define the keyboard and mouse id strings. // #define KBD_IDENTIFIER "PCAT_ENHANCED" #define MOUSE_IDENTIFIER "PS2 MOUSE" //---------------------------------------------------------------- // // External/Global variable declarations // extern int VrDebug; extern CONFIGURATION_NODE *RootNode; extern ihandle ConsoleIn, ConsoleOut; extern BOOLEAN use_bat_mapping; //---------------------------------------------------------------- // // Function prototypes // // // Useful macros for pragma message, ie. #pragma message(REVIEW "some text") // #define QUOTE(x) #x #define IQUOTE(x) QUOTE(x) #define REVIEW __FILE__ "(" IQUOTE(__LINE__) ") : REVIEW -> " //---------------------------------------------------------------- // // Debugging definitions and macros // #define STATIC static #define VRDBG_VR 0x00000001 // printout "ARC" interface activity. #define VRDBG_OF 0x00000002 #define VRDBG_TEST 0x00000004 #define VRDBG_TREE 0x00000008 #define VRDBG_MEM 0x00000010 #define VRDBG_MAIN 0x00000020 #define VRDBG_ENTRY 0x00000040 #define VRDBG_PE 0x00000080 #define VRDBG_CONF 0x00000100 #define VRDBG_OPEN 0x00000200 #define VRDBG_CONFIG 0x00000400 #define VRDBG_LOAD 0x00000800 #define VRDBG_RDWR 0x00001000 #define VRDBG_ARGV 0x00002000 #define VRDBG_ENV 0x00004000 // printout environment values and variables #define VRDBG_DUMP 0x00008000 #define VRDBG_HOLDIT 0x00010000 #define SANDALFOOT 0x00020000 //#define CDROMHACK 0x00040000 #define VRDBG_TMP 0x00080000 #define VRDBG_ARCDATA 0x00100000 #define VRDBG_SCSI 0x00200000 // print out scsi node activity #define VRDBG_IDE 0x00400000 // print out ide node activity #define VRDBG_TIME 0x00800000 #define VRDBG_ALL 0xffffffff #define VRASSERT(_exp) \ if (!(_exp)) { \ warn("Assertion Failure: line %d, File %s\n",\ __LINE__, __FILE__); \ warn("Veneer Assertion Failure:" #_exp "\n"); \ ArcHalt();\ } #define DBGSET(_value) ((_value)&(VrDebug)) #define VRDBG(_value, _str) \ { \ if (DBGSET(_value)) { \ _str; \ } \ } #include "proto.h" #endif // _VENEER