source: rtems/bsps/powerpc/mpc55xxevb/include/mpc55xx/regs-mmu.h @ c991eeec

5
Last change on this file since c991eeec was c991eeec, checked in by Sebastian Huber <sebastian.huber@…>, on 03/04/19 at 14:32:15

bsps: Adjust bsp.h Doxygen groups

Update #3706.

  • Property mode set to 100644
File size: 5.9 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup RTEMSBSPsPowerPCMPC55XX
5 */
6
7/*
8 * Copyright (c) 2008-2011 embedded brains GmbH.  All rights reserved.
9 *
10 *  embedded brains GmbH
11 *  Obere Lagerstr. 30
12 *  82178 Puchheim
13 *  Germany
14 *  <rtems@embedded-brains.de>
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21/*********************************************************************
22 *
23 * Copyright:
24 *  Freescale Semiconductor, INC. All Rights Reserved.
25 *  You are hereby granted a copyright license to use, modify, and
26 *  distribute the SOFTWARE so long as this entire notice is
27 *  retained without alteration in any modified and/or redistributed
28 *  versions, and that such modified versions are clearly identified
29 *  as such. No licenses are granted by implication, estoppel or
30 *  otherwise under any patents or trademarks of Freescale
31 *  Semiconductor, Inc. This software is provided on an "AS IS"
32 *  basis and without warranty.
33 *
34 *  To the maximum extent permitted by applicable law, Freescale
35 *  Semiconductor DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
36 *  INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A
37 *  PARTICULAR PURPOSE AND ANY WARRANTY AGAINST INFRINGEMENT WITH
38 *  REGARD TO THE SOFTWARE (INCLUDING ANY MODIFIED VERSIONS THEREOF)
39 *  AND ANY ACCOMPANYING WRITTEN MATERIALS.
40 *
41 *  To the maximum extent permitted by applicable law, IN NO EVENT
42 *  SHALL Freescale Semiconductor BE LIABLE FOR ANY DAMAGES WHATSOEVER
43 *  (INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
44 *  BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER
45 *  PECUNIARY LOSS) ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
46 *
47 *  Freescale Semiconductor assumes no responsibility for the
48 *  maintenance and support of this software
49 *
50 ********************************************************************/
51
52#ifndef LIBCPU_POWERPC_MPC55XX_REGS_MMU_H
53#define LIBCPU_POWERPC_MPC55XX_REGS_MMU_H
54
55#include <stdint.h>
56
57#include <bspopts.h>
58
59#ifdef  __cplusplus
60extern "C" {
61#endif
62
63/****************************************************************************/
64/*                          MMU                                             */
65/****************************************************************************/
66    struct MMU_tag {
67        union {
68            uint32_t R;
69            struct {
70                uint32_t : 2;
71                uint32_t TLBSEL : 2;
72                uint32_t : 7;
73                uint32_t ESEL : 5;
74                uint32_t : 11;
75                uint32_t NV : 5;
76            } B;
77        } MAS0;
78
79        union {
80            uint32_t R;
81            struct {
82                uint32_t VALID : 1;
83                uint32_t IPROT : 1;
84                uint32_t : 6;
85                uint32_t TID : 8;
86                uint32_t : 3;
87                uint32_t TS : 1;
88                uint32_t TSIZE : 5;
89                uint32_t : 7;
90            } B;
91        } MAS1;
92
93        union {
94            uint32_t R;
95            struct {
96                uint32_t EPN : 22;
97                uint32_t : 4;
98                uint32_t VLE : 1;
99                uint32_t W : 1;
100                uint32_t I : 1;
101                uint32_t M : 1;
102                uint32_t G : 1;
103                uint32_t E : 1;
104            } B;
105        } MAS2;
106
107        union {
108            uint32_t R;
109            struct {
110                uint32_t RPN : 22;
111                uint32_t U0 : 1;
112                uint32_t U1 : 1;
113                uint32_t U2 : 1;
114                uint32_t U3 : 1;
115                uint32_t UX : 1;
116                uint32_t SX : 1;
117                uint32_t UW : 1;
118                uint32_t SW : 1;
119                uint32_t UR : 1;
120                uint32_t SR : 1;
121            } B;
122        } MAS3;
123    };
124
125        union MMU_MAS4_tag {
126            uint32_t R;
127            struct {
128                uint32_t : 2;
129                uint32_t TLBSELD : 2;
130                uint32_t : 10;
131                uint32_t TIDSELD : 2;
132                uint32_t : 4;
133                uint32_t TSIZED : 4;
134                uint32_t : 3;
135                uint32_t WD : 1;
136                uint32_t ID : 1;
137                uint32_t MD : 1;
138                uint32_t GD : 1;
139                uint32_t ED : 1;
140            } B;
141        };
142
143        union MMU_MAS6_tag {
144            uint32_t R;
145            struct {
146                uint32_t : 8;
147                uint32_t SPID : 8;
148                uint32_t : 15;
149                uint32_t SAS : 1;
150            } B;
151        };
152
153#define MPC55XX_MMU_TAG_TRANSLATE_INITIALIZER(idx, addreff, addrreal, size, x, w, r, io) \
154  { \
155    .MAS0 = { .B = { .TLBSEL = 1, .ESEL = (idx) } }, \
156    .MAS1 = { .B = { \
157      .VALID = 1, .IPROT = 1, .TID = 0, .TS = 0, .TSIZE = (size) } \
158    }, \
159    .MAS2 = { .B = { \
160      .EPN = (addreff) >> 10, .VLE = 0, \
161      .W = (io) == 2, .I = (io) == 1, .M = 0, .G = (io) == 1, .E = 0 } \
162    }, \
163    .MAS3 = { .B = { \
164      .RPN = (addrreal) >> 10, .U0 = 0, .U1 = 0, .U2 = 0, .U3 = 0, .UX = 0, \
165      .SX = (x), .UW = 0, .SW = (w), .UR = 0, .SR = (r) } \
166    } \
167  }
168
169#define MPC55XX_MMU_TAG_INITIALIZER(idx, addr, size, x, w, r, io) \
170  MPC55XX_MMU_TAG_TRANSLATE_INITIALIZER(idx, addr, addr, size, x, w, r, io)
171
172#define MPC55XX_MMU_1K 0
173#define MPC55XX_MMU_2K 1
174#define MPC55XX_MMU_4K 2
175#define MPC55XX_MMU_8K 3
176#define MPC55XX_MMU_16K 4
177#define MPC55XX_MMU_32K 5
178#define MPC55XX_MMU_64K 6
179#define MPC55XX_MMU_128K 7
180#define MPC55XX_MMU_256K 8
181#define MPC55XX_MMU_512K 9
182#define MPC55XX_MMU_1M 10
183#define MPC55XX_MMU_2M 11
184#define MPC55XX_MMU_4M 12
185#define MPC55XX_MMU_8M 13
186#define MPC55XX_MMU_16M 14
187#define MPC55XX_MMU_32M 15
188#define MPC55XX_MMU_64M 16
189#define MPC55XX_MMU_128M 17
190#define MPC55XX_MMU_256M 18
191#define MPC55XX_MMU_512M 19
192#define MPC55XX_MMU_1G 20
193#define MPC55XX_MMU_2G 21
194#define MPC55XX_MMU_4G 22
195
196#ifdef  __cplusplus
197}
198#endif /* __cplusplus */
199
200#endif /* LIBCPU_POWERPC_MPC55XX_REGS_MMU_H */
Note: See TracBrowser for help on using the repository browser.