mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 12:17:35 +00:00
Kernel: Implement Page Attribute Table (PAT) support and Write-Combine
This allows us to enable Write-Combine on e.g. framebuffers, significantly improving performance on bare metal. To keep things simple we right now only use one of up to three bits (bit 7 in the PTE), which maps to the PA4 entry in the PAT MSR, which we set to the Write-Combine mode on each CPU at boot time.
This commit is contained in:
parent
1abbe9b02c
commit
6e46e21c42
6 changed files with 40 additions and 0 deletions
|
@ -87,6 +87,9 @@ public:
|
|||
[[nodiscard]] bool is_mmap() const { return m_mmap; }
|
||||
void set_mmap(bool mmap) { m_mmap = mmap; }
|
||||
|
||||
[[nodiscard]] bool is_write_combine() const { return m_write_combine; }
|
||||
ErrorOr<void> set_write_combine(bool);
|
||||
|
||||
[[nodiscard]] bool is_user() const { return !is_kernel(); }
|
||||
[[nodiscard]] bool is_kernel() const { return vaddr().get() < USER_RANGE_BASE || vaddr().get() >= kernel_mapping_base; }
|
||||
|
||||
|
@ -220,6 +223,7 @@ private:
|
|||
bool m_stack : 1 { false };
|
||||
bool m_mmap : 1 { false };
|
||||
bool m_syscall_region : 1 { false };
|
||||
bool m_write_combine : 1 { false };
|
||||
|
||||
IntrusiveRedBlackTreeNode<FlatPtr, Region, RawPtr<Region>> m_tree_node;
|
||||
IntrusiveListNode<Region> m_vmobject_list_node;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue