high /= divisor;
}
- asm ("divl %2"
- : "=a" (low), "=d" (mod)
- : "rm" (divisor), "0" (low), "1" (umod));
+ asm ("divl %[divisor]"
+ : "+a" (low), "=d" (mod)
+ : [divisor] "rm" (divisor), "d" (umod));
*dividend = (((uint64_t)high) << 32) | low;
}
{
exinfo_t fault = 0;
- asm volatile ("1: mov %1, %%cr4; 2:"
+ asm volatile ("1: mov %[cr4], %%cr4; 2:"
_ASM_EXTABLE_HANDLER(1b, 2b, ex_record_fault_edi)
: "+D" (fault)
- : "r" (cr4),
+ : [cr4] "r" (cr4),
"X" (ex_record_fault_edi));
return fault;
pack_gate(g, 14, sel, offset, dpl, other);
}
-#endif /* XTF_X86_TSS_H */
+#endif /* XTF_X86_GATE_H */
/*
* Local variables:
"andb $~%c[ad], %[pte1];\n\t" /* Clear A/D bits. */
"andb $~%c[ad], %[pte2];\n\t"
_ASM_MAYBE_XEN_FEP
- "1: invlpg (0x1000); 2:\n\t" /* Invalidate one page only. */
+ "1: invlpg 0x1000; 2:\n\t" /* Invalidate one page only. */
_ASM_EXTABLE_HANDLER(1b, 2b, ex_fail)
"mov %[zero], 0x1000;\n\t" /* Expect refill. */
"mov %[zero], 0x2000;\n\t" /* Expect no refill. */
"andb $~%c[ad], %[pte1];\n\t" /* Clear A/D bits. */
"andb $~%c[ad], %[pte2];\n\t"
_ASM_MAYBE_XEN_FEP
- "1: invlpg %%fs:(0x1000); 2:\n\t" /* Invalidate one page only. */
+ "1: invlpg %%fs:0x1000; 2:\n\t" /* Invalidate one page only. */
_ASM_EXTABLE_HANDLER(1b, 2b, ex_fail)
"mov %[zero], 0x1000;\n\t" /* Expect one TLB entry to refil, */
"mov %[zero], 0x2000;\n\t" /* depending on %fs base.*/
{
unsigned int i;
- printk("Testing 'invlpg (0x1000)' with segment bases\n");
+ printk("Testing 'invlpg 0x1000' with segment bases\n");
printk(" Test: No segment\n");
run_tlb_refill_test(invlpg_refill, 1);
void test_main(void)
{
- unsigned long src = 0x1234, dest = 0;
+ unsigned int src = 0x1234, dest = 0;
asm volatile(_ASM_XEN_FEP
/* Explicit %cs segment override. */
- ".byte 0x2e;"
- "mov %k[src], %k[dest]"
- : [src] "=r" (src), [dest] "=r" (dest)
- : "0" (src), "1" (dest));
+ ".byte 0x2e; mov %[src], %[dest]"
+ : [src] "+r" (src), [dest] "+r" (dest));
if ( dest != 0x1234 )
xtf_failure(" '%%cs:mov %%reg, %%reg' clobbered hypervisor memory\n");
asm volatile ("mov %[ss], %%ss; int3; 1:"
_ASM_TRAP_OK(1b)
- :: [ss] "m" (ss), "X" (ex_record_fault_eax));
+ :: [ss] "m" (ss));
/*
* If Xen is still alive at this point, the erroneous safety check didn't