Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:47

0001 /* SPDX-License-Identifier: BSD-2-Clause */
0002 
0003 /*
0004  *  COPYRIGHT (c) 2014.
0005  *  On-Line Applications Research Corporation (OAR).
0006  *
0007  * Redistribution and use in source and binary forms, with or without
0008  * modification, are permitted provided that the following conditions
0009  * are met:
0010  * 1. Redistributions of source code must retain the above copyright
0011  *    notice, this list of conditions and the following disclaimer.
0012  * 2. Redistributions in binary form must reproduce the above copyright
0013  *    notice, this list of conditions and the following disclaimer in the
0014  *    documentation and/or other materials provided with the distribution.
0015  *
0016  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
0017  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0018  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0019  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
0020  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
0021  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
0022  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
0023  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
0024  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
0025  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
0026  * POSSIBILITY OF SUCH DAMAGE.
0027  */
0028 
0029 #ifdef HAVE_CONFIG_H
0030 #include "config.h"
0031 #endif
0032 
0033 #define CONFIGURE_INIT
0034 #include "system.h"
0035 
0036 const char rtems_test_name[] = "SP INTERRUPT ERROR 1";
0037 
0038 rtems_task Init(
0039   rtems_task_argument argument
0040 )
0041 {
0042   TEST_BEGIN();
0043   #if (CPU_SIMPLE_VECTORED_INTERRUPTS == FALSE)
0044     puts(
0045       "TA1 - rtems_interrupt_catch - "
0046       "bad handler RTEMS_INVALID_ADDRESS -- SKIPPED"
0047     );
0048     puts(
0049       "TA1 - rtems_interrupt_catch - "
0050       "old isr RTEMS_INVALID_ADDRESS - SKIPPED" );
0051   #else
0052     rtems_status_code status;
0053 
0054     rtems_isr_entry   old_service_routine;
0055       status = rtems_interrupt_catch(
0056         Service_routine,
0057         CPU_INTERRUPT_MAXIMUM_VECTOR_NUMBER + 1,
0058         &old_service_routine
0059       );
0060       fatal_directive_status(
0061         status,
0062         RTEMS_INVALID_NUMBER,
0063         "rtems_interrupt_catch with invalid vector"
0064       );
0065       puts( "TA1 - rtems_interrupt_catch - RTEMS_INVALID_NUMBER" );
0066 
0067       status = rtems_interrupt_catch( NULL, 3, &old_service_routine );
0068       fatal_directive_status(
0069         status,
0070         RTEMS_INVALID_ADDRESS,
0071         "rtems_interrupt_catch with invalid handler"
0072       );
0073       puts( "TA1 - rtems_interrupt_catch - bad handler RTEMS_INVALID_ADDRESS" );
0074 
0075       status = rtems_interrupt_catch( Service_routine, 3, NULL );
0076       fatal_directive_status(
0077         status,
0078         RTEMS_INVALID_ADDRESS,
0079         "rtems_interrupt_catch with invalid old isr pointer"
0080       );
0081       puts( "TA1 - rtems_interrupt_catch - old isr RTEMS_INVALID_ADDRESS" );
0082   #endif
0083 
0084   TEST_END();
0085 }