moved everything to chookspace
This commit is contained in:
264
gnu-efi/inc/ia64/salproc.h
Normal file
264
gnu-efi/inc/ia64/salproc.h
Normal file
@@ -0,0 +1,264 @@
|
||||
#ifndef _SAL_PROC_H
|
||||
#define _SAL_PROC_H
|
||||
//
|
||||
//
|
||||
//Copyright (c) 1999 Intel Corporation
|
||||
//
|
||||
//Module Name:
|
||||
//
|
||||
// SalProc.h
|
||||
//
|
||||
//Abstract:
|
||||
//
|
||||
// Main SAL interface routins for IA-64 calls.
|
||||
//
|
||||
//
|
||||
//Revision History
|
||||
//
|
||||
//
|
||||
|
||||
// return value that mimicks r8,r9,r10 & r11 registers
|
||||
typedef struct {
|
||||
UINT64 p0;
|
||||
UINT64 p1;
|
||||
UINT64 p2;
|
||||
UINT64 p3;
|
||||
} rArg;
|
||||
|
||||
#define SAL_PCI_CONFIG_READ 0x01000010
|
||||
#define SAL_PCI_CONFIG_WRITE 0x01000011
|
||||
|
||||
typedef VOID (*PFN)();
|
||||
typedef rArg (*PFN_SAL_PROC)(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64);
|
||||
typedef rArg (*PFN_SAL_CALLBACK)(UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64,UINT64);
|
||||
|
||||
typedef struct _PLABEL {
|
||||
UINT64 ProcEntryPoint;
|
||||
UINT64 GP;
|
||||
} PLABEL;
|
||||
|
||||
typedef struct tagIA32_BIOS_REGISTER_STATE {
|
||||
|
||||
// general registers
|
||||
UINT32 eax;
|
||||
UINT32 ecx;
|
||||
UINT32 edx;
|
||||
UINT32 ebx;
|
||||
|
||||
// stack registers
|
||||
UINT32 esp;
|
||||
UINT32 ebp;
|
||||
UINT32 esi;
|
||||
UINT32 edi;
|
||||
|
||||
// eflags
|
||||
UINT32 eflags;
|
||||
|
||||
// instruction pointer
|
||||
UINT32 eip;
|
||||
|
||||
UINT16 cs;
|
||||
UINT16 ds;
|
||||
UINT16 es;
|
||||
UINT16 fs;
|
||||
UINT16 gs;
|
||||
UINT16 ss;
|
||||
|
||||
// Reserved
|
||||
UINT32 Reserved1;
|
||||
UINT64 Reserved2;
|
||||
} IA32_BIOS_REGISTER_STATE;
|
||||
|
||||
VOID EFIInitMsg(VOID);
|
||||
|
||||
EFI_STATUS
|
||||
PlRegisterAndStartTimer(
|
||||
IN UINTN Period
|
||||
);
|
||||
|
||||
EFI_STATUS
|
||||
PlDeRegisterAndCancelTimer(VOID);
|
||||
|
||||
VOID
|
||||
SalProc (
|
||||
IN UINT64 Arg1,
|
||||
IN UINT64 Arg2,
|
||||
IN UINT64 Arg3,
|
||||
IN UINT64 Arg4,
|
||||
IN UINT64 Arg5,
|
||||
IN UINT64 Arg6,
|
||||
IN UINT64 Arg7,
|
||||
IN UINT64 Arg8,
|
||||
OUT rArg *Results OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
SalCallBack (
|
||||
IN UINT64 Arg1,
|
||||
IN UINT64 Arg2,
|
||||
IN UINT64 Arg3,
|
||||
IN UINT64 Arg4,
|
||||
IN UINT64 Arg5,
|
||||
IN UINT64 Arg6,
|
||||
IN UINT64 Arg7,
|
||||
IN UINT64 Arg8,
|
||||
OUT rArg *Results OPTIONAL
|
||||
);
|
||||
|
||||
VOID
|
||||
RUNTIMEFUNCTION
|
||||
RtSalCallBack (
|
||||
IN UINT64 Arg1,
|
||||
IN UINT64 Arg2,
|
||||
IN UINT64 Arg3,
|
||||
IN UINT64 Arg4,
|
||||
IN UINT64 Arg5,
|
||||
IN UINT64 Arg6,
|
||||
IN UINT64 Arg7,
|
||||
IN UINT64 Arg8,
|
||||
OUT rArg *Results OPTIONAL
|
||||
);
|
||||
|
||||
|
||||
extern PLABEL RtGlobalSalProcEntry;
|
||||
extern PLABEL RtGlobalSALCallBack;
|
||||
|
||||
#pragma pack(1)
|
||||
//
|
||||
// SAL System Table
|
||||
//
|
||||
typedef struct {
|
||||
UINT32 Signature;
|
||||
UINT32 Length;
|
||||
UINT16 Revision;
|
||||
UINT16 EntryCount;
|
||||
UINT8 CheckSum;
|
||||
UINT8 Reserved[7];
|
||||
UINT16 SALA_Ver;
|
||||
UINT16 SALB_Ver;
|
||||
UINT8 OemId[32];
|
||||
UINT8 ProductID[32];
|
||||
UINT8 Reserved2[8];
|
||||
} SAL_SYSTEM_TABLE_HDR;
|
||||
|
||||
#define SAL_ST_ENTRY_POINT 0
|
||||
#define SAL_ST_MEMORY_DESCRIPTOR 1
|
||||
#define SAL_ST_PLATFORM_FEATURES 2
|
||||
#define SAL_ST_TR_USAGE 3
|
||||
#define SAL_ST_PTC 4
|
||||
#define SAL_ST_AP_WAKEUP 5
|
||||
|
||||
typedef struct {
|
||||
UINT8 Type; // Type == 0
|
||||
UINT8 Reserved[7];
|
||||
UINT64 PalProcEntry;
|
||||
UINT64 SalProcEntry;
|
||||
UINT64 GlobalDataPointer;
|
||||
UINT64 Reserved2[2];
|
||||
} SAL_ST_ENTRY_POINT_DESCRIPTOR;
|
||||
|
||||
typedef struct {
|
||||
UINT8 Type; // Type == 1
|
||||
UINT8 NeedVirtualRegistration;
|
||||
UINT8 MemoryAttributes;
|
||||
UINT8 PageAccessRights;
|
||||
UINT8 SupportedAttributes;
|
||||
UINT8 Reserved;
|
||||
UINT16 MemoryType;
|
||||
UINT64 PhysicalMemoryAddress;
|
||||
UINT32 Length;
|
||||
UINT32 Reserved1;
|
||||
UINT64 OemReserved;
|
||||
} SAL_ST_MEMORY_DESCRIPTOR_ENTRY;
|
||||
|
||||
//
|
||||
// MemoryType info
|
||||
//
|
||||
#define SAL_SAPIC_IPI_BLOCK 0x0002
|
||||
#define SAL_IO_PORT_MAPPING 0x0003
|
||||
|
||||
typedef struct {
|
||||
UINT8 Type; // Type == 2
|
||||
UINT8 PlatformFeatures;
|
||||
UINT8 Reserved[14];
|
||||
} SAL_ST_MEMORY_DECRIPTOR;
|
||||
|
||||
typedef struct {
|
||||
UINT8 Type; // Type == 3
|
||||
UINT8 TRType;
|
||||
UINT8 TRNumber;
|
||||
UINT8 Reserved[5];
|
||||
UINT64 VirtualAddress;
|
||||
UINT64 EncodedPageSize;
|
||||
UINT64 Reserved1;
|
||||
} SAL_ST_TR_DECRIPTOR;
|
||||
|
||||
typedef struct {
|
||||
UINT64 NumberOfProcessors;
|
||||
UINT64 LocalIDRegister;
|
||||
} SAL_COHERENCE_DOMAIN_INFO;
|
||||
|
||||
typedef struct {
|
||||
UINT8 Type; // Type == 4
|
||||
UINT8 Reserved[3];
|
||||
UINT32 NumberOfDomains;
|
||||
SAL_COHERENCE_DOMAIN_INFO *DomainInformation;
|
||||
} SAL_ST_CACHE_COHERENCE_DECRIPTOR;
|
||||
|
||||
typedef struct {
|
||||
UINT8 Type; // Type == 5
|
||||
UINT8 WakeUpType;
|
||||
UINT8 Reserved[6];
|
||||
UINT64 ExternalInterruptVector;
|
||||
} SAL_ST_AP_WAKEUP_DECRIPTOR;
|
||||
|
||||
typedef struct {
|
||||
SAL_SYSTEM_TABLE_HDR Header;
|
||||
SAL_ST_ENTRY_POINT_DESCRIPTOR Entry0;
|
||||
} SAL_SYSTEM_TABLE_ASCENDING_ORDER;
|
||||
|
||||
#define FIT_ENTRY_PTR (0x100000000 - 32) // 4GB - 24
|
||||
#define FIT_PALA_ENTRY (0x100000000 - 48) // 4GB - 32
|
||||
#define FIT_PALB_TYPE 01
|
||||
|
||||
typedef struct {
|
||||
UINT64 Address;
|
||||
UINT8 Size[3];
|
||||
UINT8 Reserved;
|
||||
UINT16 Revision;
|
||||
UINT8 Type:7;
|
||||
UINT8 CheckSumValid:1;
|
||||
UINT8 CheckSum;
|
||||
} FIT_ENTRY;
|
||||
|
||||
#pragma pack()
|
||||
|
||||
typedef
|
||||
rArg
|
||||
(*CALL_SAL_PROC)(
|
||||
IN UINT64 Arg1,
|
||||
IN UINT64 Arg2,
|
||||
IN UINT64 Arg3,
|
||||
IN UINT64 Arg4,
|
||||
IN UINT64 Arg5,
|
||||
IN UINT64 Arg6,
|
||||
IN UINT64 Arg7,
|
||||
IN UINT64 Arg8
|
||||
);
|
||||
|
||||
typedef
|
||||
rArg
|
||||
(*CALL_PAL_PROC)(
|
||||
IN UINT64 Arg1,
|
||||
IN UINT64 Arg2,
|
||||
IN UINT64 Arg3,
|
||||
IN UINT64 Arg4
|
||||
);
|
||||
|
||||
extern CALL_SAL_PROC GlobalSalProc;
|
||||
extern CALL_PAL_PROC GlobalPalProc;
|
||||
extern PLABEL SalProcPlabel;
|
||||
extern PLABEL PalProcPlabel;
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user