Use "r" (&uint64) instead of "m" (uint64) as constraints on lidt, lgdt
authorBen Pfaff <blp@cs.stanford.edu>
Tue, 19 Jul 2005 03:41:46 +0000 (03:41 +0000)
committerBen Pfaff <blp@cs.stanford.edu>
Tue, 19 Jul 2005 03:41:46 +0000 (03:41 +0000)
because newer gas gives an error on the latter.

src/threads/interrupt.c
src/userprog/gdt.c

index 82b7db7d724bed32a60fe5d9c1c004192d2049fd..05280c308c1034368c2c9cf519f39f5f455f6e92 100644 (file)
@@ -111,7 +111,7 @@ intr_init (void)
   /* Load IDT register.
      See [IA32-v2a] "LIDT" and [IA32-v3] 5.10. */
   idtr_operand = make_idtr_operand (sizeof idt - 1, idt);
-  asm volatile ("lidt %0" :: "m" (idtr_operand));
+  asm volatile ("lidt [%0]" :: "r" (&idtr_operand));
 
   /* Initialize intr_names. */
   for (i = 0; i < INTR_CNT; i++)
index 42cad61449265c0e1179dfaf0dbc03b57c3010c0..34e2c050d739abfe44d04c1d052fa6124670e307 100644 (file)
@@ -46,7 +46,7 @@ gdt_init (void)
 
   /* Load GDTR, TR.  See [IA32-v3] 2.4.1, 2.4.4, 6.2.3.  */
   gdtr_operand = make_gdtr_operand (sizeof gdt - 1, gdt);
-  asm volatile ("lgdt %0" :: "m" (gdtr_operand));
+  asm volatile ("lgdt [%0]" :: "r" (&gdtr_operand));
   asm volatile ("ltr %w0" :: "r" (SEL_TSS));
 }
 \f