diff --git a/sdk/xtdk/amd64/mmtypes.h b/sdk/xtdk/amd64/mmtypes.h index 1fbed1b..e1c15e4 100644 --- a/sdk/xtdk/amd64/mmtypes.h +++ b/sdk/xtdk/amd64/mmtypes.h @@ -12,6 +12,11 @@ #include +/* Pages related definitions */ +#define MM_PAGE_MASK 0xFFF +#define MM_PAGE_SHIFT 12 +#define MM_PAGE_SIZE 4096 + /* Page Table entry structure definition */ typedef struct _HARDWARE_PTE { diff --git a/sdk/xtdk/i686/mmtypes.h b/sdk/xtdk/i686/mmtypes.h index 37acabb..cb9db8f 100644 --- a/sdk/xtdk/i686/mmtypes.h +++ b/sdk/xtdk/i686/mmtypes.h @@ -12,6 +12,11 @@ #include +/* Pages related definitions */ +#define MM_PAGE_MASK 0xFFF +#define MM_PAGE_SHIFT 12 +#define MM_PAGE_SIZE 4096 + /* Page Table entry structure definition (with PAE support) */ typedef struct _HARDWARE_PTE { diff --git a/sdk/xtdk/xtdefs.h b/sdk/xtdk/xtdefs.h index 90880cb..1559748 100644 --- a/sdk/xtdk/xtdefs.h +++ b/sdk/xtdk/xtdefs.h @@ -52,8 +52,14 @@ /* Macro that yields field type in the structure */ #define FIELD_TYPE(Structure, Field) (((Structure*)0)->Field) +/* Macro that page-aligns a virtual address */ +#define PAGE_ALIGN(VirtualAddress) ((PVOID)((ULONG_PTR)VirtualAddress & ~MM_PAGE_MASK)) + +/* Macro that returns offset of the virtual address */ +#define PAGE_OFFSET(VirtualAddress) ((ULONG)((ULONG_PTR)VirtualAddress & MM_PAGE_MASK)) + /* Macro for rounding down */ -#define ROUND_DOWN(X, Alignment) ((X) & ~((Alignment) - 1l)) +#define ROUND_DOWN(X, Alignment) ((X) & ~((Alignment) - 1)) /* Macro for rounding up */ #define ROUND_UP(X, Alignment) ROUND_DOWN((X) + (Alignment - 1), Alignment) @@ -63,6 +69,9 @@ #define SIGNATURE32(A, B, C, D) (SIGNATURE16(A, B) | (SIGNATURE16(C, D) << 16)) #define SIGNATURE64(A, B, C, D, E, F, G, H) (SIGNATURE32(A, B, C, D) | ((UINT64)(SIGNATURE32(E, F, G, H)) << 32)) +/* XT size to pages conversion macro */ +#define SIZE_TO_PAGES(Size) (((Size) >> MM_PAGE_SHIFT) + (((Size) & (MM_PAGE_MASK)) ? 1 : 0)) + /* Variadic ABI functions */ typedef __builtin_va_list VA_LIST; #define VA_ARG(Marker, Type) ((sizeof (Type) < sizeof(UINT_PTR)) ? \