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.
144 lines
4.7 KiB
144 lines
4.7 KiB
#ifndef _EXTS_PSR_H_
|
|
#define _EXTS_PSR_H_
|
|
|
|
/*++
|
|
|
|
Copyright (c) 1999 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
ia64.h
|
|
|
|
Abstract:
|
|
|
|
This file contains definitions which are specifice to ia64 platforms
|
|
|
|
|
|
Author:
|
|
|
|
Kshitiz K. Sharma (kksharma)
|
|
|
|
Environment:
|
|
|
|
User Mode.
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/////////////////////////////////////////////
|
|
//
|
|
// Generic EM Registers definitions
|
|
//
|
|
/////////////////////////////////////////////
|
|
|
|
typedef unsigned __int64 EM_REG;
|
|
typedef EM_REG *PEM_REG;
|
|
#define EM_REG_BITS (sizeof(EM_REG) * 8)
|
|
|
|
__inline EM_REG
|
|
ULong64ToEMREG(
|
|
IN ULONG64 Val
|
|
)
|
|
{
|
|
return (*((PEM_REG)&Val));
|
|
} // ULong64ToEMREG()
|
|
|
|
__inline ULONG64
|
|
EMREGToULong64(
|
|
IN EM_REG EmReg
|
|
)
|
|
{
|
|
return (*((PULONG64)&EmReg));
|
|
} // EMRegToULong64()
|
|
|
|
#define DEFINE_ULONG64_TO_EMREG(_EM_REG_TYPE) \
|
|
__inline _EM_REG_TYPE \
|
|
ULong64To##_EM_REG_TYPE( \
|
|
IN ULONG64 Val \
|
|
) \
|
|
{ \
|
|
return (*((P##_EM_REG_TYPE)&Val)); \
|
|
} // ULong64To##_EM_REG_TYPE()
|
|
|
|
#define DEFINE_EMREG_TO_ULONG64(_EM_REG_TYPE) \
|
|
__inline ULONG64 \
|
|
_EM_REG_TYPE##ToULong64( \
|
|
IN _EM_REG_TYPE EmReg \
|
|
) \
|
|
{ \
|
|
return (*((PULONG64)&EmReg)); \
|
|
} // _EM_REG_TYPE##ToULong64()
|
|
|
|
typedef struct _EM_PSR {
|
|
unsigned __int64 reserved0:1; // 0 : reserved
|
|
unsigned __int64 be:1; // 1 : Big-Endian
|
|
unsigned __int64 up:1; // 2 : User Performance monitor enable
|
|
unsigned __int64 ac:1; // 3 : Alignment Check
|
|
unsigned __int64 mfl:1; // 4 : Lower (f2 .. f31) floating-point registers written
|
|
unsigned __int64 mfh:1; // 5 : Upper (f32 .. f127) floating-point registers written
|
|
unsigned __int64 reserved1:7; // 6-12 : reserved
|
|
unsigned __int64 ic:1; // 13 : Interruption Collection
|
|
unsigned __int64 i:1; // 14 : Interrupt Bit
|
|
unsigned __int64 pk:1; // 15 : Protection Key enable
|
|
unsigned __int64 reserved2:1; // 16 : reserved
|
|
unsigned __int64 dt:1; // 17 : Data Address Translation
|
|
unsigned __int64 dfl:1; // 18 : Disabled Floating-point Low register set
|
|
unsigned __int64 dfh:1; // 19 : Disabled Floating-point High register set
|
|
unsigned __int64 sp:1; // 20 : Secure Performance monitors
|
|
unsigned __int64 pp:1; // 21 : Privileged Performance monitor enable
|
|
unsigned __int64 di:1; // 22 : Disable Instruction set transition
|
|
unsigned __int64 si:1; // 23 : Secure Interval timer
|
|
unsigned __int64 db:1; // 24 : Debug Breakpoint fault
|
|
unsigned __int64 lp:1; // 25 : Lower Privilege transfer trap
|
|
unsigned __int64 tb:1; // 26 : Taken Branch trap
|
|
unsigned __int64 rt:1; // 27 : Register stack translation
|
|
unsigned __int64 reserved3:4; // 28-31 : reserved
|
|
unsigned __int64 cpl:2; // 32;33 : Current Privilege Level
|
|
unsigned __int64 is:1; // 34 : Instruction Set
|
|
unsigned __int64 mc:1; // 35 : Machine Abort Mask
|
|
unsigned __int64 it:1; // 36 : Instruction address Translation
|
|
unsigned __int64 id:1; // 37 : Instruction Debug fault disable
|
|
unsigned __int64 da:1; // 38 : Disable Data Access and Dirty-bit faults
|
|
unsigned __int64 dd:1; // 39 : Data Debug fault disable
|
|
unsigned __int64 ss:1; // 40 : Single Step enable
|
|
unsigned __int64 ri:2; // 41;42 : Restart Instruction
|
|
unsigned __int64 ed:1; // 43 : Exception Deferral
|
|
unsigned __int64 bn:1; // 44 : register Bank
|
|
unsigned __int64 ia:1; // 45 : Disable Instruction Access-bit faults
|
|
unsigned __int64 reserved4:18; // 46-63 : reserved
|
|
} EM_PSR, *PEM_PSR;
|
|
|
|
typedef EM_PSR EM_IPSR;
|
|
typedef EM_IPSR *PEM_IPSR;
|
|
|
|
DEFINE_ULONG64_TO_EMREG(EM_PSR)
|
|
|
|
DEFINE_EMREG_TO_ULONG64(EM_PSR)
|
|
|
|
typedef enum _DISPLAY_MODE {
|
|
DISPLAY_MIN = 0,
|
|
DISPLAY_DEFAULT = DISPLAY_MIN,
|
|
DISPLAY_MED = 1,
|
|
DISPLAY_MAX = 2,
|
|
DISPLAY_FULL = DISPLAY_MAX
|
|
} DISPLAY_MODE;
|
|
|
|
|
|
typedef struct _EM_REG_FIELD {
|
|
const char *SubName;
|
|
const char *Name;
|
|
unsigned long Length;
|
|
unsigned long Shift;
|
|
} EM_REG_FIELD, *PEM_REG_FIELD;
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|