1 #ifndef CYGONCE_HAL_VAR_REGS_H
2 #define CYGONCE_HAL_VAR_REGS_H
4 //==========================================================================
8 // PowerPC MPC8260 CPU definitions
10 //==========================================================================
11 //####ECOSGPLCOPYRIGHTBEGIN####
12 // -------------------------------------------
13 // This file is part of eCos, the Embedded Configurable Operating System.
14 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
15 // Copyright (C) 2002 Gary Thomas
17 // eCos is free software; you can redistribute it and/or modify it under
18 // the terms of the GNU General Public License as published by the Free
19 // Software Foundation; either version 2 or (at your option) any later version.
21 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY
22 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
23 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
26 // You should have received a copy of the GNU General Public License along
27 // with eCos; if not, write to the Free Software Foundation, Inc.,
28 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
30 // As a special exception, if other files instantiate templates or use macros
31 // or inline functions from this file, or you compile this file and link it
32 // with other works to produce a work based on this file, this file does not
33 // by itself cause the resulting work to be covered by the GNU General Public
34 // License. However the source code for this file must still be made available
35 // in accordance with section (3) of the GNU General Public License.
37 // This exception does not invalidate any other reasons why a work based on
38 // this file might be covered by the GNU General Public License.
40 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
41 // at http://sources.redhat.com/ecos/ecos-license/
42 // -------------------------------------------
43 //####ECOSGPLCOPYRIGHTEND####
44 //==========================================================================
45 //#####DESCRIPTIONBEGIN####
48 // Contributors: jskov
50 // Purpose: Provide MPC8260 register definitions
51 // Description: Provide MPC8260 register definitions
52 // The short definitions (sans CYGARC_REG_) are exported only
53 // if CYGARC_HAL_COMMON_EXPORT_CPU_MACROS is defined.
54 // Usage: Included via the acrhitecture register header:
55 // #include <cyg/hal/ppc_regs.h>
59 //####DESCRIPTIONEND####
61 //==========================================================================
63 //--------------------------------------------------------------------------
64 #define CYGARC_REG_LR 8 // Link Register
65 #define CYGARC_REG_CTR 9 // Counter Register
67 #define CYGARC_REG_DSISR 18
68 #define CYGARC_REG_DAR 19
69 #define CYGARC_REG_DEC 22
70 #define CYGARC_REG_SDR1 25
72 #define CYGARC_REG_TBL 268
73 #define CYGARC_REG_TBU 269
75 #define CYGARC_REG_SPRG0 272
76 #define CYGARC_REG_SPRG1 273
77 #define CYGARC_REG_SPRG2 274
78 #define CYGARC_REG_SPRG3 275
79 #define CYGARC_REG_EAR 282
80 #define CYGARC_REG_PVR 287
82 #define CYGARC_REG_IBAT0U 528
83 #define CYGARC_REG_IBAT0L 529
84 #define CYGARC_REG_IBAT1U 530
85 #define CYGARC_REG_IBAT1L 531
86 #define CYGARC_REG_IBAT2U 532
87 #define CYGARC_REG_IBAT2L 533
88 #define CYGARC_REG_IBAT3U 534
89 #define CYGARC_REG_IBAT3L 535
91 #define CYGARC_REG_DBAT0U 536
92 #define CYGARC_REG_DBAT0L 537
93 #define CYGARC_REG_DBAT1U 538
94 #define CYGARC_REG_DBAT1L 539
95 #define CYGARC_REG_DBAT2U 540
96 #define CYGARC_REG_DBAT2L 541
97 #define CYGARC_REG_DBAT3U 542
98 #define CYGARC_REG_DBAT3L 543
100 #define CYGARC_REG_DMISS 976
101 #define CYGARC_REG_DCMP 977
102 #define CYGARC_REG_HASH1 978
103 #define CYGARC_REG_HASH2 979
104 #define CYGARC_REG_IMISS 980
105 #define CYGARC_REG_ICMP 981
106 #define CYGARC_REG_RPA 982
109 // Hardware Implementation Defined Special Purpose Registers
110 #define CYGARC_REG_HID0 1008
111 #define CYGARC_REG_HID1 1009
112 #define CYGARC_REG_IABR 1010
113 #define CYGARC_REG_HID2 1011
114 #define CYGARC_REG_DABR 1013
116 // MPC8260 Internal Memory Mapped Registers
117 // These values are the offsets from the base memory address, which
118 // is stored in the IMMR register (0x101A8).
119 #define CYGARC_REG_IMM_SIUMCR 0x0000 // SIU Module Configuration Register
120 #define CYGARC_REG_IMM_SYPCR 0x0004 // System Protection Control Register
121 #define CYGARC_REG_IMM_SWSR 0x000E // Software Service Register
122 #define CYGARC_REG_IMM_BCR 0x0024 // Bus Configuration Register
123 #define CYGARC_REG_IMM_PPC_ACR 0x0028 // .60x Bus Arbiter Config Register
124 #define CYGARC_REG_IMM_PPC_ALRH 0x002C // .60x Bus Arb-Level[High] Register
125 #define CYGARC_REG_IMM_PPC_ALRL 0x0030 // .60x Bus Arb-Level[Low] Register
126 #define CYGARC_REG_IMM_LCL_ACR 0x0034 // Local Arbiter Config Register
127 #define CYGARC_REG_IMM_LCL_ACRH 0x0038 // Local Arb-Level[High] Register
128 #define CYGARC_REG_IMM_LCL_ACRL 0x003C // Local Arb-Level[Low] Register
129 #define CYGARC_REG_IMM_TESCR1 0x0040 // .60x Bus Transfer Error Status and
130 // Control Register 1
131 #define CYGARC_REG_IMM_TESCR2 0x0044 // .60x Bus Transfer Error Status and
132 // Control Register 2
134 #define CYGARC_REG_IMM_LTESCR1 0x0048 // Local Bus Transfer Error Status
135 // and Control Register 1
136 #define CYGARC_REG_IMM_LTESCR2 0x004C // Local Bus Transfer Error Status and
137 // //Control Register 2
139 #define CYGARC_REG_IMM_PDTEA 0x0050 // .60x Bus DMA Transfer
141 #define CYGARC_REG_IMM_PDTEM 0x0054 // .60x Bus DMA Transfer Error MSNUM
142 #define CYGARC_REG_IMM_LDTEA 0x0058 // Local Bus DMA Xfer Error Address
143 #define CYGARC_REG_IMM_LDTEM 0x005C // Local Bus DMA Transfer Error MSNUM
145 #define CYGARC_REG_IMM_SCCR 0x0C80 // System Clock Control Register
146 #define CYGARC_REG_IMM_BR0 0x0100 // Base Register Bank 0
147 #define CYGARC_REG_IMM_OR0 0x0104 // Option Register Bank 0
148 #define CYGARC_REG_IMM_BR1 0x0108 // Base Register Bank 1
149 #define CYGARC_REG_IMM_OR1 0x010C // Option Register Bank 1
150 #define CYGARC_REG_IMM_BR2 0x0110 // Base Register Bank 2
151 #define CYGARC_REG_IMM_OR2 0x0114 // Option Regiser Bank 2
152 #define CYGARC_REG_IMM_BR3 0x0118 // Base Register Bank 3
153 #define CYGARC_REG_IMM_OR3 0x011C // Option Register Bank 3
154 #define CYGARC_REG_IMM_BR4 0x0120 // Base Register Bank 4
155 #define CYGARC_REG_IMM_OR4 0x0124 // Option Register Bank 4
156 #define CYGARC_REG_IMM_BR5 0x0128 // Base Register Bank 5
157 #define CYGARC_REG_IMM_OR5 0x012C // Option Register Bank 5
158 #define CYGARC_REG_IMM_BR6 0x0130 // Base Register Bank 6
159 #define CYGARC_REG_IMM_OR6 0x0134 // Option Register Bank 6
160 #define CYGARC_REG_IMM_BR7 0x0138 // Base Register Bank 7
161 #define CYGARC_REG_IMM_OR7 0x013C // Option Register Bank 7
162 #define CYGARC_REG_IMM_BR8 0x0140 // Base Register Bank 8
163 #define CYGARC_REG_IMM_OR8 0x0144 // Option Regiser Bank 8
164 #define CYGARC_REG_IMM_BR9 0x0148 // Base Register Bank 9
165 #define CYGARC_REG_IMM_OR9 0x014C // Option Register Bank 9
166 #define CYGARC_REG_IMM_BR10 0x0150 // Base Register Bank 10
167 #define CYGARC_REG_IMM_OR10 0x0154 // Option Register Bank 10
168 #define CYGARC_REG_IMM_BR11 0x0158 // Base Register Bank 11
169 #define CYGARC_REG_IMM_OR11 0x015C // Option Register Bank 11
171 #define CYGARC_REG_IMM_MAR 0x0168 // Memory Address Register
172 #define CYGARC_REG_IMM_MAMR 0x0170 // Machine A mode Register
173 #define CYGARC_REG_IMM_MBMR 0x0174 // Machine B mode Register
174 #define CYGARC_REG_IMM_MCMR 0x0178 // Machine C mode Register
176 #define CYGARC_REG_IMM_MPTPR 0x0184 // Memory Periodic Timer
177 // Prescaler Register
178 #define CYGARC_REG_IMM_MDR 0x0188 // Memory Data Register
179 #define CYGARC_REG_IMM_PSDMR 0x0190 // PowerPC Bus SDRAM Machine
181 #define CYGARC_REG_IMM_LSDMR 0x0194 // Local Bus SDRAM Machine
183 #define CYGARC_REG_IMM_PURT 0x0198 // .60x Bus-assigned UPM Refresh timer
184 #define CYGARC_REG_IMM_PSRT 0x019C // .60x Bus Assigned SDRAM
186 #define CYGARC_REG_IMM_LURT 0x01A0 // Local Bus-assigned UPM
188 #define CYGARC_REG_IMM_LSRT 0x01A4 // Local Bus Assigned SDRAM
190 #define CYGARC_REG_IMM_IMMR 0x01A8 // Internal I/O base register offset
192 // Interrupt Controller
193 #define CYGARC_REG_IMM_SICR 0x0C00 // SIU Interrupt Config Register
194 #define CYGARC_REG_IMM_SIVEC 0x0C04 // SIU Interrupt Vector Register
195 #define CYGARC_REG_IMM_SIPNR_H 0x0C08 // SIU Interrupt Pending Reg. High
196 #define CYGARC_REG_IMM_SIPNR_L 0x0C0C // SIU Interrupt Pending Reg. Low
197 #define CYGARC_REG_IMM_SIPRR 0x0C10 // SIU Interrupt Priority Register
198 #define CYGARC_REG_IMM_SCPRR_H 0x0C14 // CPM Interrupt Priority Reg. High
199 #define CYGARC_REG_IMM_SCPRR_L 0x0C18 // CPM Interrupt Priority Reg. Low
200 #define CYGARC_REG_IMM_SIMR_H 0x0C1C // SIU Interrupt Mask Register High
201 #define CYGARC_REG_IMM_SIMR_L 0x0C20 // SIU Interrupt Mask Register High
202 #define CYGARC_REG_IMM_SIEXR 0x0C24 // SIU External Interrupt Ctrl Reg.
204 #ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
205 #define HID0 CYGARC_REG_HID0
206 #define HID1 CYGARC_REG_HID1
207 #define HID2 CYGARC_REG_HID2
208 #endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
210 //--------------------------------------------------------------------------
211 #ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
232 #define UBAT_BEPIMASK 0xfffe0000 // effective address mask
233 #define UBAT_BLMASK 0x00001ffc // block length mask
234 #define UBAT_VS 0x00000002 // supervisor mode valid bit
235 #define UBAT_VP 0x00000001 // problem mode valid bit
237 #define LBAT_BRPNMASK 0xfffe0000 // real address mask
238 #define LBAT_W 0x00000040 // write-through
239 #define LBAT_I 0x00000020 // caching-inhibited
240 #define LBAT_M 0x00000010 // memory coherence
241 #define LBAT_G 0x00000008 // guarded
243 #define LBAT_PP_NA 0x00000000 // no access
244 #define LBAT_PP_RO 0x00000001 // read-only
245 #define LBAT_PP_RW 0x00000002 // read/write
248 #endif // ifdef CYGARC_HAL_COMMON_EXPORT_CPU_MACROS
250 //-----------------------------------------------------------------------------
251 #endif // ifdef CYGONCE_HAL_VAR_REGS_H