diff options
author | Kautuk Consul <kconsul@ventanamicro.com> | 2022-09-12 13:52:53 +0300 |
---|---|---|
committer | Anup Patel <anup@brainfault.org> | 2022-09-13 15:54:42 +0300 |
commit | 7f09fba86e439808e0b40bdf536937c42e1ea2c9 (patch) | |
tree | f3197b83a54fb67ee9f6143aca28abb563b8f887 /platform/generic | |
parent | 49372f2691a006d5a8d424b5a90be23539b06067 (diff) | |
download | opensbi-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/generic')
-rw-r--r-- | platform/generic/configs/defconfig | 1 | ||||
-rw-r--r-- | platform/generic/platform.c | 11 |
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, |