diff --git a/arch/arm/lib/relocate.S b/arch/arm/lib/relocate.S
index c5b135db40e4c79e3b7451745b888ff13e120da1..0ebceedfda86260090fc1202acb0273bf2d19f0a 100644
--- a/arch/arm/lib/relocate.S
+++ b/arch/arm/lib/relocate.S
@@ -77,6 +77,7 @@ ENDPROC(relocate_vectors)
  */
 
 ENTRY(relocate_code)
+	stmdb   sp!, {lr}
 	ldr	r1, =__image_copy_start	/* r1 <- SRC &__image_copy_start */
 	subs	r4, r0, r1		/* r4 <- relocation offset */
 	beq	relocate_done		/* skip relocation */
@@ -99,6 +100,20 @@ fixloop:
 	cmp	r1, #R_ARM_RELATIVE
 	bne	fixnext
 
+	tst	r0, #3
+	beq	1f
+	sub	r0, r2, #8
+	bl	prhex
+	mov	r0, #':'
+	bl	pr_c
+	ldr	r0,[r2, #-8]
+	bl	prhex
+	mov	r0, #'_'
+	bl	pr_c
+	ldr	r0,[r2, #-4]
+	bl	prhex
+	b	fixnext
+1:
 	/* relative fix: increase location by offset */
 	add	r0, r0, r4
 	ldr	r1, [r0]
@@ -124,7 +139,81 @@ relocate_done:
 #ifdef __ARM_ARCH_4__
 	mov	pc, lr
 #else
-	bx	lr
+	ldmia	sp!, {pc}
 #endif
 
 ENDPROC(relocate_code)
+
+ENTRY(prhex)
+	stmdb   sp!, {r0-r6,lr}
+	mov	r6, #8
+	mov	r5, r0
+1:	mov	r0, r5, lsr #28
+	cmp	r0, #10
+	addlt	r0, r0, #'0'
+	addge	r0, r0, #'a' - 10
+	bl	pr_c
+	mov	r5, r5, lsl #4
+	subs	r6, r6, #1
+	bne	1b
+
+	mov	r0,#'\n'
+	bl	pr_c
+	mov	r0,#'\r'
+	bl	pr_c
+	ldmia	sp!, {r0-r6,pc}
+ENDPROC(prhex)
+
+#define UTXD		0x40
+#define UTS		0xb4
+#define UTS_TXEMPTY	(1<<6)
+
+ENTRY(pr_c)
+	stmdb   sp!, {r0-r1,lr}
+	ldr	r1, =CONFIG_MXC_UART_BASE
+	str	r0, [r1,#UTXD]
+
+1:	ldr	r0, [r1,#UTS]
+	tst	r0, #UTS_TXEMPTY
+	beq	1b
+	ldmia	sp!, {r0-r1,pc}
+ENDPROC(pr_c)
+
+#if 0
+ENTRY(verify_relocate_table)
+	stmdb   sp!, {lr}
+	/*
+	 * check .rel.dyn relocations
+	 */
+	ldr	r2, =__rel_dyn_start	/* r2 <- SRC &__rel_dyn_start */
+	ldr	r3, =__rel_dyn_end	/* r3 <- SRC &__rel_dyn_end */
+1:
+	ldmia	r2!, {r0-r1}		/* (r0,r1) <- (SRC location,fixup) */
+	and	r1, r1, #0xff
+	cmp	r1, #R_ARM_RELATIVE
+	bne	3f
+
+	tst	r0, #3
+	beq	2f
+	sub	r0, r2, #8
+	bl	prhex
+	mov	r0, #':'
+	bl	pr_c
+	ldr	r0,[r2, #-8]
+	bl	prhex
+	mov	r0, #'_'
+	bl	pr_c
+	ldr	r0,[r2, #-4]
+	bl	prhex
+	mov	r0, #1
+	ldmia	sp!, {pc}
+2:
+3:
+	cmp	r2, r3
+	blo	1b
+
+	mov	r0, #0
+	ldmia	sp!, {pc}
+
+ENDPROC(verify_relocate_table)
+#endif