mirror of
https://github.com/anrieff/libcpuid
synced 2024-11-10 22:59:13 +00:00
Use get_bits_value() inside cpu_rdmsr_range()
This commit is contained in:
parent
c9926ab6f7
commit
9ce0158b88
1 changed files with 10 additions and 15 deletions
|
@ -420,35 +420,30 @@ static int perfmsr_measure(struct msr_driver_t* handle, int msr)
|
||||||
#define MSR_PSTATE_S 0xC0010063
|
#define MSR_PSTATE_S 0xC0010063
|
||||||
#define MSR_PSTATE_0 0xC0010064
|
#define MSR_PSTATE_0 0xC0010064
|
||||||
|
|
||||||
static int get_bits_value(uint64_t val, int highbit, int lowbit)
|
static uint64_t get_bits_value(uint64_t val, int highbit, int lowbit)
|
||||||
{
|
{
|
||||||
uint64_t data = val;
|
uint64_t data = val;
|
||||||
int bits = highbit - lowbit + 1;
|
const uint8_t bits = highbit - lowbit + 1;
|
||||||
|
|
||||||
if(bits < 64) {
|
if(bits < 64) {
|
||||||
|
/* Show only part of register */
|
||||||
data >>= lowbit;
|
data >>= lowbit;
|
||||||
data &= (1ULL << bits) - 1;
|
data &= (1ULL << bits) - 1;
|
||||||
}
|
}
|
||||||
return (int) data;
|
|
||||||
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int cpu_rdmsr_range(struct msr_driver_t* handle, uint32_t msr_index, uint8_t highbit,
|
static int cpu_rdmsr_range(struct msr_driver_t* handle, uint32_t msr_index, uint8_t highbit,
|
||||||
uint8_t lowbit, uint64_t* result)
|
uint8_t lowbit, uint64_t* result)
|
||||||
{
|
{
|
||||||
const uint8_t bits = highbit - lowbit + 1;
|
|
||||||
|
|
||||||
if(highbit > 63 || lowbit > highbit)
|
if(highbit > 63 || lowbit > highbit)
|
||||||
return set_error(ERR_INVRANGE);
|
return set_error(ERR_INVRANGE);
|
||||||
|
|
||||||
if(cpu_rdmsr(handle, msr_index, result))
|
if(cpu_rdmsr(handle, msr_index, result))
|
||||||
return set_error(ERR_HANDLE_R);
|
return set_error(ERR_HANDLE_R);
|
||||||
|
|
||||||
if(bits < 64)
|
*result = get_bits_value(*result, highbit, lowbit);
|
||||||
{
|
|
||||||
/* Show only part of register */
|
|
||||||
*result >>= lowbit;
|
|
||||||
*result &= (1ULL << bits) - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue