[PATCH v2] cmd: exception: unaligned data access on RISC-V
Rick Chen
rickchen36 at gmail.com
Fri Aug 7 10:33:20 CEST 2020
> From: Heinrich Schuchardt [mailto:xypron.glpk at gmx.de]
> Sent: Thursday, August 06, 2020 6:35 PM
> To: Rick Jian-Zhi Chen(陳建志)
> Cc: u-boot at 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 at 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 at 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
More information about the U-Boot
mailing list