2 /** Kernel definitions for PPC **/
4 /* Interrupt request levels */
5 #define PASSIVE_LEVEL 0
8 #define DISPATCH_LEVEL 2
9 #define PROFILE_LEVEL 27
10 #define CLOCK1_LEVEL 28
11 #define CLOCK2_LEVEL 28
13 #define POWER_LEVEL 30
17 // Used to contain PFNs and PFN counts
19 typedef ULONG PFN_COUNT
;
20 typedef ULONG PFN_NUMBER
, *PPFN_NUMBER
;
21 typedef LONG SPFN_NUMBER
, *PSPFN_NUMBER
;
24 typedef struct _KFLOATING_SAVE
{
26 } KFLOATING_SAVE
, *PKFLOATING_SAVE
;
28 typedef struct _KPCR_TIB
{
29 PVOID ExceptionList
; /* 00 */
30 PVOID StackBase
; /* 04 */
31 PVOID StackLimit
; /* 08 */
32 PVOID SubSystemTib
; /* 0C */
33 _ANONYMOUS_UNION
union {
34 PVOID FiberData
; /* 10 */
35 ULONG Version
; /* 10 */
37 PVOID ArbitraryUserPointer
; /* 14 */
38 struct _KPCR_TIB
*Self
; /* 18 */
39 } KPCR_TIB
, *PKPCR_TIB
; /* 1C */
41 #define PCR_MINOR_VERSION 1
42 #define PCR_MAJOR_VERSION 1
44 typedef struct _KPCR
{
45 KPCR_TIB Tib
; /* 00 */
46 struct _KPCR
*Self
; /* 1C */
47 struct _KPRCB
*Prcb
; /* 20 */
50 ULONG IrrActive
; /* 2C */
52 PVOID KdVersionBlock
; /* 34 */
55 struct _KTSS
*TSS
; /* 40 */
56 USHORT MajorVersion
; /* 44 */
57 USHORT MinorVersion
; /* 46 */
58 KAFFINITY SetMember
; /* 48 */
59 ULONG StallScaleFactor
; /* 4C */
60 UCHAR SpareUnused
; /* 50 */
61 UCHAR Number
; /* 51 */
62 } KPCR
, *PKPCR
; /* 54 */
64 #define KeGetPcr() PCR
66 #define YieldProcessor() __asm__ __volatile__("nop");
71 KeGetCurrentProcessorNumber(VOID
)
74 __asm__
__volatile__ (
77 : "i" (FIELD_OFFSET(KPCR
, Number
))
87 #define KeLowerIrql(a) KfLowerIrql(a)
94 #define KeRaiseIrql(a,b) *(b) = KfRaiseIrql(a)
99 KeRaiseIrqlToDpcLevel(VOID
);
104 KeRaiseIrqlToSynchLevel(VOID
);