Use "r" (&uint64) instead of "m" (uint64) as constraints on lidt, lgdt
[pintos-anon] / src / userprog / gdt.c
index 4e338f7604df43a264499b1e95827b68e307825e..34e2c050d739abfe44d04c1d052fa6124670e307 100644 (file)
@@ -1,6 +1,6 @@
-#include "gdt.h"
-#include "tss.h"
-#include "lib/debug.h"
+#include "userprog/gdt.h"
+#include <debug.h>
+#include "userprog/tss.h"
 #include "threads/mmu.h"
 #include "threads/palloc.h"
 
@@ -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