Make userspace actually work.
[pintos-anon] / src / threads / init.c
index 8a2c4919008291e1f049c9694989991e235d7c9a..f2476124da7d2a0a7a597d312da5715cb1985943 100644 (file)
@@ -32,7 +32,7 @@ void power_off (void);
 static void
 main_thread (void *aux UNUSED) 
 {
-  printk ("execute=%d\n", (int) thread_execute ("a.out"));
+  thread_execute ("a.out");
 }
 
 int
@@ -71,7 +71,6 @@ main (void)
 
 #ifdef FILESYS
   filesys_init (false);
-  filesys_self_test ();
 #endif
 
   thread_init ();
@@ -120,9 +119,10 @@ make_data_desc (int dpl)
 }
 
 static uint64_t
-make_tss_desc (uint32_t base)
+make_tss_desc (void *vaddr)
 {
-  return make_seg_desc (base, 0x67, SYS_SYSTEM, TYPE_TSS_32_A, 0, GRAN_BYTE);
+  return make_seg_desc ((uint32_t) vaddr,
+                        0x67, SYS_SYSTEM, TYPE_TSS_32_A, 0, GRAN_BYTE);
 }
 
 uint64_t gdt[SEL_CNT];
@@ -150,7 +150,7 @@ gdt_init (void)
   gdt[SEL_KDSEG / sizeof *gdt] = make_data_desc (0);
   gdt[SEL_UCSEG / sizeof *gdt] = make_code_desc (3);
   gdt[SEL_UDSEG / sizeof *gdt] = make_data_desc (3);
-  gdt[SEL_TSS / sizeof *gdt] = make_tss_desc (vtop (tss));
+  gdt[SEL_TSS / sizeof *gdt] = make_tss_desc (tss);
 
   /* Load GDTR, TR. */
   gdtr_operand = make_dtr_operand (sizeof gdt - 1, gdt);