forked from Mirrors/opensbi
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>
This commit is contained in:

committed by
Anup Patel

parent
49372f2691
commit
7f09fba86e
47
include/sbi_utils/serial/semihosting.h
Normal file
47
include/sbi_utils/serial/semihosting.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* SPDX-License-Identifier: BSD-2-Clause
|
||||
*
|
||||
* Copyright (c) 2022 Ventana Micro Systems Inc.
|
||||
*
|
||||
* Authors:
|
||||
* Anup Patel <apatel@ventanamicro.com>
|
||||
* Kautuk Consul <kconsul@ventanamicro.com>
|
||||
*/
|
||||
|
||||
#ifndef __SERIAL_SEMIHOSTING_H__
|
||||
#define __SERIAL_SEMIHOSTING_H__
|
||||
|
||||
#include <sbi/sbi_types.h>
|
||||
|
||||
/**
|
||||
* enum semihosting_open_mode - Numeric file modes for use with semihosting_open()
|
||||
* MODE_READ: 'r'
|
||||
* MODE_BINARY: 'b'
|
||||
* MODE_PLUS: '+'
|
||||
* MODE_WRITE: 'w'
|
||||
* MODE_APPEND: 'a'
|
||||
*
|
||||
* These modes represent the mode string used by fopen(3) in a form which can
|
||||
* be passed to semihosting_open(). These do NOT correspond directly to %O_RDONLY,
|
||||
* %O_CREAT, etc; see fopen(3) for details. In particular, @MODE_PLUS
|
||||
* effectively results in adding %O_RDWR, and @MODE_WRITE will add %O_TRUNC.
|
||||
* For compatibility, @MODE_BINARY should be added when opening non-text files
|
||||
* (such as images).
|
||||
*/
|
||||
enum semihosting_open_mode {
|
||||
MODE_READ = 0x0,
|
||||
MODE_BINARY = 0x1,
|
||||
MODE_PLUS = 0x2,
|
||||
MODE_WRITE = 0x4,
|
||||
MODE_APPEND = 0x8,
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SERIAL_SEMIHOSTING
|
||||
int semihosting_init(void);
|
||||
int semihosting_enabled(void);
|
||||
#else
|
||||
static inline int semihosting_init(void) { return SBI_ENODEV; }
|
||||
static inline int semihosting_enabled(void) { return 0; }
|
||||
#endif
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user