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