cmd/exception: support ebreak exception on RISC-V
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Fri, 9 Apr 2021 10:48:14 +0000 (10:48 +0000)
committerLeo Yu-Chi Liang <ycliang@andestech.com>
Wed, 5 May 2021 08:13:12 +0000 (16:13 +0800)
The ebreak instruction should generate a breakpoint exception.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Rick Chen <rick@andestech.com>
cmd/riscv/exception.c
doc/usage/exception.rst

index 9687cec..7a08061 100644 (file)
@@ -8,6 +8,13 @@
 #include <common.h>
 #include <command.h>
 
+static int do_ebreak(struct cmd_tbl *cmdtp, int flag, int argc,
+                       char *const argv[])
+{
+       asm volatile ("ebreak\n");
+       return CMD_RET_FAILURE;
+}
+
 static int do_unaligned(struct cmd_tbl *cmdtp, int flag, int argc,
                        char *const argv[])
 {
@@ -28,6 +35,8 @@ static int do_undefined(struct cmd_tbl *cmdtp, int flag, int argc,
 }
 
 static struct cmd_tbl cmd_sub[] = {
+       U_BOOT_CMD_MKENT(ebreak, CONFIG_SYS_MAXARGS, 1, do_ebreak,
+                        "", ""),
        U_BOOT_CMD_MKENT(unaligned, CONFIG_SYS_MAXARGS, 1, do_unaligned,
                         "", ""),
        U_BOOT_CMD_MKENT(undefined, CONFIG_SYS_MAXARGS, 1, do_undefined,
@@ -37,6 +46,7 @@ static struct cmd_tbl cmd_sub[] = {
 static char exception_help_text[] =
        "<ex>\n"
        "  The following exceptions are available:\n"
+       "  ebreak    - breakpoint\n"
        "  undefined - illegal instruction\n"
        "  unaligned - load address misaligned\n"
        ;
index db1490f..27df88b 100644 (file)
@@ -31,6 +31,9 @@ type
 
   **RISC-V:**
 
+  ebreak
+    breakpoint exception
+
   unaligned
     load address misaligned