OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [ecos-3.0/] [packages/] [hal/] [powerpc/] [mpc8xx/] [current/] [include/] [var_regs.h] - Blame information for rev 786

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
#ifndef CYGONCE_HAL_VAR_REGS_H
2
#define CYGONCE_HAL_VAR_REGS_H
3
 
4
//==========================================================================
5
//
6
//      var_regs.h
7
//
8
//      PowerPC 8xx variant CPU definitions
9
//
10
//==========================================================================
11
// ####ECOSGPLCOPYRIGHTBEGIN####                                            
12
// -------------------------------------------                              
13
// This file is part of eCos, the Embedded Configurable Operating System.   
14
// Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
15
//
16
// eCos is free software; you can redistribute it and/or modify it under    
17
// the terms of the GNU General Public License as published by the Free     
18
// Software Foundation; either version 2 or (at your option) any later      
19
// version.                                                                 
20
//
21
// eCos is distributed in the hope that it will be useful, but WITHOUT      
22
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or    
23
// FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License    
24
// for more details.                                                        
25
//
26
// You should have received a copy of the GNU General Public License        
27
// along with eCos; if not, write to the Free Software Foundation, Inc.,    
28
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.            
29
//
30
// As a special exception, if other files instantiate templates or use      
31
// macros or inline functions from this file, or you compile this file      
32
// and link it with other works to produce a work based on this file,       
33
// this file does not by itself cause the resulting work to be covered by   
34
// the GNU General Public License. However the source code for this file    
35
// must still be made available in accordance with section (3) of the GNU   
36
// General Public License v2.                                               
37
//
38
// This exception does not invalidate any other reasons why a work based    
39
// on this file might be covered by the GNU General Public License.         
40
// -------------------------------------------                              
41
// ####ECOSGPLCOPYRIGHTEND####                                              
42
//==========================================================================
43
//#####DESCRIPTIONBEGIN####
44
//
45
// Author(s):    jskov
46
// Contributors: jskov, gthomas
47
// Date:         2000-02-04
48
// Purpose:      Provide MPC8xx register definitions
49
// Description:  Provide MPC8xx register definitions
50
//               The short difinitions (sans CYGARC_REG_) are exported only
51
//               if CYGARC_HAL_COMMON_EXPORT_CPU_MACROS is defined.
52
// Usage:        Included via the acrhitecture register header:
53
//               #include <cyg/hal/ppc_regs.h>
54
//               ...
55
//              
56
//
57
//####DESCRIPTIONEND####
58
//
59
//==========================================================================
60
 
61
#include <cyg/hal/plf_regs.h>
62
 
63
//--------------------------------------------------------------------------
64
// Instruction cache control.
65
#define CYGARC_REG_IC_CST          560
66
#define CYGARC_REG_IC_ADR          561
67
#define CYGARC_REG_IC_DAT          562
68
 
69
#define CYGARC_REG_IC_CMD_CE       0x02000000      // cache enable
70
#define CYGARC_REG_IC_CMD_CD       0x04000000      // cache disable
71
#define CYGARC_REG_IC_CMD_LL       0x06000000      // load & lock
72
#define CYGARC_REG_IC_CMD_UL       0x08000000      // unlock line
73
#define CYGARC_REG_IC_CMD_UA       0x0a000000      // unlock all
74
#define CYGARC_REG_IC_CMD_IA       0x0c000000      // invalidate all
75
 
76
#define CYGARC_REG_IC_ADR_SETID_SHIFT 4            // set id is bits 21-27
77
#define CYGARC_REG_IC_ADR_WAY0     0x00000000      // select way0
78
#define CYGARC_REG_IC_ADR_WAY1     0x00001000      // select way1
79
 
80
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
81
#define IC_CST          CYGARC_REG_IC_CST
82
#define IC_ADR          CYGARC_REG_IC_ADR
83
#define IC_DAT          CYGARC_REG_IC_DAT
84
 
85
#define IC_CMD_CE       CYGARC_REG_IC_CMD_CE
86
#define IC_CMD_CD       CYGARC_REG_IC_CMD_CD
87
#define IC_CMD_LL       CYGARC_REG_IC_CMD_LL
88
#define IC_CMD_UL       CYGARC_REG_IC_CMD_UL
89
#define IC_CMD_UA       CYGARC_REG_IC_CMD_UA
90
#define IC_CMD_IA       CYGARC_REG_IC_CMD_IA
91
 
92
#define IC_ADR_SETID_SHIFT CYGARC_REG_IC_ADR_SETID_SHIFT
93
#define IC_ADR_WAY0        CYGARC_REG_IC_ADR_WAY0
94
#define IC_ADR_WAY1        CYGARC_REG_IC_ADR_WAY1
95
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
96
 
97
//--------------------------------------------------------------------------
98
// Data cache control.
99
#define CYGARC_REG_DC_CST          568
100
#define CYGARC_REG_DC_ADR          569
101
#define CYGARC_REG_DC_DAT          570
102
 
103
#define CYGARC_REG_DC_CMD_CE       0x02000000      // cache enable
104
#define CYGARC_REG_DC_CMD_CD       0x04000000      // cache disable
105
#define CYGARC_REG_DC_CMD_LL       0x06000000      // lock line
106
#define CYGARC_REG_DC_CMD_UL       0x08000000      // unlock line
107
#define CYGARC_REG_DC_CMD_UA       0x0a000000      // unlock all
108
#define CYGARC_REG_DC_CMD_IA       0x0c000000      // invalidate all
109
#define CYGARC_REG_DC_CMD_FL       0x0e000000      // flush line
110
#define CYGARC_REG_DC_CMD_SW       0x01000000      // set writethrough
111
#define CYGARC_REG_DC_CMD_CW       0x03000000      // clear writethrough
112
#define CYGARC_REG_DC_CMD_SS       0x05000000      // set little endian swap
113
#define CYGARC_REG_DC_CMD_CS       0x07000000      // clear little endian swap
114
 
115
#define CYGARC_REG_DC_ADR_SETID_SHIFT 4            // set id is bits 21-27
116
#define CYGARC_REG_DC_ADR_WAY0     0x00000000      // select way0
117
#define CYGARC_REG_DC_ADR_WAY1     0x00001000      // select way1
118
 
119
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
120
#define DC_CST             CYGARC_REG_DC_CST
121
#define DC_ADR             CYGARC_REG_DC_ADR
122
#define DC_DAT             CYGARC_REG_DC_DAT
123
 
124
#define DC_CMD_CE          CYGARC_REG_DC_CMD_CE
125
#define DC_CMD_CD          CYGARC_REG_DC_CMD_CD
126
#define DC_CMD_LL          CYGARC_REG_DC_CMD_LL
127
#define DC_CMD_UL          CYGARC_REG_DC_CMD_UL
128
#define DC_CMD_UA          CYGARC_REG_DC_CMD_UA
129
#define DC_CMD_IA          CYGARC_REG_DC_CMD_IA
130
#define DC_CMD_FL          CYGARC_REG_DC_CMD_FL
131
#define DC_CMD_SW          CYGARC_REG_DC_CMD_SW
132
#define DC_CMD_CW          CYGARC_REG_DC_CMD_CW
133
#define DC_CMD_SS          CYGARC_REG_DC_CMD_SS
134
#define DC_CMD_CS          CYGARC_REG_DC_CMD_CS
135
 
136
#define DC_ADR_SETID_SHIFT CYGARC_REG_DC_ADR_SETID_SHIFT
137
#define DC_ADR_WAY0        CYGARC_REG_DC_ADR_WAY0
138
#define DC_ADR_WAY1        CYGARC_REG_DC_ADR_WAY1
139
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
140
 
141
//--------------------------------------------------------------------------
142
// MMU control.
143
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
144
#define M_CASID         793             // current address space id register
145
 
146
#define MI_CTR          784             // instruction MMU control
147
#define MI_EPN          787             // instruction MMU effective page num
148
#define MI_TWC          789             // instruction MMU tablewalk count
149
#define MI_RPN          790             // instruction MMU real page num
150
#define MI_DCAM         816             // instruction MMU CAM read
151
#define MI_DRAM0        817             // instruction MMU RAM read 0
152
#define MI_DRAM1        818             // instruction MMU RAM read 1
153
 
154
#define MI_EPN_EPNMASK  0xfffff000      // effective page no mask
155
#define MI_EPN_EV       0x00000200      // entry valid
156
 
157
#define MI_RPN_RPNMASK  0xfffff000      // real page no mask
158
#define MI_RPN_PPRWRW   0x000008f0      // page protection (rw/rw, page valid)
159
#define MI_RPN_LPS      0x0000000C      // large page size
160
#define MI_RPN_SH       0x00000004      // shared page (1 = no ASID cmp)
161
#define MI_RPN_CI       0x00000002      // cache inhibited
162
#define MI_RPN_V        0x00000001      // entry valid
163
 
164
#define MI_TWC_PS8MB    0x0000000c      // page size = 8MB
165
#define MI_TWC_G        0x00000010      // guarded
166
#define MI_TWC_WT       0x00000002      // writethrough
167
#define MI_TWC_V        0x00000001      // entry valid
168
 
169
#define MI_CTR_INDX_SHIFT 8             // the ITLB_INDX starts at bit 23
170
 
171
#define MD_CTR          792             // data MMU control
172
#define MD_EPN          795             // data MMU effective page num
173
#define MD_TWC          797             // data MMU tablewalk count
174
#define MD_RPN          798             // data MMU real page num
175
#define MD_DCAM         824             // data MMU CAM read
176
#define MD_DRAM0        825             // data MMU RAM read 0
177
#define MD_DRAM1        826             // data MMU RAM read 1
178
 
179
#define MD_RPN_CHANGED  0x00000100      // page changed
180
 
181
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
182
 
183
#define CYGARC_REG_MI_CTR         784
184
#define CYGARC_REG_MI_CTR_CIDEF   0x20000000
185
 
186
#define CYGARC_REG_MD_CTR         792
187
#define CYGARC_REG_MD_CTR_CIDEF   0x20000000
188
#define CYGARC_REG_MD_CTR_WTDEF   0x10000000
189
 
190
//--------------------------------------------------------------------------
191
// Internal Memory Map.
192
#define CYGARC_REG_IMMR            638  // internal memory map base register
193
#define CYGARC_REG_IMMR_BASEMASK   0xffff0000 // imm base location mask (rw)
194
#define CYGARC_REG_IMMR_PARTNUM    0x0000ff00 // part number mask (ro)
195
#define CYGARC_REG_IMMR_MASKNUM    0x000000ff // mask number mask (ro)
196
 
197
#ifndef CYGARC_REG_IMM_BASE        // Can be defined by platform
198
#define CYGARC_REG_IMM_BASE        0xfa200000 // the internal memory map base
199
#endif
200
 
201
// CP Microcode Revision Number
202
#define CYGARC_REG_REV_NUM         ((CYGARC_REG_IMM_BASE)+0x3cb0)
203
 
204
// system protection control
205
#define CYGARC_REG_IMM_SYPCR       ((CYGARC_REG_IMM_BASE)+0x004)
206
#define CYGARC_REG_IMM_SYPCR_SWTC_MASK 0xffff0000
207
#define CYGARC_REG_IMM_SYPCR_BMT_MASK  0x0000ff00
208
#define CYGARC_REG_IMM_SYPCR_BME       0x00000080
209
#define CYGARC_REG_IMM_SYPCR_SWF       0x00000008
210
#define CYGARC_REG_IMM_SYPCR_SWE       0x00000004
211
#define CYGARC_REG_IMM_SYPCR_SWRI      0x00000002
212
#define CYGARC_REG_IMM_SYPCR_SWP       0x00000001
213
 
214
// interrupt pend register
215
#define CYGARC_REG_IMM_SIPEND      ((CYGARC_REG_IMM_BASE)+0x010)
216
#define CYGARC_REG_IMM_SIPEND_IRQ0 0x80000000 // irq0 is bit 0...
217
 
218
// interrupt mask
219
#define CYGARC_REG_IMM_SIMASK      ((CYGARC_REG_IMM_BASE)+0x014)
220
#define CYGARC_REG_IMM_SIMASK_IRQ0 0x80000000 // ... irq n is bit n*2
221
 
222
// interrupt edge level mask
223
#define CYGARC_REG_IMM_SIEL        ((CYGARC_REG_IMM_BASE)+0x018)
224
#define CYGARC_REG_IMM_SIEL_IRQ0   0x80000000
225
 
226
// interrupt vector
227
#define CYGARC_REG_IMM_SIVEC       ((CYGARC_REG_IMM_BASE)+0x01c)
228
 
229
// memory controller
230
#define CYGARC_REG_IMM_BR0         ((CYGARC_REG_IMM_BASE)+0x100)
231
#define CYGARC_REG_IMM_OR0         ((CYGARC_REG_IMM_BASE)+0x104)
232
#define CYGARC_REG_IMM_BR1         ((CYGARC_REG_IMM_BASE)+0x108)
233
#define CYGARC_REG_IMM_OR1         ((CYGARC_REG_IMM_BASE)+0x10c)
234
#define CYGARC_REG_IMM_BR2         ((CYGARC_REG_IMM_BASE)+0x110)
235
#define CYGARC_REG_IMM_OR2         ((CYGARC_REG_IMM_BASE)+0x114)
236
#define CYGARC_REG_IMM_BR3         ((CYGARC_REG_IMM_BASE)+0x118)
237
#define CYGARC_REG_IMM_OR3         ((CYGARC_REG_IMM_BASE)+0x11c)
238
#define CYGARC_REG_IMM_BR4         ((CYGARC_REG_IMM_BASE)+0x120)
239
#define CYGARC_REG_IMM_OR4         ((CYGARC_REG_IMM_BASE)+0x124)
240
#define CYGARC_REG_IMM_BR5         ((CYGARC_REG_IMM_BASE)+0x128)
241
#define CYGARC_REG_IMM_OR5         ((CYGARC_REG_IMM_BASE)+0x12c)
242
#define CYGARC_REG_IMM_BR6         ((CYGARC_REG_IMM_BASE)+0x130)
243
#define CYGARC_REG_IMM_OR6         ((CYGARC_REG_IMM_BASE)+0x134)
244
#define CYGARC_REG_IMM_BR7         ((CYGARC_REG_IMM_BASE)+0x138)
245
#define CYGARC_REG_IMM_OR7         ((CYGARC_REG_IMM_BASE)+0x13c)
246
 
247
#define CYGARC_REG_IMM_BR_BA_MASK  0xffff8000 // base address
248
#define CYGARC_REG_IMM_BR_AT_MASK  0x00007000 // address type
249
#define CYGARC_REG_IMM_BR_PS_8     0x00000400 // port size 8 bits
250
#define CYGARC_REG_IMM_BR_PS_16    0x00000800 // port size 16 bits
251
#define CYGARC_REG_IMM_BR_PS_32    0x00000000 // port size 32 bits
252
#define CYGARC_REG_IMM_BR_PARE     0x00000200 // parity enable 
253
#define CYGARC_REG_IMM_BR_WP       0x00000100 // write protect  
254
#define CYGARC_REG_IMM_BR_MS_GPCM  0x00000000 // machine select G.P.C.M
255
#define CYGARC_REG_IMM_BR_MS_UPMA  0x00000080 // machine select U.P.M.A
256
#define CYGARC_REG_IMM_BR_MS_UPMB  0x000000c0 // machine select U.P.M.B
257
#define CYGARC_REG_IMM_BR_V        0x00000001 // valid bit
258
 
259
#define CYGARC_REG_IMM_OR_AM     0xffff8000 // address mask
260
#define CYGARC_REG_IMM_OR_ATM    0x00007000 // address type mask
261
#define CYGARC_REG_IMM_OR_CSNT   0x00000800 // GPCM:chip select negation time
262
#define CYGARC_REG_IMM_OR_SAM    0x00000800 // UPMx:start address multiplex
263
#define CYGARC_REG_IMM_OR_ACS_0  0x00000000 // GPCM:CS output immediately
264
#define CYGARC_REG_IMM_OR_ACS_4  0x00000400 // GPCM:CS output 1/4 clock later
265
#define CYGARC_REG_IMM_OR_ACS_2  0x00000600 // GPCM:CS output 1/2 clock later
266
#define CYGARC_REG_IMM_OR_G5LA   0x00000400 // UPMx:general-purpose line 5 A
267
#define CYGARC_REG_IMM_OR_G5LS   0x00000200 // UPMx:general-purpose line 5 S
268
#define CYGARC_REG_IMM_OR_BI     0x00000100 // burst inhibit
269
#define CYGARC_REG_IMM_OR_SCY_MASK 0x000000f0 // cycle length in clocks
270
#define CYGARC_REG_IMM_OR_SCY_SHIFT 4
271
#define CYGARC_REG_IMM_OR_SETA     0x00000008 // external transfer ack
272
#define CYGARC_REG_IMM_OR_TRLX     0x00000004 // timing relaxed
273
#define CYGARC_REG_IMM_OR_EHTR     0x00000002 // extended hold time on read
274
 
275
// timebase status and control
276
#define CYGARC_REG_IMM_TBSCR       ((CYGARC_REG_IMM_BASE)+0x200) 
277
#define CYGARC_REG_IMM_TBSCR_REFA  0x0080 // reference interrupt status A
278
#define CYGARC_REG_IMM_TBSCR_REFB  0x0040 // reference interrupt status B
279
#define CYGARC_REG_IMM_TBSCR_REFAE 0x0008 // reference interrupt enable A
280
#define CYGARC_REG_IMM_TBSCR_REFBE 0x0004 // reference interrupt enable B
281
#define CYGARC_REG_IMM_TBSCR_TBF   0x0002 // timebase freeze
282
#define CYGARC_REG_IMM_TBSCR_TBE   0x0001 // timebase enable
283
#define CYGARC_REG_IMM_TBSCR_IRQ0  0x8000 // highest interrupt level
284
#define CYGARC_REG_IMM_TBSCR_IRQMASK 0xff00 // irq priority mask
285
 
286
// timebase reference register 0
287
#define CYGARC_REG_IMM_TBREF0      ((CYGARC_REG_IMM_BASE)+0x204)
288
// timebase reference register 1
289
#define CYGARC_REG_IMM_TBREF1      ((CYGARC_REG_IMM_BASE)+0x208)
290
 
291
// real time clock
292
#define CYGARC_REG_IMM_RTCSC       ((CYGARC_REG_IMM_BASE)+0x220)
293
#define CYGARC_REG_IMM_RTCSC_SEC   0x0080 // once per second interrupt
294
#define CYGARC_REG_IMM_RTCSC_ALR   0x0040 // alarm interrupt
295
#define CYGARC_REG_IMM_RTCSC_38K   0x0010 // source select
296
#define CYGARC_REG_IMM_RTCSC_SIE   0x0008 // second interrupt enable
297
#define CYGARC_REG_IMM_RTCSC_ALE   0x0004 // alarm interrupt enable
298
#define CYGARC_REG_IMM_RTCSC_RTF   0x0002 // real time clock freeze
299
#define CYGARC_REG_IMM_RTCSC_RTE   0x0001 // real time clock enable
300
#define CYGARC_REG_IMM_RTCSC_IRQ0  0x8000 // highest interrupt level
301
#define CYGARC_REG_IMM_RTCSC_IRQMASK 0xff00 // irq priority mask
302
 
303
// periodic interrupt status & ctrl
304
#define CYGARC_REG_IMM_PISCR       ((CYGARC_REG_IMM_BASE)+0x240)
305
#define CYGARC_REG_IMM_PISCR_PS    0x0080 // periodic interrupt status
306
#define CYGARC_REG_IMM_PISCR_PIE   0x0004 // periodic interrupt enable
307
#define CYGARC_REG_IMM_PISCR_PITF  0x0002 // periodic interrupt timer freeze
308
#define CYGARC_REG_IMM_PISCR_PTE   0x0001 // periodic timer enable
309
#define CYGARC_REG_IMM_PISCR_IRQ0  0x8000 // highest interrupt level
310
#define CYGARC_REG_IMM_PISCR_IRQMASK 0xff00 // irq priority mask
311
 
312
// periodic interrupt timer count
313
#define CYGARC_REG_IMM_PITC        ((CYGARC_REG_IMM_BASE)+0x244)
314
#define CYGARC_REG_IMM_PITC_COUNT_SHIFT 16 // count is stored in bits 0-15
315
 
316
// system clock control
317
#define CYGARC_REG_IMM_SCCR        ((CYGARC_REG_IMM_BASE)+0x280)
318
#define CYGARC_REG_IMM_SCCR_TBS    0x02000000 // timebase source
319
#define CYGARC_REG_IMM_SCCR_RTDIV  0x01000000 // rtc clock divide
320
#define CYGARC_REG_IMM_SCCR_RTSEL  0x00800000 // rtc clock select
321
 
322
// CPM interrupt vector register
323
#define CYGARC_REG_IMM_CIVR        ((CYGARC_REG_IMM_BASE)+0x930)
324
#define CYGARC_REG_IMM_CIVR_IACK   0x0001 // set this to update register
325
#define CYGARC_REG_IMM_CIVR_VECTOR_SHIFT 11 // vector is at bits 0-4
326
 
327
// CPM interrupt configuration reg
328
#define CYGARC_REG_IMM_CICR        ((CYGARC_REG_IMM_BASE)+0x940)
329
#define CYGARC_REG_IMM_CICR_IEN    0x00000080      // interrupt enable
330
#define CYGARC_REG_IMM_CICR_IRQMASK 0x0000e000     // irq priority mask
331
#define CYGARC_REG_IMM_CICR_IRQ_SHIFT 13
332
 
333
// CPM interrupt in-pending register
334
#define CYGARC_REG_IMM_CIPR        ((CYGARC_REG_IMM_BASE)+0x944)
335
// CPM interrupt mask register
336
#define CYGARC_REG_IMM_CIMR        ((CYGARC_REG_IMM_BASE)+0x948)
337
// CPM interrupt in-service register
338
#define CYGARC_REG_IMM_CISR        ((CYGARC_REG_IMM_BASE)+0x94C)
339
 
340
 
341
#define CYGARC_SIU_PRIORITY_LOW    7 // the lowest irq priority
342
#define CYGARC_SIU_PRIORITY_HIGH   0 // the highest irq priority
343
 
344
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
345
 
346
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
347
 
348
//-----------------------------------------------------------------------------
349
// Development Support.
350
#define CYGARC_REG_DER             149
351
 
352
#define CYGARC_REG_ICTRL           158  // instruction support control reg
353
#define CYGARC_REG_ICTRL_SERSHOW   0x00000000 // serialized, show cycles
354
#define CYGARC_REG_ICTRL_NOSERSHOW 0x00000007 //non-serialized&no show cycles
355
 
356
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
357
#define DER             CYGARC_REG_DER
358
 
359
#define ICTRL           CYGARC_REG_ICTRL
360
#define ICTRL_SERSHOW   CYGARC_REG_ICTRL_SERSHOW
361
#define ICTRL_NOSERSHOW CYGARC_REG_ICTRL_NOSERSHOW
362
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
363
 
364
//-----------------------------------------------------------------------------
365
#endif // ifdef CYGONCE_HAL_VAR_REGS_H
366
// End of var_regs.h

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.