Kernel: remove PAGE_FLAGS_MASK as that was not correct anymore
After I added NXE bit, the flags mask is no longer valid
This commit is contained in:
parent
46eb27883a
commit
193ddaa2f6
|
@ -44,6 +44,11 @@ namespace Kernel
|
|||
return addr;
|
||||
}
|
||||
|
||||
static inline PageTable::flags_t parse_flags(uint64_t entry)
|
||||
{
|
||||
return (s_has_nxe && !(entry & (1ull << 63)) ? PageTable::Flags::Execute : 0) | (entry & 0b111);
|
||||
}
|
||||
|
||||
void PageTable::initialize()
|
||||
{
|
||||
if (CPUID::has_nxe())
|
||||
|
@ -342,8 +347,7 @@ namespace Kernel
|
|||
|
||||
PageTable::flags_t PageTable::get_page_flags(vaddr_t addr) const
|
||||
{
|
||||
uint64_t page_data = get_page_data(addr);
|
||||
return (page_data & (1ull << 63) ? Flags::Execute : 0) | (page_data & PAGE_FLAG_MASK);
|
||||
return parse_flags(get_page_data(addr));
|
||||
}
|
||||
|
||||
paddr_t PageTable::physical_address_of(vaddr_t addr) const
|
||||
|
@ -463,9 +467,10 @@ namespace Kernel
|
|||
{
|
||||
if (start == 0)
|
||||
return;
|
||||
dprintln("{}-{}: {}{}{}",
|
||||
dprintln("{}-{}: {}{}{}{}",
|
||||
(void*)canonicalize(start),
|
||||
(void*)canonicalize(end - 1),
|
||||
flags & PageTable::Flags::Execute ? 'x' : '-',
|
||||
flags & PageTable::Flags::UserSupervisor ? 'u' : '-',
|
||||
flags & PageTable::Flags::ReadWrite ? 'w' : '-',
|
||||
flags & PageTable::Flags::Present ? 'r' : '-'
|
||||
|
@ -509,7 +514,7 @@ namespace Kernel
|
|||
uint64_t* pt = (uint64_t*)P2V(pd[pde] & PAGE_ADDR_MASK);
|
||||
for (uint64_t pte = 0; pte < 512; pte++)
|
||||
{
|
||||
if ((pt[pte] & PAGE_FLAG_MASK) != flags)
|
||||
if (parse_flags(pt[pte]) != flags)
|
||||
{
|
||||
dump_range(start, (pml4e << 39) | (pdpte << 30) | (pde << 21) | (pte << 12), flags);
|
||||
start = 0;
|
||||
|
@ -520,7 +525,7 @@ namespace Kernel
|
|||
|
||||
if (start == 0)
|
||||
{
|
||||
flags = pt[pte] & PAGE_FLAG_MASK;
|
||||
flags = parse_flags(pt[pte]);
|
||||
start = (pml4e << 39) | (pdpte << 30) | (pde << 21) | (pte << 12);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#endif
|
||||
|
||||
#define PAGE_SIZE ((uintptr_t)4096)
|
||||
#define PAGE_FLAG_MASK ((uintptr_t)0xF)
|
||||
#define PAGE_ADDR_MASK (~(uintptr_t)0xFFF)
|
||||
|
||||
namespace Kernel
|
||||
|
|
Loading…
Reference in New Issue