فهرست منبع

Kernel: Make Region.cpp compile on aarch64

James Mintram 3 سال پیش
والد
کامیت
627fd231d5
3فایلهای تغییر یافته به همراه25 افزوده شده و 4 حذف شده
  1. 10 0
      Kernel/Arch/aarch64/Processor.h
  2. 10 0
      Kernel/Arch/x86/Processor.h
  3. 5 4
      Kernel/Memory/Region.cpp

+ 10 - 0
Kernel/Arch/aarch64/Processor.h

@@ -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;

+ 10 - 0
Kernel/Arch/x86/Processor.h

@@ -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);

+ 5 - 4
Kernel/Memory/Region.cpp

@@ -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);
     }