mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:07:35 +00:00
Kernel/aarch64: Implement tlb flushing
This initial implementation flushes the complete tlb cache. A FIXME is added to implement the partial tlb flushing.
This commit is contained in:
parent
424a974e01
commit
57901a6f62
2 changed files with 11 additions and 5 deletions
|
@ -41,7 +41,16 @@ void Processor::initialize(u32 cpu)
|
||||||
|
|
||||||
void Processor::flush_tlb_local(VirtualAddress, size_t)
|
void Processor::flush_tlb_local(VirtualAddress, size_t)
|
||||||
{
|
{
|
||||||
// FIXME: Implement this
|
// FIXME: Figure out how to flush a single page
|
||||||
|
asm volatile("dsb ishst");
|
||||||
|
asm volatile("tlbi vmalle1is");
|
||||||
|
asm volatile("dsb ish");
|
||||||
|
asm volatile("isb");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Processor::flush_tlb(Memory::PageDirectory const*, VirtualAddress vaddr, size_t page_count)
|
||||||
|
{
|
||||||
|
flush_tlb_local(vaddr, page_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,10 +77,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
static void flush_tlb_local(VirtualAddress vaddr, size_t page_count);
|
static void flush_tlb_local(VirtualAddress vaddr, size_t page_count);
|
||||||
ALWAYS_INLINE static void flush_tlb(Memory::PageDirectory const*, VirtualAddress const&, size_t)
|
static void flush_tlb(Memory::PageDirectory const*, VirtualAddress, size_t);
|
||||||
{
|
|
||||||
VERIFY_NOT_REACHED();
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: When aarch64 supports multiple cores, return the correct core id here.
|
// FIXME: When aarch64 supports multiple cores, return the correct core id here.
|
||||||
ALWAYS_INLINE static u32 current_id()
|
ALWAYS_INLINE static u32 current_id()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue