Thanks to Ed Lyle Karrels <karrels@stanford.edu> for reporting the
problem.
{
int error_code;
asm ("movl $1f, %0; movb %b2, %1; 1:"
- : "=&a" (error_code), "=m" (*udst) : "r" (byte));
+ : "=&a" (error_code), "=m" (*udst) : "q" (byte));
return error_code != -1;
}
@end verbatim
+{
+ int eax;
+ asm ("movl $1f, %%eax; movb %b2, %0; 1:"
-+ : "=m" (*udst), "=&a" (eax) : "r" (byte));
++ : "=m" (*udst), "=&a" (eax) : "q" (byte));
+ return eax != 0;
+}
+
6.2.4 "Task Register". */
gdtr_operand = make_gdtr_operand (sizeof gdt - 1, gdt);
asm volatile ("lgdt %0" : : "m" (gdtr_operand));
- asm volatile ("ltr %w0" : : "r" (SEL_TSS));
+ asm volatile ("ltr %w0" : : "q" (SEL_TSS));
}
\f
/* System segment or code/data segment? */