Index: kernel/arch/amd64/_link.ld.in
===================================================================
--- kernel/arch/amd64/_link.ld.in	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/amd64/_link.ld.in	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -44,4 +44,5 @@
 		*(COMMON);		/* global variables */
 
+		. = ALIGN(8);
 		symbol_table = .;
 		*(symtab.*);            /* Symbol table, must be LAST symbol!*/
Index: kernel/arch/amd64/src/amd64.c
===================================================================
--- kernel/arch/amd64/src/amd64.c	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/amd64/src/amd64.c	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -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 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/amd64/src/boot/boot.S	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -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/arm32/_link.ld.in
===================================================================
--- kernel/arch/arm32/_link.ld.in	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/arm32/_link.ld.in	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -34,4 +34,5 @@
 		*(.sdata);
 		*(.reginfo);
+		. = ALIGN(8);
 		symbol_table = .;
 		*(symtab.*);
Index: kernel/arch/ia32/_link.ld.in
===================================================================
--- kernel/arch/ia32/_link.ld.in	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ia32/_link.ld.in	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -42,4 +42,5 @@
 		hardcoded_unmapped_kdata_size = .;
 		LONG(unmapped_kdata_end - unmapped_kdata_start);
+		. = ALIGN(8);
 		symbol_table = .;
 		*(symtab.*);            /* Symbol table, must be LAST symbol! */
Index: kernel/arch/ia32/src/ia32.c
===================================================================
--- kernel/arch/ia32/src/ia32.c	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ia32/src/ia32.c	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -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
Index: kernel/arch/ia64/_link.ld.in
===================================================================
--- kernel/arch/ia64/_link.ld.in	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ia64/_link.ld.in	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -37,4 +37,5 @@
 		*(COMMON);
 
+		. = ALIGN(8);
                 symbol_table = .;
                 *(symtab.*);            /* Symbol table, must be LAST symbol!*/
Index: kernel/arch/ia64/include/mm/asid.h
===================================================================
--- kernel/arch/ia64/include/mm/asid.h	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ia64/include/mm/asid.h	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -50,14 +50,16 @@
  * but those extra bits are not used by the kernel. 
  */
-#define RIDS_PER_ASID		7
+#define RIDS_PER_ASID		8
 
 #define RID_MAX			262143		/* 2^18 - 1 */
-#define RID_KERNEL		0
-#define RID_INVALID		1
+#define RID_KERNEL7		7
 
-#define ASID2RID(asid, vrn)	(((asid)>RIDS_PER_ASID)?(((asid)*RIDS_PER_ASID)+(vrn)):(asid))
-#define RID2ASID(rid)		((rid)/RIDS_PER_ASID)
+#define ASID2RID(asid, vrn) \
+	((asid) * RIDS_PER_ASID + (vrn))
 
-#define ASID_MAX_ARCH		(RID_MAX/RIDS_PER_ASID)
+#define RID2ASID(rid) \
+	((rid) / RIDS_PER_ASID)
+
+#define ASID_MAX_ARCH		(RID_MAX / RIDS_PER_ASID)
 
 #endif
Index: kernel/arch/ia64/src/ia64.c
===================================================================
--- kernel/arch/ia64/src/ia64.c	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ia64/src/ia64.c	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -203,10 +203,10 @@
 	}
 	
-	sysinfo_set_item_val("kbd", NULL, true);
-	sysinfo_set_item_val("kbd.inr", NULL, IRQ_KBD);
-	sysinfo_set_item_val("kbd.type", NULL, KBD_LEGACY);
-	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/ia64/src/mm/page.c
===================================================================
--- kernel/arch/ia64/src/mm/page.c	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ia64/src/mm/page.c	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -71,26 +71,12 @@
 
 	/*
-	 * First set up kernel region register.
-	 * This is redundant (see start.S) but we keep it here just for sure.
-	 */
-	rr.word = rr_read(VRN_KERNEL);
-	rr.map.ve = 0;                  /* disable VHPT walker */
-	rr.map.ps = PAGE_WIDTH;
-	rr.map.rid = ASID2RID(ASID_KERNEL, VRN_KERNEL);
-	rr_write(VRN_KERNEL, rr.word);
-	srlz_i();
-	srlz_d();
-
-	/*
-	 * And setup the rest of region register.
+	 * Set up kernel region registers.
+	 * VRN_KERNEL has already been set in start.S.
+	 * For paranoia reasons, we set it again.
 	 */
 	for(i = 0; i < REGION_REGISTERS; i++) {
-		/* skip kernel rr */
-		if (i == VRN_KERNEL)
-			continue;
-	
 		rr.word = rr_read(i);
 		rr.map.ve = 0;		/* disable VHPT walker */
-		rr.map.rid = RID_KERNEL;
+		rr.map.rid = ASID2RID(ASID_KERNEL, i);
 		rr.map.ps = PAGE_WIDTH;
 		rr_write(i, rr.word);
Index: kernel/arch/ia64/src/start.S
===================================================================
--- kernel/arch/ia64/src/start.S	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ia64/src/start.S	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -74,5 +74,5 @@
 	movl r10 = (RR_MASK)
 	and r9 = r10, r9
-	movl r10 = ((RID_KERNEL << RID_SHIFT) | (KERNEL_PAGE_WIDTH << PS_SHIFT))
+	movl r10 = (((RID_KERNEL7) << RID_SHIFT) | (KERNEL_PAGE_WIDTH << PS_SHIFT))
 	or r9 = r10, r9
 	
Index: kernel/arch/mips32/_link.ld.in
===================================================================
--- kernel/arch/mips32/_link.ld.in	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/mips32/_link.ld.in	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -38,4 +38,5 @@
 		*(.bss);                        /* uninitialized static variables */
 		*(COMMON);                      /* global variables */
+		. = ALIGN(8);
 		symbol_table = .;
 		*(symtab.*);
Index: kernel/arch/ppc32/_link.ld.in
===================================================================
--- kernel/arch/ppc32/_link.ld.in	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/ppc32/_link.ld.in	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -51,4 +51,5 @@
 		*(COMMON);      /* global variables */
 		
+		. = ALIGN(8);
 		symbol_table = .;
 		*(symtab.*);    /* Symbol table, must be LAST symbol!*/
Index: kernel/arch/sparc64/_link.ld.in
===================================================================
--- kernel/arch/sparc64/_link.ld.in	(revision 1581708902331ee97e832b4c9189e7bbff9ec789)
+++ kernel/arch/sparc64/_link.ld.in	(revision e5773c67f253269d60114a343a65721cef2ac0f7)
@@ -36,4 +36,5 @@
 		*(COMMON);                  /* global variables */
 		
+		. = ALIGN(8);
 		symbol_table = .;
 		*(symtab.*);                /* Symbol table, must be LAST symbol!*/
