diff --git a/hermit/arch/x86/include/asm/page.h b/hermit/arch/x86/include/asm/page.h index 1c55f633d..176eda5de 100644 --- a/hermit/arch/x86/include/asm/page.h +++ b/hermit/arch/x86/include/asm/page.h @@ -120,8 +120,16 @@ static inline size_t sign_extend(ssize_t addr, int bits) #define PG_PSE (1 << 7) /// Page attribute table #define PG_PAT PG_PSE -/// Global TLB entry (Pentium Pro and later) +#if 1 +/* @brief Global TLB entry (Pentium Pro and later) + * + * HermitCore is a single-address space operating system + * => CR3 never changed => The flag isn't required for HermitCore + */ +#define PG_GLOBAL 0 +#else #define PG_GLOBAL (1 << 8) +#endif /// This table is a self-reference and should skipped by page_map_copy() #define PG_SELF (1 << 9) diff --git a/hermit/arch/x86/kernel/entry.asm b/hermit/arch/x86/kernel/entry.asm index 0712eded1..aa19e351c 100644 --- a/hermit/arch/x86/kernel/entry.asm +++ b/hermit/arch/x86/kernel/entry.asm @@ -160,10 +160,10 @@ start64: ; remap kernel mov rdi, kernel_start - shr rdi, 18 ; (edi >> 21) * 8 (index for boot_pgd) + shr rdi, 18 ; (edi >> 21) * 8 (index for boot_pgd) add rdi, boot_pgd mov rax, [base] - or rax, 0x183 + or rax, 0x83 ; PG_GLOBAL isn't required because HermitCore is a single-address space OS xor rcx, rcx Lremap: mov QWORD [rdi], rax