c/s
75f9455e "tools/libxc: Calculate xstate cpuid leaf from guest information"
incorrectly inverted the shift and mask when using X86_XSS_MASK. Luckily, the
mask is currently zero, avoiding incorrect calculations.
While adjusting this, use an explcit uint32_t cast rather than masking against
0xffffffff.
Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com>
Acked-by: Wei Liu <wei.liu2@citrix.com>
Release-acked-by: Wei Liu <wei.liu2@citrix.com>
{
case 0:
/* EAX: low 32bits of xfeature_enabled_mask */
- regs[0] = guest_xfeature_mask & 0xFFFFFFFF;
+ regs[0] = (uint32_t)guest_xfeature_mask;
/* EDX: high 32bits of xfeature_enabled_mask */
regs[3] = guest_xfeature_mask >> 32;
/* ECX: max size required by all HW features */
if ( test_bit(X86_FEATURE_XSAVES, info->featureset) )
{
- regs[2] = guest_xfeature_mask & X86_XSS_MASK & 0xFFFFFFFF;
- regs[3] = (guest_xfeature_mask >> 32) & X86_XSS_MASK;
+ regs[2] = (uint32_t)(guest_xfeature_mask & X86_XSS_MASK);
+ regs[3] = (guest_xfeature_mask & X86_XSS_MASK) >> 32;
}
else
regs[2] = regs[3] = 0;