summaryrefslogtreecommitdiff
path: root/platform
diff options
context:
space:
mode:
authorKautuk Consul <kconsul@ventanamicro.com>2022-09-12 13:52:53 +0300
committerAnup Patel <anup@brainfault.org>2022-09-13 15:54:42 +0300
commit7f09fba86e439808e0b40bdf536937c42e1ea2c9 (patch)
treef3197b83a54fb67ee9f6143aca28abb563b8f887 /platform
parent49372f2691a006d5a8d424b5a90be23539b06067 (diff)
downloadopensbi-7f09fba86e439808e0b40bdf536937c42e1ea2c9.tar.xz
lib: utils/serial: add semihosting support
We add RISC-V semihosting based serial console for JTAG based early debugging. The RISC-V semihosting specification is available at: https://github.com/riscv/riscv-semihosting-spec/blob/main/riscv-semihosting-spec.adoc Signed-off-by: Anup Patel <apatel@ventanamicro.com> Signed-off-by: Kautuk Consul <kconsul@ventanamicro.com> Reviewed-by: Anup Patel <anup@brainfault.org>
Diffstat (limited to 'platform')
-rw-r--r--platform/generic/configs/defconfig1
-rw-r--r--platform/generic/platform.c11
2 files changed, 11 insertions, 1 deletions
diff --git a/platform/generic/configs/defconfig b/platform/generic/configs/defconfig
index e324173..c95b7fa 100644
--- a/platform/generic/configs/defconfig
+++ b/platform/generic/configs/defconfig
@@ -28,3 +28,4 @@ CONFIG_FDT_SERIAL_UART8250=y
CONFIG_FDT_SERIAL_XILINX_UARTLITE=y
CONFIG_FDT_TIMER=y
CONFIG_FDT_TIMER_MTIMER=y
+CONFIG_SERIAL_SEMIHOSTING=y
diff --git a/platform/generic/platform.c b/platform/generic/platform.c
index cc3620f..bf51aba 100644
--- a/platform/generic/platform.c
+++ b/platform/generic/platform.c
@@ -23,6 +23,7 @@
#include <sbi_utils/timer/fdt_timer.h>
#include <sbi_utils/ipi/fdt_ipi.h>
#include <sbi_utils/reset/fdt_reset.h>
+#include <sbi_utils/serial/semihosting.h>
/* List of platform override modules generated at compile time */
extern const struct platform_override *platform_override_modules[];
@@ -242,6 +243,14 @@ static uint64_t generic_pmu_xlate_to_mhpmevent(uint32_t event_idx,
return evt_val;
}
+static int generic_console_init(void)
+{
+ if (semihosting_enabled())
+ return semihosting_init();
+ else
+ return fdt_serial_init();
+}
+
const struct sbi_platform_operations platform_ops = {
.nascent_init = generic_nascent_init,
.early_init = generic_early_init,
@@ -249,7 +258,7 @@ const struct sbi_platform_operations platform_ops = {
.early_exit = generic_early_exit,
.final_exit = generic_final_exit,
.domains_init = generic_domains_init,
- .console_init = fdt_serial_init,
+ .console_init = generic_console_init,
.irqchip_init = fdt_irqchip_init,
.irqchip_exit = fdt_irqchip_exit,
.ipi_init = fdt_ipi_init,