1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/*
* Copyright 1999, 2001 Silicon Graphics, Inc.
* Copyright 2001 Ralf Baechle
*/
#ifndef _SPB_H_
#define _SPB_H_
#include "types.h"
#include "arc.h"
typedef struct {
LONG(*Load) (CHAR *, ULONG, ULONG *, ULONG *);
LONG(*Invoke) (ULONG, ULONG, ULONG, CHAR *[], CHAR *[]);
LONG(*Execute) (CHAR *, ULONG, CHAR *[], CHAR *[]);
VOID(*Halt) (VOID);
VOID(*PowerDown) (VOID);
VOID(*Restart) (VOID);
VOID(*Reboot) (VOID);
VOID(*EnterInteractiveMode) (VOID);
VOID *reserved1;
COMPONENT *(*GetPeer) (COMPONENT *);
COMPONENT *(*GetChild) (COMPONENT *);
COMPONENT *(*GetParent) (COMPONENT *);
LONG(*GetConfigurationData) (VOID *, COMPONENT *);
COMPONENT *(*AddChild) (COMPONENT *, COMPONENT *, VOID *);
LONG(*DeleteComponent) (COMPONENT *);
COMPONENT *(*GetComponent) (CHAR *);
LONG(*SaveConfiguration) (VOID);
SYSTEMID *(*GetSystemId) (VOID);
MEMORYDESCRIPTOR *(*GetMemoryDescriptor) (MEMORYDESCRIPTOR *);
VOID *reserved2;
TIMEINFO *(*GetTime) (VOID);
ULONG(*GetRelativeTime) (VOID);
LONG(*GetDirectoryEntry) (ULONG, DIRECTORYENTRY *, ULONG, ULONG *);
LONG(*Open) (CHAR *, OPENMODE, ULONG *);
LONG(*Close) (ULONG);
LONG(*Read) (ULONG, VOID *, ULONG, ULONG *);
LONG(*GetReadStatus) (ULONG);
LONG(*Write) (ULONG, VOID *, ULONG, ULONG *);
LONG(*Seek) (ULONG, LARGEINTEGER *, SEEKMODE);
LONG(*Mount) (CHAR *, MOUNTOPERATION);
CHAR *(*GetEnvironmentVariable) (CHAR *);
LONG(*SetEnvironmentVariable) (CHAR *, CHAR *);
LONG(*GetFileInformation) (ULONG, FILEINFORMATION *);
LONG(*SetFileInformation) (ULONG, ULONG, ULONG);
VOID(*FlushAllCaches) (VOID);
LONG(*TestUnicodeCharacter) (ULONG, USHORT);
DISPLAY_STATUS *(*GetDisplayStatus) (ULONG);
} FIRMWAREVECTOR;
#define RSTB_SIGNATURE 0x42545352
typedef struct _rstb {
ULONG RSTBSignature;
ULONG RSTBLength;
USHORT Version;
USHORT Revision;
struct _rstb *NextRSTB;
VOID *RestartAddress;
ULONG BootMasterID;
ULONG ProcessorID;
ULONG BootStatus;
ULONG Checksum;
ULONG SaveAreaLength;
ULONG SavedStateArea[1];
} RESTARTBLOCK;
typedef struct {
ULONG AdapterType;
ULONG AdapterVectorLength;
VOID *AdapterVector;
} ADAPTER;
#define SPB_SIGNATURE 0x53435241
typedef struct {
ULONG SPBSignature;
ULONG SPBLength;
USHORT Version;
USHORT Revision;
RESTARTBLOCK *RestartBlock;
VOID *DebugBlock;
VOID *GEVector;
VOID *UTLBMissVector;
ULONG FirmwareVectorLength;
FIRMWAREVECTOR *FirmwareVector;
ULONG PrivateVectorLength;
VOID *PrivateVector;
ULONG AdapterCount;
ADAPTER Adapters[1];
} SPB;
#define SystemParameterBlock ((SPB *) 0xA0001000UL)
#define FVector (SystemParameterBlock->FirmwareVector)
#endif /* _SPB_H_ */
|