diff --git a/proc.c b/proc.c
index 73cad6d97b9e1ad88bc302fb1ec0f82e9af84daf..2a878fadc8c5c74a7bb268fc497c5c223ff282a2 100644
--- a/proc.c
+++ b/proc.c
@@ -72,10 +72,9 @@ ksegment(void)
   c->gdt[SEG_KDATA] = SEG(STA_W, 0, 0xffffffff, 0);
   c->gdt[SEG_KCPU] = SEG(STA_W, &c->cpu, 8, 0);
   lgdt(c->gdt, sizeof(c->gdt));
-  loadfsgs(SEG_KCPU << 3);
+  loadgs(SEG_KCPU << 3);
   
   // Initialize cpu-local storage.
-  asm volatile("");  // Do not let gcc reorder across this line.
   cpu = c;
   proc = 0;
 }
diff --git a/x86.h b/x86.h
index e754b28ed46389e9f9de52ce2dd5964ef189a5ce..fcd3062978f08b34c0e9ce2f32eab16f7b6a4378 100644
--- a/x86.h
+++ b/x86.h
@@ -104,9 +104,8 @@ xchg(volatile uint *addr, uint newval)
 }
 
 static inline void
-loadfsgs(ushort v)
+loadgs(ushort v)
 {
-  asm volatile("movw %0, %%fs" : : "r" (v));
   asm volatile("movw %0, %%gs" : : "r" (v));
 }