cleaned up comments for reboot code and adopted GNU coding standards
authorGodmar Back <godmar@gmail.com>
Wed, 27 Aug 2008 11:50:49 +0000 (11:50 +0000)
committerGodmar Back <godmar@gmail.com>
Wed, 27 Aug 2008 11:50:49 +0000 (11:50 +0000)
src/threads/init.c

index ac9460307d3d2b3d5596713bedb8c040db65bf0c..a831a80b31a3bcdcdb9699334837203cad8f888a 100644 (file)
@@ -376,35 +376,38 @@ usage (void)
   power_off ();
 }
 
+/* Keyboard control register port. */
+#define CONTROL_REG 0x64
 
-/* Reboots the machine we're running on. */
+/* Reboots the machine via the keyboard controller. */
 void
 reboot (void)
 {
-    int i;
-
-    printf ("Rebooting...\n");
-
-    /* based on reboot.c code by Osamu Tomita <tomita@cinet.co.jp>
-     * See http://www.win.tue.nl/~aeb/linux/kbd/scancodes-11.html */
-    for (i = 0; i < 100; i++) {
-        int j;
-
-        /* Poll keyboard controller's status byte until 
-         * 'input buffer empty' is reported, so it's ok to write */
-        for (j = 0; j < 0x10000; j++) 
-          {
-            if ((inb (0x64) & 0x02) == 0)   
-              break;
-            timer_udelay (2);
-          }
-
-        timer_udelay (50);
-
-        /* Pulse bit 0 of the output port P2 of the keyboard controller. 
-         * This will reset the CPU. */
-        outb (0x64, 0xfe);
-        timer_udelay (50);
+  int i;
+
+  printf ("Rebooting...\n");
+
+    /* See [kbd] for details on how to program the keyboard
+     * controller. */
+  for (i = 0; i < 100; i++) 
+    {
+      int j;
+
+      /* Poll keyboard controller's status byte until 
+       * 'input buffer empty' is reported. */
+      for (j = 0; j < 0x10000; j++) 
+        {
+          if ((inb (CONTROL_REG) & 0x02) == 0)   
+            break;
+          timer_udelay (2);
+        }
+
+      timer_udelay (50);
+
+      /* Pulse bit 0 of the output port P2 of the keyboard controller. 
+       * This will reset the CPU. */
+      outb (CONTROL_REG, 0xfe);
+      timer_udelay (50);
     }
 }