blob: 4229b3b921c88ae75d2be83ed175e12f543cfa35 [file] [log] [blame]
Thomas Heijligenb3287b42021-12-14 17:25:49 +01001/*
2 * This file is part of the flashrom project.
3 *
4 * Copyright (C) 2009 Carl-Daniel Hailfinger
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#ifndef __HWACCESS_X86_MSR_H__
17#define __HWACCESS_X86_MSR_H__ 1
18
19#include <stdint.h>
20
21#if !(defined(__MACH__) && defined(__APPLE__)) && !defined(__FreeBSD__) && !defined(__FreeBSD_kernel__) && !defined(__DragonFly__) && !defined(__LIBPAYLOAD__)
22typedef struct { uint32_t hi, lo; } msr_t;
23msr_t rdmsr(int addr);
24int wrmsr(int addr, msr_t msr);
25#endif
26
27#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
28/* FreeBSD already has conflicting definitions for wrmsr/rdmsr. */
29#undef rdmsr
30#undef wrmsr
31#define rdmsr freebsd_rdmsr
32#define wrmsr freebsd_wrmsr
33typedef struct { uint32_t hi, lo; } msr_t;
34msr_t freebsd_rdmsr(int addr);
35int freebsd_wrmsr(int addr, msr_t msr);
36#endif
37
38#if defined(__LIBPAYLOAD__)
39#include <arch/io.h>
40#include <arch/msr.h>
41typedef struct { uint32_t hi, lo; } msr_t;
42msr_t libpayload_rdmsr(int addr);
43int libpayload_wrmsr(int addr, msr_t msr);
44#undef rdmsr
45#define rdmsr libpayload_rdmsr
46#define wrmsr libpayload_wrmsr
47#endif
48
49int setup_cpu_msr(int cpu);
50void cleanup_cpu_msr(void);
51
52#endif /* __HWACCESS_X86_MSR_H__ */