mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
287 lines
6.0 KiB
287 lines
6.0 KiB
/*++
|
|
*
|
|
* 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 <windef.h>
|
|
#include "vrheader.h"
|
|
#include <arc.h>
|
|
#include <arccodes.h>
|
|
#include <stdarg.h>
|
|
|
|
#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
|