RTEMS  5.1
tm27.h
Go to the documentation of this file.
1 
5 /*
6  * The license and distribution terms for this file may be
7  * found in the file LICENSE in this distribution or at
8  * http://www.rtems.org/license/LICENSE.
9  */
10 
11 #ifndef _RTEMS_TMTEST27
12 #error "This is an RTEMS internal file you must not include directly."
13 #endif
14 
15 #ifndef __tm27_h
16 #define __tm27_h
17 
18 /*
19  * Define the interrupt mechanism for Time Test 27
20  */
21 
22 #include <bsp/irq.h>
23 
24 #define MUST_WAIT_FOR_INTERRUPT 1
25 
26 #define Install_tm27_vector( handler ) \
27  rtems_interrupt_handler_install( \
28  TX3904_IRQ_TMR0, "benchmark", 0, \
29  (rtems_interrupt_handler)handler, NULL );
30 
31 #define Cause_tm27_intr() \
32  do { \
33  uint32_t _clicks = 20; \
34  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_CCDR, 0x3 ); \
35  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_CPRA, _clicks ); \
36  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_TISR, 0x00 ); \
37  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_ITMR, 0x8001 ); \
38  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_TCR, 0xC0 ); \
39  *((volatile uint32_t*) 0xFFFFC01C) = 0x00000700; \
40  } while(0)
41 
42 #define Clear_tm27_intr() \
43  do { \
44  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_ITMR, 0x0001 ); \
45  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_CCDR, 0x3 ); \
46  TX3904_TIMER_WRITE( TX3904_TIMER0_BASE, TX3904_TIMER_TISR, 0x00 ); \
47  } while(0)
48 
49 #define Lower_tm27_intr() \
50  mips_enable_in_interrupt_mask( 0xff01 );
51 
52 #endif