Fix asm constraints to avoid SI, DI for byte and word access.
authorBen Pfaff <blp@cs.stanford.edu>
Sat, 2 Aug 2008 11:30:43 +0000 (11:30 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Sat, 2 Aug 2008 11:30:43 +0000 (11:30 +0000)
Thanks to Ed Lyle Karrels <karrels@stanford.edu> for reporting the
problem.

doc/userprog.texi
src/userprog/gdt.c

index 5bd0bb2b0d5681a14ceeeca5e49d9ff2b1ef724c..612bb81ba553166d0796c84a923155a7e404ce45 100644 (file)
@@ -443,7 +443,7 @@ put_user (uint8_t *udst, uint8_t byte)
 {
   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
index a7423b7ec986cfeae0fe439a6f697e51f5eff92c..e866037e2a24dc412da2f2068d4fe69476260756 100644 (file)
@@ -50,7 +50,7 @@ gdt_init (void)
      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? */