RTEMS
tm27.h
Go to the documentation of this file.
1 
7 /*
8  * COPYRIGHT (c) 2006.
9  * Aeroflex Gaisler AB.
10  *
11  * The license and distribution terms for this file may be
12  * found in the file LICENSE in this distribution or at
13  * http://www.rtems.org/license/LICENSE.
14  */
15 
16 #ifndef _RTEMS_TMTEST27
17 #error "This is an RTEMS internal file you must not include directly."
18 #endif
19 
20 #ifndef __tm27_h
21 #define __tm27_h
22 
23 /*
24  * Define the interrupt mechanism for Time Test 27
25  *
26  * NOTE: Since the interrupt code for the SPARC supports both synchronous
27  * and asynchronous trap handlers, support for testing with both
28  * is included.
29  */
30 
31 #define SIS_USE_SYNCHRONOUS_TRAP 0
32 
33 /*
34  * The synchronous trap is an arbitrarily chosen software trap.
35  */
36 
37 #if (SIS_USE_SYNCHRONOUS_TRAP == 1)
38 
39 #define TEST_VECTOR SPARC_SYNCHRONOUS_TRAP( 0x90 )
40 
41 #define MUST_WAIT_FOR_INTERRUPT 1
42 
43 #define Install_tm27_vector( handler ) \
44  set_vector( (handler), TEST_VECTOR, 1 );
45 
46 #define Cause_tm27_intr() \
47  __asm__ volatile( "ta 0x10; nop " );
48 
49 #define Clear_tm27_intr() /* empty */
50 
51 #define Lower_tm27_intr() /* empty */
52 
53 /*
54  * The asynchronous trap is an arbitrarily chosen ERC32 interrupt source.
55  */
56 
57 #else /* use a regular asynchronous trap */
58 
59 #define TEST_INTERRUPT_SOURCE LEON_INTERRUPT_EXTERNAL_1
60 #define TEST_VECTOR LEON_TRAP_TYPE( TEST_INTERRUPT_SOURCE )
61 #define TEST_INTERRUPT_SOURCE2 LEON_INTERRUPT_EXTERNAL_1+1
62 #define TEST_VECTOR2 LEON_TRAP_TYPE( TEST_INTERRUPT_SOURCE2 )
63 #define MUST_WAIT_FOR_INTERRUPT 1
64 
65 #define Install_tm27_vector( handler ) \
66  set_vector( (handler), TEST_VECTOR, 1 ); \
67  set_vector( (handler), TEST_VECTOR2, 1 );
68 
69 #define Cause_tm27_intr() \
70  do { \
71  LEON_Force_interrupt( TEST_INTERRUPT_SOURCE+(Interrupt_nest>>1)); \
72  nop(); \
73  nop(); \
74  nop(); \
75  } while (0)
76 
77 #define Clear_tm27_intr() \
78  LEON_Clear_interrupt( TEST_INTERRUPT_SOURCE )
79 
80 #define Lower_tm27_intr() /* empty */
81 
82 #endif
83 
84 #endif