Convert part of grub_vbe_enable_mtrr () in video/i386/pc/vbe.c to an
inline function in grub/i386/cpuid.h to enable its reuse.

Signed-off-by: Sergii Dmytruk <sergii.dmyt...@3mdeb.com>
---
 grub-core/video/i386/pc/vbe.c | 11 +----------
 include/grub/i386/cpuid.h     | 14 ++++++++++++++
 2 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/grub-core/video/i386/pc/vbe.c b/grub-core/video/i386/pc/vbe.c
index a0bb9af09..70952009f 100644
--- a/grub-core/video/i386/pc/vbe.c
+++ b/grub-core/video/i386/pc/vbe.c
@@ -93,7 +93,6 @@ grub_vbe_enable_mtrr (grub_uint8_t *base, grub_size_t size)
   grub_uint32_t features;
   grub_uint32_t mtrrcap;
   int var_mtrrs;
-  grub_uint32_t max_extended_cpuid;
   grub_uint32_t maxphyaddr;
   grub_uint64_t fb_base, fb_size;
   grub_uint64_t size_bits, fb_mask;
@@ -142,15 +141,7 @@ grub_vbe_enable_mtrr (grub_uint8_t *base, grub_size_t size)
     return;
   var_mtrrs = (mtrrcap & 0xFF);
 
-  grub_cpuid (0x80000000, eax, ebx, ecx, edx);
-  max_extended_cpuid = eax;
-  if (max_extended_cpuid >= 0x80000008)
-    {
-      grub_cpuid (0x80000008, eax, ebx, ecx, edx);
-      maxphyaddr = (eax & 0xFF);
-    }
-  else
-    maxphyaddr = 36;
+  maxphyaddr = grub_get_max_phy_addr_bits ();
   bits_lo = 0xFFFFF000; /* assume maxphyaddr >= 36 */
   bits_hi = (1 << (maxphyaddr - 32)) - 1;
   bits = bits_lo | ((grub_uint64_t) bits_hi << 32);
diff --git a/include/grub/i386/cpuid.h b/include/grub/i386/cpuid.h
index e1c45dfc2..980bf0875 100644
--- a/include/grub/i386/cpuid.h
+++ b/include/grub/i386/cpuid.h
@@ -95,4 +95,18 @@ grub_cpu_is_cpuid_supported (void)
                 : "0" (num))
 #endif
 
+static inline grub_uint8_t grub_get_max_phy_addr_bits (void)
+{
+  grub_uint32_t eax, ebx, ecx, edx;
+  grub_uint32_t max_extended_cpuid;
+
+  grub_cpuid (0x80000000, eax, ebx, ecx, edx);
+  max_extended_cpuid = eax;
+  if (max_extended_cpuid < 0x80000008)
+    return 36;
+
+  grub_cpuid (0x80000008, eax, ebx, ecx, edx);
+  return eax & 0xFF;
+}
+
 #endif
-- 
2.49.0


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to