- Changed all internal memory functions to use the page frame number instead of the physical address.

- Allowed MmCreateVirtualMapping to create mappings for more than one page.
- Used invplg to invalidate a single tlb entry.
- Simplified the access to the page tables/directories.

svn path=/trunk/; revision=10332
This commit is contained in:
Hartmut Birr
2004-08-01 07:27:25 +00:00
parent fd411381da
commit b36f5c8459
2 changed files with 287 additions and 473 deletions
+7 -2
View File
@@ -24,9 +24,7 @@ struct _EPROCESS;
#define PA_SYSTEM (0)
#endif
// #define PAGE_SIZE (4096)
PULONG MmGetPageEntry(PVOID Address);
#define KERNEL_BASE (0xc0000000)
@@ -41,6 +39,13 @@ PULONG MmGetPageEntry(PVOID Address);
:: "memory"); \
}
#define FLUSH_TLB_ONE(addr) __asm__ __volatile__( \
"invlpg %0" \
: \
: "m" (*(volatile long *) (addr)))
#elif defined(_MSC_VER)
/* TODO: Need some way to tell the compiler this is a memory barrier. */
#define FLUSH_TLB __asm mov eax, cr3 __asm mov cr3, eax;
File diff suppressed because it is too large Load Diff