* [PATCH v2] cmd: exception: unaligned data access on RISC-V
@ 2020-08-06 10:34 Heinrich Schuchardt
[not found] ` <752D002CFF5D0F4FA35C0100F1D73F3FA4732C98@ATCPCS16.andestech.com>
0 siblings, 1 reply; 4+ messages in thread
From: Heinrich Schuchardt @ 2020-08-06 10:34 UTC (permalink / raw)
To: u-boot
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(-)
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
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2] cmd: exception: unaligned data access on RISC-V
[not found] ` <752D002CFF5D0F4FA35C0100F1D73F3FA4732C98@ATCPCS16.andestech.com>
@ 2020-08-07 8:33 ` Rick Chen
2020-08-07 9:39 ` Heinrich Schuchardt
0 siblings, 1 reply; 4+ messages in thread
From: Rick Chen @ 2020-08-07 8:33 UTC (permalink / raw)
To: u-boot
> 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@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
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] cmd: exception: unaligned data access on RISC-V
2020-08-07 8:33 ` Rick Chen
@ 2020-08-07 9:39 ` Heinrich Schuchardt
2020-08-07 10:41 ` Rick Chen
0 siblings, 1 reply; 4+ messages in thread
From: Heinrich Schuchardt @ 2020-08-07 9:39 UTC (permalink / raw)
To: u-boot
On 07.08.20 10:33, Rick Chen wrote:
>> 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@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>
Do you want CONFIG_CMD_EXCEPTION to be enabled in one of the QEMU
configs to make it testable on Gitlab CI?
As QEMU does not create exceptions for unaligned access only a test for
the "exception undefined" command makes sense to me.
Patch "riscv: additional crash information" influences the output we
see. So that patch should be merged before we add any test.
Best regards
Heinrich
>
>> 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
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] cmd: exception: unaligned data access on RISC-V
2020-08-07 9:39 ` Heinrich Schuchardt
@ 2020-08-07 10:41 ` Rick Chen
0 siblings, 0 replies; 4+ messages in thread
From: Rick Chen @ 2020-08-07 10:41 UTC (permalink / raw)
To: u-boot
> On 07.08.20 10:33, Rick Chen wrote:
> >> 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@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>
>
> Do you want CONFIG_CMD_EXCEPTION to be enabled in one of the QEMU
> configs to make it testable on Gitlab CI?
No. Let's keep as it is.
>
> As QEMU does not create exceptions for unaligned access only a test for
> the "exception undefined" command makes sense to me.
>
> Patch "riscv: additional crash information" influences the output we
> see. So that patch should be merged before we add any test.
OK.
Thanks,
Rick
>
> Best regards
>
> Heinrich
>
> >
> >> 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
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2020-08-07 10:41 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-06 10:34 [PATCH v2] cmd: exception: unaligned data access on RISC-V Heinrich Schuchardt
[not found] ` <752D002CFF5D0F4FA35C0100F1D73F3FA4732C98@ATCPCS16.andestech.com>
2020-08-07 8:33 ` Rick Chen
2020-08-07 9:39 ` Heinrich Schuchardt
2020-08-07 10:41 ` Rick Chen
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.