
From: Heinrich Schuchardt [mailto:xypron.glpk@gmx.de] Sent: Thursday, August 06, 2020 6:35 PM To: Rick Jian-Zhi Chen(陳建志) Cc: u-boot@lists.denx.de; Leo Yu-Chi Liang(梁育齊); Heinrich Schuchardt Subject: [PATCH v2] cmd: exception: unaligned data access on RISC-V
The command 'exception' can be used to test the handling of exceptions.
Currently the exception command only allows to create an illegal instruction exception on RISC-V.
Provide a sub-command 'exception unaligned' to cause a misaligned load address exception.
Adjust the online help for 'exception undefined'.
Signed-off-by: Heinrich Schuchardt xypron.glpk@gmx.de
v2: If unaligned access is support, print success message.
cmd/riscv/exception.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
WARNING: Possible new command - make sure you add a test #142: FILE: cmd/riscv/exception.c:11:
Other than that, Reviewed-by: Rick Chen rick@andestech.com
diff --git a/cmd/riscv/exception.c b/cmd/riscv/exception.c index 3c8dbbec0e..9687cec812 100644 --- a/cmd/riscv/exception.c +++ b/cmd/riscv/exception.c @@ -8,6 +8,18 @@ #include <common.h> #include <command.h>
+static int do_unaligned(struct cmd_tbl *cmdtp, int flag, int argc,
char *const argv[])
+{
asm volatile (
"auipc a1, 0\n"
"ori a1, a1, 3\n"
"lw a2, (0)(a1)\n"
);
printf("The system supports unaligned access.\n");
return CMD_RET_SUCCESS;
+}
static int do_undefined(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { @@ -16,6 +28,8 @@ static int do_undefined(struct cmd_tbl *cmdtp, int flag, int argc, }
static struct cmd_tbl cmd_sub[] = {
U_BOOT_CMD_MKENT(unaligned, CONFIG_SYS_MAXARGS, 1, do_unaligned,
"", ""), U_BOOT_CMD_MKENT(undefined, CONFIG_SYS_MAXARGS, 1, do_undefined, "", ""),
}; @@ -23,7 +37,8 @@ static struct cmd_tbl cmd_sub[] = { static char exception_help_text[] = "<ex>\n" " The following exceptions are available:\n"
" undefined - undefined instruction\n"
" undefined - illegal instruction\n"
" unaligned - load address misaligned\n" ;
#include <exception.h>
2.27.0