[PATCH] sptests/spfatal26: Use an illegal instruction

Gedare Bloom gedare at rtems.org
Thu Jul 19 13:49:44 UTC 2018


For now we don't need to generalize this approach or make any kind of
facility like this available outside of testing.

(FYI: 0 is a "nop" on some architectures)

Gedare

On Thu, Jul 19, 2018 at 9:37 AM, Sebastian Huber
<sebastian.huber at embedded-brains.de> wrote:
> I thought about adding a _CPU_Illegal_instruction() function to
> <rtems/score/cpu.h>. But, do you want such a toxic function in a header file
> or librtemscpu.a? Now it is isolated in the test and can do no harm.
>
> On 19/07/18 15:35, Joel Sherrill wrote:
>>
>> This looks like a good approach. If 0 is a valid instruction on
>> some architecture, we can add a conditional.
>>
>> On Thu, Jul 19, 2018 at 5:55 AM, Sebastian Huber
>> <sebastian.huber at embedded-brains.de
>> <mailto:sebastian.huber at embedded-brains.de>> wrote:
>>
>>     On some architectures/simulators it is difficult to provoke an
>>     exception with misaligned or illegal data loads.  Use an illegal
>>     instruction instead.
>>
>>     Update #3433.
>>     ---
>>      testsuites/sptests/spfatal26/init.c | 10 +++++++++-
>>      1 file changed, 9 insertions(+), 1 deletion(-)
>>
>>     diff --git a/testsuites/sptests/spfatal26/init.c
>>     b/testsuites/sptests/spfatal26/init.c
>>     index 1848659d6a..7d635f3b84 100644
>>     --- a/testsuites/sptests/spfatal26/init.c
>>     +++ b/testsuites/sptests/spfatal26/init.c
>>     @@ -1,5 +1,5 @@
>>      /*
>>     - * Copyright (c) 2012 embedded brains GmbH.  All rights reserved.
>>     + * Copyright (c) 2012, 2018 embedded brains GmbH.  All rights
>>     reserved.
>>       *
>>       *  embedded brains GmbH
>>       *  Obere Lagerstr. 30
>>     @@ -24,6 +24,13 @@
>>
>>      const char rtems_test_name[] = "SPFATAL 26";
>>
>>     +static void provoke_illegal_instruction_exception( void )
>>     +{
>>     +#ifdef __riscv
>>     +  __asm__ volatile (".word 0");
>>     +#endif
>>     +}
>>     +
>>      static void provoke_aligment_or_data_access_exception( void )
>>      {
>>        uintptr_t one = 1;
>>     @@ -53,6 +60,7 @@ static void Init( rtems_task_argument arg )
>>      {
>>        TEST_BEGIN();
>>
>>     +  provoke_illegal_instruction_exception();
>>        provoke_aligment_or_data_access_exception();
>>
>>        rtems_test_assert( 0 );
>>     --     2.13.7
>>
>>     _______________________________________________
>>     devel mailing list
>>     devel at rtems.org <mailto:devel at rtems.org>
>>     http://lists.rtems.org/mailman/listinfo/devel
>>     <http://lists.rtems.org/mailman/listinfo/devel>
>>
>>
>
> --
> Sebastian Huber, embedded brains GmbH
>
> Address : Dornierstr. 4, D-82178 Puchheim, Germany
> Phone   : +49 89 189 47 41-16
> Fax     : +49 89 189 47 41-09
> E-Mail  : sebastian.huber at embedded-brains.de
> PGP     : Public key available on request.
>
> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel



More information about the devel mailing list