Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
+++ kernel/arch/amd64/src/amd64.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -282,4 +282,11 @@
 }
 
+void arch_reboot(void)
+{
+#ifdef CONFIG_PC_KBD
+	i8042_cpu_reset((i8042_t *) I8042_BASE);
+#endif
+}
+
 /** @}
  */
Index: kernel/arch/amd64/src/pm.c
===================================================================
--- kernel/arch/amd64/src/pm.c	(revision 84afc7bf42bf4b5e22750a7f377f4bfc31636630)
+++ kernel/arch/amd64/src/pm.c	(revision 92fd52d7f8133beb8043e6bcd17498477fe735ea)
@@ -231,23 +231,4 @@
 }
 
-/* Reboot the machine by initiating
- * a triple fault
- */
-void arch_reboot(void)
-{
-	preemption_disable();
-	ipl_t ipl = interrupts_disable();
-	
-	memsetb(idt, sizeof(idt), 0);
-	idtr_load(&idtr);
-	
-	interrupts_restore(ipl);
-	asm volatile (
-		"int $0x03\n"
-		"cli\n"
-		"hlt\n"
-	);
-}
-
 /** @}
  */
