aboutsummaryrefslogtreecommitdiff
path: root/arclib/spb.h
diff options
context:
space:
mode:
Diffstat (limited to 'arclib/spb.h')
-rw-r--r--arclib/spb.h96
1 files changed, 96 insertions, 0 deletions
diff --git a/arclib/spb.h b/arclib/spb.h
new file mode 100644
index 0000000..fffc20a
--- /dev/null
+++ b/arclib/spb.h
@@ -0,0 +1,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_ */