diff -BNurbp linux-2.6.10-dist/arch/arm/kernel/head.S linux-2.6.10/arch/arm/kernel/head.S
--- linux-2.6.10-dist/arch/arm/kernel/head.S	2004-12-24 22:33:48.000000000 +0100
+++ linux-2.6.10/arch/arm/kernel/head.S	2004-12-28 05:19:14.821406782 +0100
@@ -404,13 +404,17 @@ __lookup_architecture_type:
 	sub	r5, r4, r5			@ convert addresses
 	add	r4, r6, r5			@ to our address space
 	add	r7, r7, r5
+	rsb	r2, r4, r7			@ number of machine types
+	teq	r2, #SIZEOF_MACHINE_DESC	@ only one?
+	beq	2f				@ if so do not bother with r1
 1:	ldr	r5, [r4]			@ get machine type
 	teq	r5, r1				@ matches loader number?
-	beq	2f				@ found
+	beq	3f				@ found
 	add	r4, r4, #SIZEOF_MACHINE_DESC	@ next machine_desc
 	cmp	r4, r7
 	blt	1b
 	mov	r7, #0				@ unknown architecture
 	mov	pc, lr
-2:	ldmib	r4, {r5, r6, r7}		@ found, get results
+2:	ldr	r1, [r4]
+3:	ldmib	r4, {r5, r6, r7}		@ found, get results
 	mov	pc, lr
