aboutsummaryrefslogtreecommitdiff
path: root/arclib/spb.h
blob: fffc20af66e79b7a154d128ae996d3753665bbe5 (plain)
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_ */