Implement PCD (page cache disable) paging bit
This commit is contained in:
@@ -4,6 +4,7 @@
|
|||||||
#define MAP_PRESENT (1 << 0)
|
#define MAP_PRESENT (1 << 0)
|
||||||
#define MAP_RW (1 << 1)
|
#define MAP_RW (1 << 1)
|
||||||
#define MAP_USER (1 << 2)
|
#define MAP_USER (1 << 2)
|
||||||
|
#define MAP_NOCACHE (1 << 3)
|
||||||
#define MAP_FLAGS (MAP_PRESENT | MAP_USER)
|
#define MAP_FLAGS (MAP_PRESENT | MAP_USER)
|
||||||
|
|
||||||
#endif // _MAP_H
|
#endif // _MAP_H
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
#define AMD64_PG_PRESENT (1 << 0)
|
#define AMD64_PG_PRESENT (1 << 0)
|
||||||
#define AMD64_PG_RW (1 << 1)
|
#define AMD64_PG_RW (1 << 1)
|
||||||
#define AMD64_PG_USER (1 << 2)
|
#define AMD64_PG_USER (1 << 2)
|
||||||
|
#define AMD64_PG_PCD (1 << 4)
|
||||||
#define AMD64_PG_HUGE (1 << 7)
|
#define AMD64_PG_HUGE (1 << 7)
|
||||||
|
|
||||||
/* Auxilary struct for page directory walking */
|
/* Auxilary struct for page directory walking */
|
||||||
@@ -97,6 +98,7 @@ static uint64_t mm_resolve_flags (uint32_t generic) {
|
|||||||
flags |= ((generic & MM_PG_PRESENT) ? AMD64_PG_PRESENT : 0);
|
flags |= ((generic & MM_PG_PRESENT) ? AMD64_PG_PRESENT : 0);
|
||||||
flags |= ((generic & MM_PG_RW) ? AMD64_PG_RW : 0);
|
flags |= ((generic & MM_PG_RW) ? AMD64_PG_RW : 0);
|
||||||
flags |= ((generic & MM_PG_USER) ? AMD64_PG_USER : 0);
|
flags |= ((generic & MM_PG_USER) ? AMD64_PG_USER : 0);
|
||||||
|
flags |= ((generic & MM_PG_NOCACHE ? AMD64_PG_PCD : 0));
|
||||||
|
|
||||||
return flags;
|
return flags;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#define MM_PG_PRESENT (1 << 0)
|
#define MM_PG_PRESENT (1 << 0)
|
||||||
#define MM_PG_RW (1 << 1)
|
#define MM_PG_RW (1 << 1)
|
||||||
#define MM_PG_USER (1 << 2)
|
#define MM_PG_USER (1 << 2)
|
||||||
|
#define MM_PG_NOCACHE (1 << 3)
|
||||||
|
|
||||||
uintptr_t mm_alloc_user_pd_phys (void);
|
uintptr_t mm_alloc_user_pd_phys (void);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user