[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] fix vmx problems
ChangeSet 1.1340.1.3, 2005/04/21 18:34:14+01:00, maf46@xxxxxxxxxxxxxxxxx fix vmx problems Signed-off-by: Xin B Li <xin.b.li@xxxxxxxxx> Signed-off-by: Arun Sharma <arun.sharma@xxxxxxxxx> Signed-off-by: michael.fetterman@xxxxxxxxxxxx vmx_io.c | 67 +++++++++++++++++++++++++++++++-------------------------------- 1 files changed, 33 insertions(+), 34 deletions(-) diff -Nru a/xen/arch/x86/vmx_io.c b/xen/arch/x86/vmx_io.c --- a/xen/arch/x86/vmx_io.c 2005-04-21 21:06:13 -04:00 +++ b/xen/arch/x86/vmx_io.c 2005-04-21 21:06:13 -04:00 @@ -282,7 +282,7 @@ } } -#ifdef __i386__ +#if defined(__i386__) || defined(__x86_64__) static inline int __fls(u32 word) { int bit; @@ -296,53 +296,52 @@ #define __fls(x) generic_fls(x) static __inline__ int generic_fls(u32 x) { - int r = 32; + int r = 31; - if (!x) - return 0; - if (!(x & 0xffff0000u)) { - x <<= 16; - r -= 16; - } - if (!(x & 0xff000000u)) { - x <<= 8; - r -= 8; - } - if (!(x & 0xf0000000u)) { - x <<= 4; - r -= 4; - } - if (!(x & 0xc0000000u)) { - x <<= 2; - r -= 2; - } - if (!(x & 0x80000000u)) { - x <<= 1; - r -= 1; - } - return r; + if (!x) + return 0; + if (!(x & 0xffff0000u)) { + x <<= 16; + r -= 16; + } + if (!(x & 0xff000000u)) { + x <<= 8; + r -= 8; + } + if (!(x & 0xf0000000u)) { + x <<= 4; + r -= 4; + } + if (!(x & 0xc0000000u)) { + x <<= 2; + r -= 2; + } + if (!(x & 0x80000000u)) { + x <<= 1; + r -= 1; + } + return r; } #endif - /* Simple minded Local APIC priority implementation. Fix later */ static __inline__ int find_highest_irq(u32 *pintr) { if (pintr[7]) - return __fls(pintr[7]) + (255-32*1); + return __fls(pintr[7]) + (256-32*1); if (pintr[6]) - return __fls(pintr[6]) + (255-32*2); + return __fls(pintr[6]) + (256-32*2); if (pintr[5]) - return __fls(pintr[5]) + (255-32*3); + return __fls(pintr[5]) + (256-32*3); if (pintr[4]) - return __fls(pintr[4]) + (255-32*4); + return __fls(pintr[4]) + (256-32*4); if (pintr[3]) - return __fls(pintr[3]) + (255-32*5); + return __fls(pintr[3]) + (256-32*5); if (pintr[2]) - return __fls(pintr[2]) + (255-32*6); + return __fls(pintr[2]) + (256-32*6); if (pintr[1]) - return __fls(pintr[1]) + (255-32*7); - return (__fls(pintr[0])-1); + return __fls(pintr[1]) + (256-32*7); + return __fls(pintr[0]); } /* _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |