Index: kernel/Makefile
===================================================================
--- kernel/Makefile	(revision 6d7f9bfe6cb09cfc3e3824be236012c2db0cbb7e)
+++ kernel/Makefile	(revision 40d4c1d4873553b574cf552692c01791d56f1689)
@@ -33,8 +33,7 @@
 all: ../version ../Makefile.config ../config.h ../config.defs
 	-[ -f $(DEPEND) ] && mv -f $(DEPEND) $(DEPEND_PREV)
-	$(MAKE) -f Makefile.build EXTRA_TOOL=$(EXTRA_TOOL)
+	$(MAKE) -f Makefile.build PRECHECK=$(PRECHECK)
 
 clean:
 	rm -f $(DEPEND) $(DEPEND_PREV) $(RAW) $(BIN) $(MAP) $(JOB) $(MAP_PREV) $(DISASM) $(DUMP) $(REAL_MAP).* $(ARCH_INCLUDE) $(GENARCH_INCLUDE) arch/*/_link.ld
 	find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.o' -follow -exec rm \{\} \;
-	find generic/src/ arch/*/src/ genarch/src/ test/ -name '*.o.preproc' -follow -exec rm \{\} \;
Index: kernel/Makefile.build
===================================================================
--- kernel/Makefile.build	(revision 6d7f9bfe6cb09cfc3e3824be236012c2db0cbb7e)
+++ kernel/Makefile.build	(revision 40d4c1d4873553b574cf552692c01791d56f1689)
@@ -376,7 +376,13 @@
 %.o: %.S $(DEPEND)
 	$(GCC) $(DEFS) $(GCC_CFLAGS) -D__ASM__ -c $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ as asm/preproc $(DEFS) $(GCC_CFLAGS) -D__ASM__
+endif
 
 %.o: %.s $(DEPEND)
 	$(AS) $(AFLAGS) $< -o $@
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ as asm $(DEFS) $(CFLAGS) $(EXTRA_FLAGS)
+endif
 
 #
@@ -386,6 +392,6 @@
 test/fpu/%.o: test/fpu/%.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) -c $< -o $@
-ifeq ($(EXTRA_TOOL),stanse)
-	../tools/jobfile.py $(JOB) $< $@ $(DEFS) $(CFLAGS) $(EXTRA_FLAGS)
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc test $(DEFS) $(CFLAGS) $(EXTRA_FLAGS)
 endif
 
@@ -395,6 +401,6 @@
 %.o: %.c $(DEPEND)
 	$(CC) $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS) -c $< -o $@
-ifeq ($(EXTRA_TOOL),stanse)
-	../tools/jobfile.py $(JOB) $< $@ $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS)
+ifeq ($(PRECHECK),y)
+	$(JOBFILE) $(JOB) $< $@ cc core $(DEFS) $(CFLAGS) $(EXTRA_FLAGS) $(FPU_NO_CFLAGS)
 endif
 
@@ -406,5 +412,5 @@
 	$(LD) -T $(LINK) $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(EMPTY_MAP) -o $@ -Map $(MAP_PREV)
 	$(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > $(DUMP)
-	tools/genmap.py $(MAP_PREV) $(DUMP) $@
+	$(GENMAP) $(MAP_PREV) $(DUMP) $@
 	
 	# Do it once again, this time to get correct even the symbols
@@ -414,5 +420,5 @@
 	$(LD) -T $(LINK) $(LFLAGS) $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) $(EXTRA_OBJECTS) $(SIZEOK_MAP) -o $@ -Map $(MAP_PREV)
 	$(OBJDUMP) -t $(ARCH_OBJECTS) $(GENARCH_OBJECTS) $(GENERIC_OBJECTS) > $(DUMP)
-	tools/genmap.py $(MAP_PREV) $(DUMP) $@
+	$(GENMAP) $(MAP_PREV) $(DUMP) $@
 
 $(DEPEND): $(ARCH_INCLUDE) $(GENARCH_INCLUDE)
Index: kernel/Makefile.common
===================================================================
--- kernel/Makefile.common	(revision 6d7f9bfe6cb09cfc3e3824be236012c2db0cbb7e)
+++ kernel/Makefile.common	(revision 40d4c1d4873553b574cf552692c01791d56f1689)
@@ -44,2 +44,5 @@
 ARCH_INCLUDE = generic/include/arch
 GENARCH_INCLUDE = generic/include/genarch
+
+GENMAP = tools/genmap.py
+JOBFILE = ../tools/jobfile.py
Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision 6d7f9bfe6cb09cfc3e3824be236012c2db0cbb7e)
+++ kernel/arch/amd64/src/amd64.c	(revision 40d4c1d4873553b574cf552692c01791d56f1689)
@@ -212,4 +212,5 @@
 			i8042_wire(i8042_instance, kbrd);
 			trap_virtual_enable_irqs(1 << IRQ_KBD);
+			trap_virtual_enable_irqs(1 << IRQ_MOUSE);
 		}
 	}
@@ -219,9 +220,10 @@
 	 * self-sufficient.
 	 */
-	sysinfo_set_item_val("kbd", NULL, true);
-	sysinfo_set_item_val("kbd.inr", NULL, IRQ_KBD);
-	sysinfo_set_item_val("kbd.address.physical", NULL,
+	sysinfo_set_item_val("i8042", NULL, true);
+	sysinfo_set_item_val("i8042.inr_a", NULL, IRQ_KBD);
+	sysinfo_set_item_val("i8042.inr_b", NULL, IRQ_MOUSE);
+	sysinfo_set_item_val("i8042.address.physical", NULL,
 	    (uintptr_t) I8042_BASE);
-	sysinfo_set_item_val("kbd.address.kernel", NULL,
+	sysinfo_set_item_val("i8042.address.kernel", NULL,
 	    (uintptr_t) I8042_BASE);
 #endif
Index: kernel/arch/amd64/src/boot/boot.S
===================================================================
--- kernel/arch/amd64/src/boot/boot.S	(revision 6d7f9bfe6cb09cfc3e3824be236012c2db0cbb7e)
+++ kernel/arch/amd64/src/boot/boot.S	(revision 40d4c1d4873553b574cf552692c01791d56f1689)
@@ -333,11 +333,11 @@
 
 extended_cpuid_msg:
-	.asciz "Extended CPUID not supported. System halted."
+	.asciz "Error: Extended CPUID not supported -- CPU is not 64-bit. System halted."
 long_mode_msg:
-	.asciz "64 bit long mode not supported. System halted."
+	.asciz "Error: 64-bit long mode not supported. System halted."
 noexecute_msg:
-	.asciz "No-execute pages not supported. System halted."
+	.asciz "Error: No-execute pages not supported. System halted."
 fx_msg:
-	.asciz "FXSAVE/FXRESTORE instructions not supported. System halted."
+	.asciz "Error: FXSAVE/FXRESTORE instructions not supported. System halted."
 sse2_msg:
-	.asciz "SSE2 instructions not supported. System halted."
+	.asciz "Error: SSE2 instructions not supported. System halted."
Index: kernel/arch/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision 6d7f9bfe6cb09cfc3e3824be236012c2db0cbb7e)
+++ kernel/arch/ia32/src/ia32.c	(revision 40d4c1d4873553b574cf552692c01791d56f1689)
@@ -170,4 +170,5 @@
 			i8042_wire(i8042_instance, kbrd);
 			trap_virtual_enable_irqs(1 << IRQ_KBD);
+			trap_virtual_enable_irqs(1 << IRQ_MOUSE);
 		}
 	}
@@ -177,9 +178,10 @@
 	 * self-sufficient.
 	 */
-	sysinfo_set_item_val("kbd", NULL, true);
-	sysinfo_set_item_val("kbd.inr", NULL, IRQ_KBD);
-	sysinfo_set_item_val("kbd.address.physical", NULL,
+	sysinfo_set_item_val("i8042", NULL, true);
+	sysinfo_set_item_val("i8042.inr_a", NULL, IRQ_KBD);
+	sysinfo_set_item_val("i8042.inr_b", NULL, IRQ_MOUSE);
+	sysinfo_set_item_val("i8042.address.physical", NULL,
 	    (uintptr_t) I8042_BASE);
-	sysinfo_set_item_val("kbd.address.kernel", NULL,
+	sysinfo_set_item_val("i8042.address.kernel", NULL,
 	    (uintptr_t) I8042_BASE);
 #endif
