|
@@ -114,6 +114,35 @@
|
|
|
#endif
|
|
|
.endm
|
|
|
|
|
|
+ /*
|
|
|
+ * Debug kernel copy by printing the memory addresses involved
|
|
|
+ */
|
|
|
+ .macro dbgkc, begin, end, cbegin, cend
|
|
|
+#ifdef DEBUG
|
|
|
+ kputc #'\n'
|
|
|
+ kputc #'C'
|
|
|
+ kputc #':'
|
|
|
+ kputc #'0'
|
|
|
+ kputc #'x'
|
|
|
+ kphex \begin, 8 /* Start of compressed kernel */
|
|
|
+ kputc #'-'
|
|
|
+ kputc #'0'
|
|
|
+ kputc #'x'
|
|
|
+ kphex \end, 8 /* End of compressed kernel */
|
|
|
+ kputc #'-'
|
|
|
+ kputc #'>'
|
|
|
+ kputc #'0'
|
|
|
+ kputc #'x'
|
|
|
+ kphex \cbegin, 8 /* Start of kernel copy */
|
|
|
+ kputc #'-'
|
|
|
+ kputc #'0'
|
|
|
+ kputc #'x'
|
|
|
+ kphex \cend, 8 /* End of kernel copy */
|
|
|
+ kputc #'\n'
|
|
|
+ kputc #'\r'
|
|
|
+#endif
|
|
|
+ .endm
|
|
|
+
|
|
|
.section ".start", #alloc, #execinstr
|
|
|
/*
|
|
|
* sort out different calling conventions
|
|
@@ -450,6 +479,20 @@ dtb_check_done:
|
|
|
add r6, r9, r5
|
|
|
add r9, r9, r10
|
|
|
|
|
|
+#ifdef DEBUG
|
|
|
+ sub r10, r6, r5
|
|
|
+ sub r10, r9, r10
|
|
|
+ /*
|
|
|
+ * We are about to copy the kernel to a new memory area.
|
|
|
+ * The boundaries of the new memory area can be found in
|
|
|
+ * r10 and r9, whilst r5 and r6 contain the boundaries
|
|
|
+ * of the memory we are going to copy.
|
|
|
+ * Calling dbgkc will help with the printing of this
|
|
|
+ * information.
|
|
|
+ */
|
|
|
+ dbgkc r5, r6, r10, r9
|
|
|
+#endif
|
|
|
+
|
|
|
1: ldmdb r6!, {r0 - r3, r10 - r12, lr}
|
|
|
cmp r6, r5
|
|
|
stmdb r9!, {r0 - r3, r10 - r12, lr}
|