~pmdj/ubuntu/trusty/qemu/2.9+applesmc+fadtv3

« back to all changes in this revision

Viewing changes to roms/ipxe/src/arch/i386/include/ipxe/msr.h

  • Committer: Phil Dennis-Jordan
  • Date: 2017-07-21 08:03:43 UTC
  • mfrom: (1.1.1)
  • Revision ID: phil@philjordan.eu-20170721080343-2yr2vdj7713czahv
New upstream release 2.9.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef _IPXE_MSR_H
 
2
#define _IPXE_MSR_H
 
3
 
 
4
/** @file
 
5
 *
 
6
 * Model-specific registers
 
7
 *
 
8
 */
 
9
 
 
10
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
 
11
 
 
12
/**
 
13
 * Read model-specific register
 
14
 *
 
15
 * @v msr               Model-specific register
 
16
 * @ret value           Value
 
17
 */
 
18
static inline __attribute__ (( always_inline )) uint64_t
 
19
rdmsr ( unsigned int msr ) {
 
20
        uint64_t value;
 
21
 
 
22
        __asm__ __volatile__ ( "rdmsr" : "=A" ( value ) : "c" ( msr ) );
 
23
        return value;
 
24
}
 
25
 
 
26
/**
 
27
 * Write model-specific register
 
28
 *
 
29
 * @v msr               Model-specific register
 
30
 * @v value             Value
 
31
 */
 
32
static inline __attribute__ (( always_inline )) void
 
33
wrmsr ( unsigned int msr, uint64_t value ) {
 
34
 
 
35
        __asm__ __volatile__ ( "wrmsr" : : "c" ( msr ), "A" ( value ) );
 
36
}
 
37
 
 
38
#endif /* _IPXE_MSR_H */