[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH][XTF] allow x{g, s}etbv() to also be used in 32-bit code
Their 64-bit register constraints prevented this so far. Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> --- a/include/arch/x86/lib.h +++ b/include/arch/x86/lib.h @@ -398,18 +398,18 @@ static inline unsigned int str(void) static inline uint64_t xgetbv(uint32_t index) { - uint32_t feat_lo; - uint64_t feat_hi; + uint32_t feat_lo, feat_hi; asm volatile ("xgetbv" : "=a" (feat_lo), "=d" (feat_hi) : "c" (index) ); - return feat_lo | (feat_hi << 32); + return feat_lo | ((uint64_t)feat_hi << 32); } static inline void xsetbv(uint32_t index, uint64_t value) { - asm volatile ("xsetbv" :: "a" ((uint32_t)value), "d" (value >> 32), + asm volatile ("xsetbv" :: "a" ((uint32_t)value), + "d" ((uint32_t)(value >> 32)), "c" (index) ); } Attachment:
xtf-xgetbv-32bit.patch _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |