summaryrefslogtreecommitdiffstats
path: root/purgatory
diff options
context:
space:
mode:
authorMatthias Brugger <mbrugger@suse.com>2020-10-02 15:42:48 +0200
committerSimon Horman <horms@verge.net.au>2020-10-23 11:42:56 +0200
commit1e9de8e72054d255d6e90304aab38750a82199ee (patch)
tree4b4dc16e7789dcfb1405c0fd3214d817d1a96849 /purgatory
parent70cca8228435e9cbd88c012f22b9c917a39b1535 (diff)
downloadkexec-tools-1e9de8e72054d255d6e90304aab38750a82199ee.tar.gz
arm64: Add purgatory printing
Add option to allow purgatory printing on arm64 hardware by passing the console name which should be used. Based on a patch by Geoff Levand. Signed-off-by: Matthias Brugger <mbrugger@suse.com> Acked-by: Bhupesh Sharma <bhsharma@redhat.com> Signed-off-by: Simon Horman <horms@verge.net.au>
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 fe50fcf8..b4d8578e 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);
}