diff --git a/cMIPS/include/handlers.s b/cMIPS/include/handlers.s
index 60ce4e2e0afb3698c232e12a78337b3b291b4cb7..01fadb9f668d2beb9f73aa59024b6071305ea242 100644
--- a/cMIPS/include/handlers.s
+++ b/cMIPS/include/handlers.s
@@ -213,6 +213,7 @@ cmips_delay:
 	# _kmsg_saves[0]=$a0, [1]=$a1, [2]=$a2, [3]=$ra
 	#
 	.text
+	.align  2
 	.set    noreorder
 	.set    noat
 	.global cmips_kmsg
@@ -227,7 +228,7 @@ cmips_kmsg:
 	sw    $a2, 2*4($k0)
 	
 	lui   $a1, %hi(_kmsg_list)
-	ori   $a1, $a1, %hi(_kmsg_list)
+	ori   $a1, $a1, %lo(_kmsg_list)
 
 	sll   $k1, $k1, 2		# adjust index onto table
 	addu  $a1, $a1, $k1
@@ -250,10 +251,12 @@ k_for:	lbu   $a0, 0($a1)
 	.equ kmsg_interr,0
 	.equ kmsg_excep,1
 	.data
+        .align  2
 	.global _kmsg_list
-_kmsg_list: .word _kmsg_interr,_kmsg_excep
-
 _kmsg_interr:	.asciiz "\n\tinterrupt\n\n"
 _kmsg_excep:	.asciiz "\n\texceptioninterrupt\n\n"
+
+_kmsg_list: .word _kmsg_interr,_kmsg_excep
+
 	#----------------------------------------------------------------