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

Subversion Repositories openrisc

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

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 786 skrzyp
#ifndef CYGONCE_HAL_PPC_REGS_H
2
#define CYGONCE_HAL_PPC_REGS_H
3
 
4
//==========================================================================
5
//
6
//      ppc_regs.h
7
//
8
//      PowerPC 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, 2007 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
47
// Date:         1999-02-19
48
// Purpose:      Provide PPC register definitions
49
// Description:  Provide PPC register definitions
50
//               The short difinitions (sans CYGARC_REG_) are exported only
51
//               if CYGARC_HAL_COMMON_EXPORT_CPU_MACROS is defined.
52
// Usage:
53
//               #include <cyg/hal/ppc_regs.h>
54
//               ...
55
//              
56
//
57
//####DESCRIPTIONEND####
58
//
59
//==========================================================================
60
 
61
#include <pkgconf/hal.h>
62
 
63
#include <cyg/hal/var_regs.h>
64
 
65
//--------------------------------------------------------------------------
66
// SPR access macros.
67
#define CYGARC_MTSPR(_spr_, _v_) \
68
    asm volatile ("mtspr %0, %1;" :: "I" (_spr_), "r" (_v_));
69
#define CYGARC_MFSPR(_spr_, _v_) \
70
    asm volatile ("mfspr %0, %1;" : "=r" (_v_) : "I" (_spr_));
71
 
72
//--------------------------------------------------------------------------
73
// TB access macros.
74
#define CYGARC_MTTB(_tbr_, _v_) \
75
    asm volatile ("mttb %0, %1;" :: "I" (_tbr_), "r" (_v_));
76
#define CYGARC_MFTB(_tbr_, _v_) \
77
    asm volatile ("mftb %0, %1;" : "=r" (_v_) : "I" (_tbr_));
78
 
79
//--------------------------------------------------------------------------
80
// Generic PowerPC Family Definitions
81
//--------------------------------------------------------------------------
82
 
83
//--------------------------------------------------------------------------
84
// Some SPRs
85
 
86
#define CYGARC_REG_DSISR    18
87
#define CYGARC_REG_DAR      19
88
#define CYGARC_REG_DEC      22
89
#define CYGARC_REG_SRR0     26
90
#define CYGARC_REG_SRR1     27
91
#define CYGARC_REG_SPRG0   272
92
#define CYGARC_REG_SPRG1   273
93
#define CYGARC_REG_SPRG2   274
94
#define CYGARC_REG_SPRG3   275
95
#define CYGARC_REG_PVR     287
96
 
97
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
98
#define DSISR      CYGARC_REG_DSISR
99
#define DAR        CYGARC_REG_DAR
100
#define DEC        CYGARC_REG_DEC
101
#define SRR0       CYGARC_REG_SRR0
102
#define SRR1       CYGARC_REG_SRR1
103
#define SPRG0      CYGARC_REG_SPRG0
104
#define SPRG1      CYGARC_REG_SPRG1
105
#define SPRG2      CYGARC_REG_SPRG2
106
#define SPRG3      CYGARC_REG_SPRG3
107
#define PVR        CYGARC_REG_PVR
108
#endif
109
 
110
//--------------------------------------------------------------------------
111
// MSR bits
112
 
113
#if !defined(CYGHWR_HAL_POWERPC_BOOK_E)
114
 
115
#define CYGARC_REG_MSR_LE       0x00000001   // little-endian mode enable
116
#define CYGARC_REG_MSR_RI       0x00000002   // recoverable exception
117
#define CYGARC_REG_MSR_DR       0x00000010   // data address translation
118
#define CYGARC_REG_MSR_IR       0x00000020   // instruction address translation
119
#define CYGARC_REG_MSR_IP       0x00000040   // exception prefix
120
#define CYGARC_REG_MSR_FE1      0x00000100   // floating-point exception mode 1
121
#define CYGARC_REG_MSR_BE       0x00000200   // branch trace enable
122
#define CYGARC_REG_MSR_SE       0x00000400   // single-step trace enable
123
#define CYGARC_REG_MSR_FE0      0x00000800   // floating-point exception mode 0
124
#define CYGARC_REG_MSR_ME       0x00001000   // machine check enable
125
#define CYGARC_REG_MSR_FP       0x00002000   // floating-point available
126
#define CYGARC_REG_MSR_PR       0x00004000   // privilege level
127
#define CYGARC_REG_MSR_EE       0x00008000   // external interrupt enable
128
#define CYGARC_REG_MSR_ILE      0x00010000   // exception little-endian mode
129
#define CYGARC_REG_MSR_POW      0x00040000   // power management enable
130
 
131
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
132
#define MSR_LE          CYGARC_REG_MSR_LE 
133
#define MSR_RI          CYGARC_REG_MSR_RI 
134
#define MSR_DR          CYGARC_REG_MSR_DR 
135
#define MSR_IR          CYGARC_REG_MSR_IR 
136
#define MSR_IP          CYGARC_REG_MSR_IP 
137
#define MSR_FE1         CYGARC_REG_MSR_FE1
138
#define MSR_BE          CYGARC_REG_MSR_BE 
139
#define MSR_SE          CYGARC_REG_MSR_SE 
140
#define MSR_FE0         CYGARC_REG_MSR_FE0
141
#define MSR_ME          CYGARC_REG_MSR_ME 
142
#define MSR_FP          CYGARC_REG_MSR_FP 
143
#define MSR_PR          CYGARC_REG_MSR_PR 
144
#define MSR_EE          CYGARC_REG_MSR_EE 
145
#define MSR_ILE         CYGARC_REG_MSR_ILE
146
#define MSR_POW         CYGARC_REG_MSR_POW
147
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
148
 
149
#else
150
 
151
// The MSR on BOOK E processors has some bits in common with the AIM
152
// architecture, but also has some differences.
153
 
154
#define CYGARC_REG_MSR_PMM      0x00000004   // performance monitor mark
155
#define CYGARC_REG_MSR_DS       0x00000010   // data address space
156
#define CYGARC_REG_MSR_IS       0x00000020   // instruction address space
157
#define CYGARC_REG_MSR_FE1      0x00000100   // floating-point exception mode 1
158
#define CYGARC_REG_MSR_DE       0x00000200   // debug interrupt enable
159
#define CYGARC_REG_MSR_UBLE     0x00000400   // User BTB lock enable (e
160
#define CYGARC_REG_MSR_FE0      0x00000800   // floating-point exception mode 0
161
#define CYGARC_REG_MSR_ME       0x00001000   // machine check enable
162
#define CYGARC_REG_MSR_FP       0x00002000   // floating-point available
163
#define CYGARC_REG_MSR_PR       0x00004000   // privilege level
164
#define CYGARC_REG_MSR_EE       0x00008000   // external interrupt enable
165
#define CYGARC_REG_MSR_CE       0x00020000   // critical interrupt enable
166
#define CYGARC_REG_MSR_WE       0x00040000   // wait state enable
167
#define CYGARC_REG_MSR_SPE      0x02000000   // SPE enable
168
#define CYGARC_REG_MSR_UCLE     0x04000000   // user cache lock enable
169
 
170
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
171
#define MSR_PMM         CYGARC_REG_MSR_PMM
172
#define MSR_DS          CYGARC_REG_MSR_DS
173
#define MSR_IS          CYGARC_REG_MSR_IS 
174
#define MSR_FE1         CYGARC_REG_MSR_FE1
175
#define MSR_DE          CYGARC_REG_MSR_DE 
176
#define MSR_UBLE        CYGARC_REG_MSR_UBLE
177
#define MSR_FE0         CYGARC_REG_MSR_FE0
178
#define MSR_ME          CYGARC_REG_MSR_ME 
179
#define MSR_FP          CYGARC_REG_MSR_FP 
180
#define MSR_PR          CYGARC_REG_MSR_PR 
181
#define MSR_EE          CYGARC_REG_MSR_EE 
182
#define MSR_CE          CYGARC_REG_MSR_CE 
183
#define MSR_WE          CYGARC_REG_MSR_WE 
184
#define MSR_SPE         CYGARC_REG_MSR_SPE
185
#define MSR_UCLE        CYGARC_REG_MSR_UCLE
186
 
187
// The following bits are not defined by BOOK E processors. However
188
// they are referenced in the architecture HAL. By defining them as
189
// zero we neutralize their effect.
190
#define MSR_RI          0
191
#define MSR_DR          0
192
#define MSR_IR          0
193
 
194
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
195
 
196
#endif
197
 
198
//--------------------------------------------------------------------------
199
// Time Base Registers
200
// READ and WRITE are different addresses on some variants!
201
 
202
#define CYGARC_REG_TBL_W   284
203
#define CYGARC_REG_TBU_W   285
204
 
205
#if !defined(CYGHWR_HAL_POWERPC_BOOK_E)
206
#define CYGARC_REG_TBL_R   268
207
#define CYGARC_REG_TBU_R   269
208
#else
209
#define CYGARC_REG_TBL_R   284
210
#define CYGARC_REG_TBU_R   285
211
#endif
212
 
213
#ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
214
#define TBL_W      CYGARC_REG_TBL_W
215
#define TBU_W      CYGARC_REG_TBU_W
216
#define TBL_R      CYGARC_REG_TBL_R
217
#define TBU_R      CYGARC_REG_TBU_R
218
#endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
219
 
220
#if defined(CYGHWR_HAL_POWERPC_BOOK_E)
221
 
222
#define CYGARC_REG_DECAR    54
223
#define CYGARC_REG_TCR     340
224
#define CYGARC_REG_TSR     336
225
 
226
#define CYGARC_REG_TCR_WP(__x)          ((((__x)&3)<<30)|(((__x)&0x3C)<<15))
227
#define CYGARC_REG_TCR_WRC_NONE         (0<<28)
228
#define CYGARC_REG_TCR_WRC_CHECKSTOP    (1<<28)
229
#define CYGARC_REG_TCR_WRC_RESET        (2<<28)
230
#define CYGARC_REG_TCR_WIE              (1<<27)
231
#define CYGARC_REG_TCR_DIE              (1<<26)
232
#define CYGARC_REG_TCR_FP(__x)          ((((__x)&3)<<24)|(((__x)&0x3C)<<11))
233
#define CYGARC_REG_TCR_FIE              (1<<23)
234
#define CYGARC_REG_TCR_ARE              (1<<22)
235
 
236
 
237
#define CYGARC_REG_TSR_ENW              (1<<31)
238
#define CYGARC_REG_TSR_WIS              (1<<30)
239
#define CYGARC_REG_TSR_WRS_NONE         (0<<28)
240
#define CYGARC_REG_TSR_WRS_CHECKSTOP    (1<<28)
241
#define CYGARC_REG_TSR_WRS_RESET        (2<<28)
242
#define CYGARC_REG_TSR_DIS              (1<<27)
243
#define CYGARC_REG_TSR_FIS              (1<<26)
244
 
245
#endif
246
 
247
//-----------------------------------------------------------------------------
248
// Exception Syndrome Register
249
 
250
#if defined(CYGHWR_HAL_POWERPC_BOOK_E)
251
 
252
#define CYGARC_REG_ESR          62
253
 
254
#define CYGARC_REG_ESR_PIL      (1<<27)
255
#define CYGARC_REG_ESR_PPR      (1<<26)
256
#define CYGARC_REG_ESR_PTR      (1<<25)
257
#define CYGARC_REG_ESR_FP       (1<<24)
258
 
259
#endif
260
 
261
//-----------------------------------------------------------------------------
262
#endif // ifdef CYGONCE_HAL_PPC_REGS_H
263
// End of ppc_regs.h

powered by: WebSVN 2.1.0

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