Index: kernel/arch/ia32/src/boot/boot.S
===================================================================
--- kernel/arch/ia32/src/boot/boot.S	(revision 4b241f380e0451bac9635fb18c9249e09909f5f6)
+++ kernel/arch/ia32/src/boot/boot.S	(revision 0d5a50cade5ee95d9afc0d055a94381254bb6e18)
@@ -105,27 +105,10 @@
 	call map_kernel							# map kernel and turn paging on
 
-	movl grub_eax, %eax
-	movl grub_ebx, %ebx
-	cmpl $MULTIBOOT_LOADER_MAGIC, %eax				# compare GRUB signature
-	je valid_boot
-
-		xorl %ecx, %ecx							# no memory map available
-		movl %ecx, e820counter
-
-		jmp invalid_boot
-
-	valid_boot:
-
-	movl grub_eax, %eax
-	movl grub_ebx, %ebx
-
-	# ia32_boot(grub_eax, grub_ebx)
-	pushl %ebx
-	pushl %eax
+	# ia32_cboot(grub_eax, grub_ebx)
+	pushl grub_ebx
+	pushl grub_eax
 	call ia32_cboot		# Does not return.
 
 	# Not reached.
-
-	invalid_boot:
 
 	cli
Index: kernel/arch/ia32/src/boot/cboot.c
===================================================================
--- kernel/arch/ia32/src/boot/cboot.c	(revision 4b241f380e0451bac9635fb18c9249e09909f5f6)
+++ kernel/arch/ia32/src/boot/cboot.c	(revision 0d5a50cade5ee95d9afc0d055a94381254bb6e18)
@@ -53,5 +53,10 @@
 	uint32_t i;
 
-	flags = mi->flags;
+	if (signature == MULTIBOOT_LOADER_MAGIC) {
+		flags = mi->flags;
+	} else {
+		/* No multiboot info available. */
+		flags = 0;
+	}
 
 	/* Copy module information. */
