summaryrefslogtreecommitdiff
path: root/ecos/packages/hal/sh/sh2/current/include/mod_regs_intc.h
blob: 63025372ae93afc37cced0c62a37ffe37a6d583a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
//=============================================================================
//
//      mod_regs_intc.h
//
//      INTC (interrupt controller) Module register definitions
//
//=============================================================================
// ####ECOSGPLCOPYRIGHTBEGIN####                                            
// -------------------------------------------                              
// This file is part of eCos, the Embedded Configurable Operating System.   
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
//
// eCos is free software; you can redistribute it and/or modify it under    
// the terms of the GNU General Public License as published by the Free     
// Software Foundation; either version 2 or (at your option) any later      
// version.                                                                 
//
// eCos is distributed in the hope that it will be useful, but WITHOUT      
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
// for more details.                                                        
//
// You should have received a copy of the GNU General Public License        
// along with eCos; if not, write to the Free Software Foundation, Inc.,    
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.            
//
// As a special exception, if other files instantiate templates or use      
// macros or inline functions from this file, or you compile this file      
// and link it with other works to produce a work based on this file,       
// this file does not by itself cause the resulting work to be covered by   
// the GNU General Public License. However the source code for this file    
// must still be made available in accordance with section (3) of the GNU   
// General Public License v2.                                               
//
// This exception does not invalidate any other reasons why a work based    
// on this file might be covered by the GNU General Public License.         
// -------------------------------------------                              
// ####ECOSGPLCOPYRIGHTEND####                                              
//=============================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s):   jskov
// Contributors:jskov
// Date:        2002-01-15
//              
//####DESCRIPTIONEND####
//
//=============================================================================

// NOTE: This'll need restructuring as other variants are added. Type 1 should
// be fewest common registers.

//--------------------------------------------------------------------------
// Interrupt registers, module type 1
#define CYGARC_REG_ICR                    0xfffffee0
#define CYGARC_REG_IRQCSR                 0xfffffee8
#define CYGARC_REG_IPRA                   0xfffffee2
#define CYGARC_REG_IPRB                   0xfffffe60
#define CYGARC_REG_IPRC                   0xfffffee6
#define CYGARC_REG_IPRD                   0xfffffe40
#define CYGARC_REG_IPRE                   0xfffffec0

#define CYGARC_REG_VCRA                   0xfffffe62
#define CYGARC_REG_VCRB                   0xfffffe64
#define CYGARC_REG_VCRC                   0xfffffe66
#define CYGARC_REG_VCRD                   0xfffffe68
#define CYGARC_REG_VCRE                   0xfffffe42
#define CYGARC_REG_VCRF                   0xfffffe44
#define CYGARC_REG_VCRG                   0xfffffe46
#define CYGARC_REG_VCRH                   0xfffffe48
#define CYGARC_REG_VCRI                   0xfffffe4a
#define CYGARC_REG_VCRJ                   0xfffffe4c
#define CYGARC_REG_VCRK                   0xfffffe4e
#define CYGARC_REG_VCRL                   0xfffffe50
#define CYGARC_REG_VCRM                   0xfffffe52
#define CYGARC_REG_VCRN                   0xfffffe54
#define CYGARC_REG_VCRO                   0xfffffe56
#define CYGARC_REG_VCRP                   0xfffffec2
#define CYGARC_REG_VCRQ                   0xfffffec4
#define CYGARC_REG_VCRR                   0xfffffec6
#define CYGARC_REG_VCRS                   0xfffffec8
#define CYGARC_REG_VCRT                   0xfffffeca
#define CYGARC_REG_VCRU                   0xfffffecc
#define CYGARC_REG_VCRWDT                 0xfffffee4
#define CYGARC_REG_VCRDMA0                0xffffffa0 // 32 bit
#define CYGARC_REG_VCRDMA1                0xffffffa8 // 32 bit

#define CYGARC_REG_ICR_NMIL               0x8000
#define CYGARC_REG_ICR_NMIE               0x0100
#define CYGARC_REG_ICR_EXIMD              0x0002
#define CYGARC_REG_ICR_VECMD              0x0001

#define CYGARC_REG_IPRA_DMAC_MASK         0x0f00
#define CYGARC_REG_IPRA_DMAC_PRI1         0x0100
#define CYGARC_REG_IPRA_WDT_MASK          0x00f0
#define CYGARC_REG_IPRA_WDT_PRI1          0x0010

#define CYGARC_REG_IPRB_EDMAC_MASK        0xf000
#define CYGARC_REG_IPRB_EDMAC_PRI1        0x1000
#define CYGARC_REG_IPRB_FRT_MASK          0x0f00
#define CYGARC_REG_IPRB_FRT_PRI1          0x0100

#define CYGARC_REG_IPRC_IRQ3_MASK         0xf000
#define CYGARC_REG_IPRC_IRQ3_PRI1         0x1000
#define CYGARC_REG_IPRC_IRQ2_MASK         0x0f00
#define CYGARC_REG_IPRC_IRQ2_PRI1         0x0100
#define CYGARC_REG_IPRC_IRQ1_MASK         0x00f0
#define CYGARC_REG_IPRC_IRQ1_PRI1         0x0010
#define CYGARC_REG_IPRC_IRQ0_MASK         0x000f
#define CYGARC_REG_IPRC_IRQ0_PRI1         0x0001

#define CYGARC_REG_IPRD_TPU0_MASK         0xf000
#define CYGARC_REG_IPRD_TPU0_PRI1         0x1000
#define CYGARC_REG_IPRD_TPU1_MASK         0x0f00
#define CYGARC_REG_IPRD_TPU1_PRI1         0x0100
#define CYGARC_REG_IPRD_TPU2_MASK         0x00f0
#define CYGARC_REG_IPRD_TPU2_PRI1         0x0010
#define CYGARC_REG_IPRD_SCIF1_MASK        0x000f
#define CYGARC_REG_IPRD_SCIF1_PRI1        0x0001

#define CYGARC_REG_IPRE_SCIF2_MASK        0xf000
#define CYGARC_REG_IPRE_SCIF2_PRI1        0x1000
#define CYGARC_REG_IPRE_SIO0_MASK         0x0f00
#define CYGARC_REG_IPRE_SIO0_PRI1         0x0100
#define CYGARC_REG_IPRE_SIO1_MASK         0x00f0
#define CYGARC_REG_IPRE_SIO1_PRI1         0x0010
#define CYGARC_REG_IPRE_SIO2_MASK         0x000f
#define CYGARC_REG_IPRE_SIO2_PRI1         0x0001

// The (initial) IRQ mode is controlled by configuration.
#ifdef CYGHWR_HAL_SH_IRQ_USE_IRQLVL
# define CYGARC_REG_ICR_INIT (CYGARC_REG_ICR_EXIMD)
#else
# define CYGARC_REG_ICR_INIT 0x0000
#endif

#define CYGARC_REG_IRQCSR_IRQ_LOWLEVEL    0
#define CYGARC_REG_IRQCSR_IRQ_RISING      1
#define CYGARC_REG_IRQCSR_IRQ_FALLING     2
#define CYGARC_REG_IRQCSR_IRQ_BOTHEDGES   3
#define CYGARC_REG_IRQCSR_IRQ_mask        3

#define CYGARC_REG_IRQCSR_IRQ3_mask       0xc000
#define CYGARC_REG_IRQCSR_IRQ3_shift      14
#define CYGARC_REG_IRQCSR_IRQ2_mask       0x3000
#define CYGARC_REG_IRQCSR_IRQ2_shift      12
#define CYGARC_REG_IRQCSR_IRQ1_mask       0x0c00
#define CYGARC_REG_IRQCSR_IRQ1_shift      10
#define CYGARC_REG_IRQCSR_IRQ0_mask       0x0300
#define CYGARC_REG_IRQCSR_IRQ0_shift      8

#define CYGARC_REG_IRQCSR_IRL3PS          0x0080
#define CYGARC_REG_IRQCSR_IRL2PS          0x0040
#define CYGARC_REG_IRQCSR_IRL1PS          0x0020
#define CYGARC_REG_IRQCSR_IRL0PS          0x0010

#define CYGARC_REG_IRQCSR_IRQ3F           0x0008
#define CYGARC_REG_IRQCSR_IRQ2F           0x0004
#define CYGARC_REG_IRQCSR_IRQ1F           0x0002
#define CYGARC_REG_IRQCSR_IRQ0F           0x0001