summaryrefslogtreecommitdiff
path: root/purgatory
diff options
context:
space:
mode:
Diffstat (limited to 'purgatory')
-rw-r--r--purgatory/arch/arm64/purgatory-arm64.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/purgatory/arch/arm64/purgatory-arm64.c b/purgatory/arch/arm64/purgatory-arm64.c
index fe50fcf..b4d8578 100644
--- a/purgatory/arch/arm64/purgatory-arm64.c
+++ b/purgatory/arch/arm64/purgatory-arm64.c
@@ -5,15 +5,30 @@
#include <stdint.h>
#include <purgatory.h>
+/* Symbols set by kexec. */
+
+uint8_t *arm64_sink __attribute__ ((section ("data")));
+extern void (*arm64_kernel_entry)(uint64_t, uint64_t, uint64_t, uint64_t);
+extern uint64_t arm64_dtb_addr;
+
void putchar(int ch)
{
- /* Nothing for now */
+ if (!arm64_sink)
+ return;
+
+ *arm64_sink = ch;
+
+ if (ch == '\n')
+ *arm64_sink = '\r';
}
void post_verification_setup_arch(void)
{
+ printf("purgatory: booting kernel now\n");
}
void setup_arch(void)
{
+ printf("purgatory: entry=%lx\n", (unsigned long)arm64_kernel_entry);
+ printf("purgatory: dtb=%lx\n", arm64_dtb_addr);
}