mirror of
https://git.proxmox.com/git/grub2
synced 2025-07-21 20:18:54 +00:00

Some older GCC versions produce following error when x86 MSR modules are build: In file included from commands/i386/rdmsr.c:29:0: ../include/grub/i386/rdmsr.h:27:29: error: no previous prototype for ‘grub_msr_read’ [-Werror=missing-prototypes] extern inline grub_uint64_t grub_msr_read (grub_uint32_t msr_id) ^ cc1: all warnings being treated as errors This happens due to lack of support for a such usage of extern keyword in older GCCs. Additionally, this usage is not consistent with the rest of codebase. So, replace it with static keyword. Additionally, fix incorrect coding style. Reported-by: Eric Snowberg <eric.snowberg@oracle.com> Reported-by: adrian15 <adrian15sgd@gmail.com> Signed-off-by: Daniel Kiper <daniel.kiper@oracle.com> Reviewed-by: Vladimir 'phcoder' Serbinenko <phcoder@gmail.com> Reviewed-by: Eric Snowberg <eric.snowberg@oracle.com> Tested-by: adrian15 <adrian15sgd@gmail.com>
36 lines
1.1 KiB
C
36 lines
1.1 KiB
C
/*
|
|
* GRUB -- GRand Unified Bootloader
|
|
* Copyright (C) 2019 Free Software Foundation, Inc.
|
|
*
|
|
* GRUB is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* GRUB is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with GRUB. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
#ifndef GRUB_WRMSR_H
|
|
#define GRUB_WRMSR_H 1
|
|
|
|
/*
|
|
* TODO: Add a general protection exception handler.
|
|
* Accessing a reserved or unimplemented MSR address results in a GP#.
|
|
*/
|
|
|
|
static inline void
|
|
grub_msr_write(grub_uint32_t msr_id, grub_uint64_t msr_value)
|
|
{
|
|
grub_uint32_t low = msr_value, high = msr_value >> 32;
|
|
|
|
asm volatile ("wrmsr" : : "c" (msr_id), "a" (low), "d" (high));
|
|
}
|
|
|
|
#endif /* GRUB_WRMSR_H */
|