Mercurial > flash_v2
comparison packages/hal/powerpc/ppc40x/current/include/var_intr.h @ 136:a9ac27ec7abc ecos-sw-2000-11-17
Merge from eCos master repository on 2000-11-17-18:24:25-GMT
| author | jlarmour |
|---|---|
| date | Fri, 17 Nov 2000 23:16:43 +0000 |
| parents | d2f49caf9e38 |
| children | 52c99470ec11 |
comparison
equal
deleted
inserted
replaced
| 135:3bc2abeae9ff | 136:a9ac27ec7abc |
|---|---|
| 32 //####COPYRIGHTEND#### | 32 //####COPYRIGHTEND#### |
| 33 //============================================================================= | 33 //============================================================================= |
| 34 //#####DESCRIPTIONBEGIN#### | 34 //#####DESCRIPTIONBEGIN#### |
| 35 // | 35 // |
| 36 // Author(s): nickg | 36 // Author(s): nickg |
| 37 // Contributors:nickg, jskov, jlarmour, hmt | 37 // Contributors:nickg, jskov, jlarmour, hmt, gthomas |
| 38 // Date: 2000-04-02 | 38 // Date: 2000-04-02 |
| 39 // Purpose: Variant interrupt support | 39 // Purpose: Variant interrupt support |
| 40 // Description: The macros defined here provide the HAL APIs for handling | 40 // Description: The macros defined here provide the HAL APIs for handling |
| 41 // interrupts and the clock on the PPC60x variant CPUs. | 41 // interrupts and the clock on the PPC40x variant CPUs. |
| 42 // Usage: Is included via the architecture interrupt header: | 42 // Usage: Is included via the architecture interrupt header: |
| 43 // #include <cyg/hal/hal_intr.h> | 43 // #include <cyg/hal/hal_intr.h> |
| 44 // ... | 44 // ... |
| 45 // | 45 // |
| 46 //####DESCRIPTIONEND#### | 46 //####DESCRIPTIONEND#### |
| 47 // | 47 // |
| 48 //============================================================================= | 48 //============================================================================= |
| 49 | 49 |
| 50 // No builtin interrupt controller in the PPC40x CPUs. | 50 |
| 51 // Special handling for additional exceptions | |
| 52 | |
| 53 #define CYGNUM_HAL_VECTOR_TIMERS 16 // Note: must handle all 3! | |
| 54 #define CYGNUM_HAL_VECTOR_DATA_TLB_MISS 17 | |
| 55 #define CYGNUM_HAL_VECTOR_INSTR_TLB_MISS 18 | |
| 56 #define CYGNUM_HAL_VECTOR_DEBUG 32 | |
| 57 | |
| 58 #define CYGNUM_HAL_VSR_MAX CYGNUM_HAL_VECTOR_DEBUG | |
| 59 | |
| 60 // Special handling for interrupts | |
| 61 | |
| 62 #define CYGHWR_HAL_INTERRUPT_CONTROLLER_ACCESS_DEFINED | |
| 63 | |
| 64 // Additional interrupt sources which are supported by the 40x | |
| 65 #define CYGNUM_HAL_INTERRUPT_CRITICAL 2 | |
| 66 #define CYGNUM_HAL_INTERRUPT_SERIAL_RCV 3 | |
| 67 #define CYGNUM_HAL_INTERRUPT_SERIAL_XMT 4 | |
| 68 #define CYGNUM_HAL_INTERRUPT_JTAG_RCV 5 | |
| 69 #define CYGNUM_HAL_INTERRUPT_JTAG_XMT 6 | |
| 70 #define CYGNUM_HAL_INTERRUPT_DMA0 7 | |
| 71 #define CYGNUM_HAL_INTERRUPT_DMA1 8 | |
| 72 #define CYGNUM_HAL_INTERRUPT_DMA2 9 | |
| 73 #define CYGNUM_HAL_INTERRUPT_DMA3 10 | |
| 74 #define CYGNUM_HAL_INTERRUPT_EXT0 11 | |
| 75 #define CYGNUM_HAL_INTERRUPT_EXT1 12 | |
| 76 #define CYGNUM_HAL_INTERRUPT_EXT2 13 | |
| 77 #define CYGNUM_HAL_INTERRUPT_EXT3 14 | |
| 78 #define CYGNUM_HAL_INTERRUPT_EXT4 15 | |
| 79 #define CYGNUM_HAL_INTERRUPT_VAR_TIMER 16 | |
| 80 #define CYGNUM_HAL_INTERRUPT_FIXED_TIMER 17 | |
| 81 #define CYGNUM_HAL_INTERRUPT_WATCHDOG_TIMER 18 | |
| 82 | |
| 83 #define CYGNUM_HAL_ISR_MAX CYGNUM_HAL_INTERRUPT_WATCHDOG_TIMER | |
| 84 | |
| 85 //-------------------------------------------------------------------------- | |
| 86 // Interrupt controller access | |
| 87 | |
| 88 externC void hal_ppc40x_interrupt_mask(int); | |
| 89 externC void hal_ppc40x_interrupt_unmask(int); | |
| 90 externC void hal_ppc40x_interrupt_acknowledge(int); | |
| 91 externC void hal_ppc40x_interrupt_configure(int, int, int); | |
| 92 externC void hal_ppc40x_interrupt_set_level(int, int); | |
| 93 | |
| 94 #define HAL_INTERRUPT_MASK( _vector_ ) \ | |
| 95 hal_ppc40x_interrupt_mask( _vector_ ) | |
| 96 #define HAL_INTERRUPT_UNMASK( _vector_ ) \ | |
| 97 hal_ppc40x_interrupt_unmask( _vector_ ) | |
| 98 #define HAL_INTERRUPT_ACKNOWLEDGE( _vector_ ) \ | |
| 99 hal_ppc40x_interrupt_acknowledge( _vector_ ) | |
| 100 #define HAL_INTERRUPT_CONFIGURE( _vector_, _level_, _up_ ) \ | |
| 101 hal_ppc40x_interrupt_configure( _vector_, _level_, _up_ ) | |
| 102 #define HAL_INTERRUPT_SET_LEVEL( _vector_, _level_ ) \ | |
| 103 hal_ppc40x_interrupt_set_level( _vector_, _level_ ) | |
| 104 | |
| 105 //-------------------------------------------------------------------------- | |
| 106 // Clock control | |
| 107 | |
| 108 externC void hal_ppc40x_clock_initialize(cyg_uint32); | |
| 109 externC void hal_ppc40x_clock_read(cyg_uint32 *); | |
| 110 externC void hal_ppc40x_clock_reset(cyg_uint32, cyg_uint32); | |
| 111 externC void hal_ppc40x_delay_us(int); | |
| 112 | |
| 113 #define CYGHWR_HAL_CLOCK_DEFINED | |
| 114 #define HAL_CLOCK_INITIALIZE( _period_ ) hal_ppc40x_clock_initialize( _period_ ) | |
| 115 #define HAL_CLOCK_RESET( _vec_, _period_ ) hal_ppc40x_clock_reset( _vec_, _period_ ) | |
| 116 #define HAL_CLOCK_READ( _pvalue_ ) hal_ppc40x_clock_read( _pvalue_ ) | |
| 117 #ifdef CYGVAR_KERNEL_COUNTERS_CLOCK_LATENCY | |
| 118 #define HAL_CLOCK_LATENCY( _pvalue_ ) HAL_CLOCK_READ( (cyg_uint32 *)_pvalue_ ) | |
| 119 #endif | |
| 120 | |
| 121 #define HAL_DELAY_US(n) hal_ppc40x_delay_us(n) | |
| 122 #define CYGNUM_HAL_INTERRUPT_RTC CYGNUM_HAL_INTERRUPT_VAR_TIMER | |
| 123 | |
| 124 //----------------------------------------------------------------------------- | |
| 125 // Symbols used by assembly code | |
| 126 #define CYGARC_VARIANT_DEFS \ | |
| 127 DEFINE(CYGNUM_HAL_VECTOR_TIMERS, CYGNUM_HAL_VECTOR_TIMERS); \ | |
| 128 DEFINE(CYGNUM_HAL_INTERRUPT_VAR_TIMER,CYGNUM_HAL_INTERRUPT_VAR_TIMER); | |
| 51 | 129 |
| 52 //----------------------------------------------------------------------------- | 130 //----------------------------------------------------------------------------- |
| 53 #endif // ifndef CYGONCE_VAR_INTR_H | 131 #endif // ifndef CYGONCE_VAR_INTR_H |
| 54 // End of var_intr.h | 132 // End of var_intr.h |
