RTEMS 5.2
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 ERC32_BSP_USE_SYNCHRONOUS_TRAP 0
32
33/*
34 * The synchronous trap is an arbitrarily chosen software trap.
35 */
36
37#if (ERC32_BSP_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 ERC32_INTERRUPT_EXTERNAL_1
60#define TEST_INTERRUPT_SOURCE2 (ERC32_INTERRUPT_EXTERNAL_1+1)
61#define TEST_VECTOR ERC32_TRAP_TYPE( TEST_INTERRUPT_SOURCE )
62#define TEST_VECTOR2 ERC32_TRAP_TYPE( TEST_INTERRUPT_SOURCE2 )
63
64#define MUST_WAIT_FOR_INTERRUPT 1
65
66#define Install_tm27_vector( handler ) \
67 set_vector( (handler), TEST_VECTOR, 1 ); \
68 set_vector( (handler), TEST_VECTOR2, 1 );
69
70#define Cause_tm27_intr() \
71 do { \
72 ERC32_Force_interrupt( TEST_INTERRUPT_SOURCE+(Interrupt_nest>>1) ); \
73 nop(); \
74 nop(); \
75 nop(); \
76 } while (0)
77
78#define Clear_tm27_intr() \
79 ERC32_Clear_interrupt( TEST_INTERRUPT_SOURCE )
80
81#define Lower_tm27_intr() /* empty */
82
83#endif
84
85#endif