diff -ru source900/vmmon-only/linux/hostif.c source/vmmon-only/linux/hostif.c --- source900/vmmon-only/linux/hostif.c 2012-07-23 18:18:55.000000000 +0900 +++ source/vmmon-only/linux/hostif.c 2012-08-03 16:20:23.200420885 +0900 @@ -47,6 +47,7 @@ #include +#include #include #include #include @@ -4118,7 +4119,6 @@ uint64 *val) // OUT: MSR value { int ret; -#if defined(VM_X86_64) unsigned low, high; asm volatile("2: rdmsr ; xor %0,%0\n" @@ -4126,27 +4126,10 @@ ".section .fixup,\"ax\"\n\t" "3: mov %4,%0 ; jmp 1b\n\t" ".previous\n\t" - ".section __ex_table,\"a\"\n\t" - ".balign 8\n" - ".quad 2b,3b\n" - ".previous\n" + _ASM_EXTABLE(2b,3b) : "=r"(ret), "=a"(low), "=d"(high) : "c"(msr), "i"(-EFAULT), "1"(0), "2"(0)); // init eax/edx to 0 *val = (low | ((u64)(high) << 32)); -#else - asm volatile("2: rdmsr ; xor %0,%0\n" - "1:\n\t" - ".section .fixup,\"ax\"\n\t" - "3: mov %3,%0 ; jmp 1b\n\t" - ".previous\n\t" - ".section __ex_table,\"a\"\n" - ".balign 4\n" - ".long 2b,3b\n" - ".previous\n" - : "=r"(ret), "=A"(*val) - : "c"(msr), "i"(-EFAULT), "1"(0)); // init rax to 0 - -#endif // VM_X86_64 return ret; }