Kernel: Make Region.cpp compile on aarch64

This commit is contained in:
James Mintram 2022-04-02 23:47:07 +01:00 committed by Brian Gianforcaro
parent a883079b29
commit 627fd231d5
Notes: sideshowbarker 2024-07-17 14:35:46 +09:00
3 changed files with 25 additions and 4 deletions

View file

@ -48,6 +48,16 @@ public:
return 0;
}
ALWAYS_INLINE bool has_nx() const
{
return true;
}
ALWAYS_INLINE bool has_pat() const
{
return false;
}
ALWAYS_INLINE static FlatPtr current_in_irq()
{
return 0;

View file

@ -397,6 +397,16 @@ public:
static void deferred_call_queue(Function<void()> callback);
ALWAYS_INLINE bool has_nx() const
{
return has_feature(CPUFeature::NX);
}
ALWAYS_INLINE bool has_pat() const
{
return has_feature(CPUFeature::PAT);
}
ALWAYS_INLINE bool has_feature(CPUFeature::Type const& feature) const
{
return m_features.has_flag(feature);

View file

@ -6,7 +6,8 @@
#include <AK/Memory.h>
#include <AK/StringView.h>
#include <Kernel/Arch/x86/PageFault.h>
#include <Kernel/Arch/PageDirectory.h>
#include <Kernel/Arch/PageFault.h>
#include <Kernel/Debug.h>
#include <Kernel/FileSystem/Inode.h>
#include <Kernel/Memory/AnonymousVMObject.h>
@ -212,9 +213,9 @@ bool Region::map_individual_page_impl(size_t page_index)
pte->set_writable(false);
else
pte->set_writable(is_writable());
if (Processor::current().has_feature(CPUFeature::NX))
if (Processor::current().has_nx())
pte->set_execute_disabled(!is_executable());
if (Processor::current().has_feature(CPUFeature::PAT))
if (Processor::current().has_pat())
pte->set_pat(is_write_combine());
pte->set_user_allowed(user_allowed);
}
@ -317,7 +318,7 @@ void Region::remap()
ErrorOr<void> Region::set_write_combine(bool enable)
{
if (enable && !Processor::current().has_feature(CPUFeature::PAT)) {
if (enable && !Processor::current().has_pat()) {
dbgln("PAT is not supported, implement MTRR fallback if available");
return Error::from_errno(ENOTSUP);
}