diff --git a/x86.h b/x86.h
index ab7882a32bc377389033b206e0e3657b02bb53b8..4774e7585d1f96f6d5e63bd25e31d8b371b3a5d2 100644
--- a/x86.h
+++ b/x86.h
@@ -50,7 +50,7 @@ lgdt(struct segdesc *p, int size)
   pd[1] = (uint)p;
   pd[2] = (uint)p >> 16;
 
-  asm volatile("lgdt (%0)" : : "g" (pd));
+  asm volatile("lgdt (%0)" : : "r" (&pd));
 }
 
 struct gatedesc;