]> begriffs open source - freertos/blob - Demo/MCF5235_GCC/include/arch/mcf5xxx.h
Update to V4.3.0 as described in http://www.FreeRTOS.org/History.txt
[freertos] / Demo / MCF5235_GCC / include / arch / mcf5xxx.h
1 /*\r
2  * These files are taken from the MCF523X source code example package\r
3  * which is available on the Freescale website. Freescale explicitly \r
4  * grants the redistribution and modification of these source files.\r
5  * The complete licensing information is available in the file \r
6  * LICENSE_FREESCALE.TXT.\r
7  *\r
8  * File:                mcf5xxx.h\r
9  * Purpose:             Definitions common to all ColdFire processors\r
10  *\r
11  * Notes:\r
12  */\r
13 \r
14 #ifndef _CPU_MCF5XXX_H\r
15 #define _CPU_MCF5XXX_H\r
16 \r
17 /***********************************************************************/\r
18 /*\r
19  * Misc. Defines\r
20  */\r
21 \r
22 #ifdef  FALSE\r
23 #undef  FALSE\r
24 #endif\r
25 #define FALSE   (0)\r
26 \r
27 #ifdef  TRUE\r
28 #undef  TRUE\r
29 #endif\r
30 #define TRUE    (1)\r
31 \r
32 #ifdef  NULL\r
33 #undef  NULL\r
34 #endif\r
35 #define NULL    (0)\r
36 \r
37 /***********************************************************************/\r
38 /*\r
39  * The basic data types\r
40  */\r
41 \r
42 typedef unsigned char           uint8;  /*  8 bits */\r
43 typedef unsigned short int      uint16; /* 16 bits */\r
44 typedef unsigned long int       uint32; /* 32 bits */\r
45 \r
46 typedef signed char                     int8;   /*  8 bits */\r
47 typedef signed short int        int16;  /* 16 bits */\r
48 typedef signed long int         int32;  /* 32 bits */\r
49 \r
50 typedef volatile uint8          vuint8;  /*  8 bits */\r
51 typedef volatile uint16         vuint16; /* 16 bits */\r
52 typedef volatile uint32         vuint32; /* 32 bits */\r
53 \r
54 /***********************************************************************/\r
55 /*\r
56  * Common M68K & ColdFire definitions\r
57  */\r
58 \r
59 #define ADDRESS                 uint32\r
60 #define INSTRUCTION             uint16\r
61 #define ILLEGAL                 0x4AFC\r
62 #define CPU_WORD_SIZE   16\r
63 \r
64 #define MCF5XXX_SR_T            (0x8000)\r
65 #define MCF5XXX_SR_S            (0x2000)\r
66 #define MCF5XXX_SR_M            (0x1000)\r
67 #define MCF5XXX_SR_IPL          (0x0700)\r
68 #define MCF5XXX_SR_IPL_0        (0x0000)\r
69 #define MCF5XXX_SR_IPL_1        (0x0100)\r
70 #define MCF5XXX_SR_IPL_2        (0x0200)\r
71 #define MCF5XXX_SR_IPL_3        (0x0300)\r
72 #define MCF5XXX_SR_IPL_4        (0x0400)\r
73 #define MCF5XXX_SR_IPL_5        (0x0500)\r
74 #define MCF5XXX_SR_IPL_6        (0x0600)\r
75 #define MCF5XXX_SR_IPL_7        (0x0700)\r
76 #define MCF5XXX_SR_X            (0x0010)\r
77 #define MCF5XXX_SR_N            (0x0008)\r
78 #define MCF5XXX_SR_Z            (0x0004)\r
79 #define MCF5XXX_SR_V            (0x0002)\r
80 #define MCF5XXX_SR_C            (0x0001)\r
81 \r
82 #define MCF5XXX_CACR_CENB               (0x80000000)\r
83 #define MCF5XXX_CACR_CPDI               (0x10000000)\r
84 #define MCF5XXX_CACR_CPD                (0x10000000)\r
85 #define MCF5XXX_CACR_CFRZ               (0x08000000)\r
86 #define MCF5XXX_CACR_CINV               (0x01000000)\r
87 #define MCF5XXX_CACR_DIDI               (0x00800000)\r
88 #define MCF5XXX_CACR_DISD               (0x00400000)\r
89 #define MCF5XXX_CACR_INVI               (0x00200000)\r
90 #define MCF5XXX_CACR_INVD               (0x00100000)\r
91 #define MCF5XXX_CACR_CEIB               (0x00000400)\r
92 #define MCF5XXX_CACR_DCM_WR             (0x00000000)\r
93 #define MCF5XXX_CACR_DCM_CB             (0x00000100)\r
94 #define MCF5XXX_CACR_DCM_IP             (0x00000200)\r
95 #define MCF5XXX_CACR_DCM                (0x00000200)\r
96 #define MCF5XXX_CACR_DCM_II             (0x00000300)\r
97 #define MCF5XXX_CACR_DBWE               (0x00000100)\r
98 #define MCF5XXX_CACR_DWP                (0x00000020)\r
99 #define MCF5XXX_CACR_EUST               (0x00000010)\r
100 #define MCF5XXX_CACR_CLNF_00    (0x00000000)\r
101 #define MCF5XXX_CACR_CLNF_01    (0x00000002)\r
102 #define MCF5XXX_CACR_CLNF_10    (0x00000004)\r
103 #define MCF5XXX_CACR_CLNF_11    (0x00000006)\r
104 \r
105 #define MCF5XXX_ACR_AB(a)               ((a)&0xFF000000)\r
106 #define MCF5XXX_ACR_AM(a)               (((a)&0xFF000000) >> 8)\r
107 #define MCF5XXX_ACR_EN                  (0x00008000)\r
108 #define MCF5XXX_ACR_SM_USER             (0x00000000)\r
109 #define MCF5XXX_ACR_SM_SUPER    (0x00002000)\r
110 #define MCF5XXX_ACR_SM_IGNORE   (0x00006000)\r
111 #define MCF5XXX_ACR_ENIB                (0x00000080)\r
112 #define MCF5XXX_ACR_CM                  (0x00000040)\r
113 #define MCF5XXX_ACR_DCM_WR              (0x00000000)\r
114 #define MCF5XXX_ACR_DCM_CB              (0x00000020)\r
115 #define MCF5XXX_ACR_DCM_IP              (0x00000040)\r
116 #define MCF5XXX_ACR_DCM_II              (0x00000060)\r
117 #define MCF5XXX_ACR_CM                  (0x00000040)\r
118 #define MCF5XXX_ACR_BWE                 (0x00000020)\r
119 #define MCF5XXX_ACR_WP                  (0x00000004)\r
120 \r
121 #define MCF5XXX_RAMBAR_BA(a)    ((a)&0xFFFFC000)\r
122 #define MCF5XXX_RAMBAR_PRI_00   (0x00000000)\r
123 #define MCF5XXX_RAMBAR_PRI_01   (0x00004000)\r
124 #define MCF5XXX_RAMBAR_PRI_10   (0x00008000)\r
125 #define MCF5XXX_RAMBAR_PRI_11   (0x0000C000)\r
126 #define MCF5XXX_RAMBAR_WP               (0x00000100)\r
127 #define MCF5XXX_RAMBAR_CI               (0x00000020)\r
128 #define MCF5XXX_RAMBAR_SC               (0x00000010)\r
129 #define MCF5XXX_RAMBAR_SD               (0x00000008)\r
130 #define MCF5XXX_RAMBAR_UC               (0x00000004)\r
131 #define MCF5XXX_RAMBAR_UD               (0x00000002)\r
132 #define MCF5XXX_RAMBAR_V                (0x00000001)\r
133 \r
134 /***********************************************************************/\r
135 /*\r
136  * The ColdFire family of processors has a simplified exception stack\r
137  * frame that looks like the following:\r
138  *\r
139  *              3322222222221111 111111\r
140  *              1098765432109876 5432109876543210\r
141  *           8 +----------------+----------------+\r
142  *             |         Program Counter         |\r
143  *           4 +----------------+----------------+\r
144  *             |FS/Fmt/Vector/FS|      SR        |\r
145  *   SP -->  0 +----------------+----------------+\r
146  *\r
147  * The stack self-aligns to a 4-byte boundary at an exception, with\r
148  * the FS/Fmt/Vector/FS field indicating the size of the adjustment\r
149  * (SP += 0,1,2,3 bytes).\r
150  */\r
151 \r
152 #define MCF5XXX_RD_SF_FORMAT(PTR)       \\r
153         ((*((uint16 *)(PTR)) >> 12) & 0x00FF)\r
154 \r
155 #define MCF5XXX_RD_SF_VECTOR(PTR)       \\r
156         ((*((uint16 *)(PTR)) >>  2) & 0x00FF)\r
157 \r
158 #define MCF5XXX_RD_SF_FS(PTR)           \\r
159         ( ((*((uint16 *)(PTR)) & 0x0C00) >> 8) | (*((uint16 *)(PTR)) & 0x0003) )\r
160 \r
161 #define MCF5XXX_SF_SR(PTR)      *((uint16 *)(PTR)+1)\r
162 #define MCF5XXX_SF_PC(PTR)      *((uint32 *)(PTR)+1)\r
163 \r
164 /********************************************************************/\r
165 /*\r
166  * Functions provided by mcf5xxx.s\r
167  */\r
168  \r
169 int     asm_set_ipl (uint32);\r
170 void    mcf5xxx_wr_cacr (uint32);\r
171 void    mcf5xxx_wr_acr0 (uint32);\r
172 void    mcf5xxx_wr_acr1 (uint32);\r
173 void    mcf5xxx_wr_acr2 (uint32);\r
174 void    mcf5xxx_wr_acr3 (uint32);\r
175 void    mcf5xxx_wr_other_a7 (uint32);\r
176 void    mcf5xxx_wr_other_sp (uint32);\r
177 void    mcf5xxx_wr_vbr (uint32);\r
178 void    mcf5xxx_wr_macsr (uint32);\r
179 void    mcf5xxx_wr_mask (uint32);\r
180 void    mcf5xxx_wr_acc0 (uint32);\r
181 void    mcf5xxx_wr_accext01 (uint32);\r
182 void    mcf5xxx_wr_accext23 (uint32);\r
183 void    mcf5xxx_wr_acc1 (uint32);\r
184 void    mcf5xxx_wr_acc2 (uint32);\r
185 void    mcf5xxx_wr_acc3 (uint32);\r
186 void    mcf5xxx_wr_sr (uint32);\r
187 void    mcf5xxx_wr_rambar0 (uint32);\r
188 void    mcf5xxx_wr_rambar1 (uint32);\r
189 void    mcf5xxx_wr_mbar (uint32);\r
190 void    mcf5xxx_wr_mbar0 (uint32);\r
191 void    mcf5xxx_wr_mbar1 (uint32);\r
192 \r
193 /********************************************************************/\r
194 \r
195 #endif  /* _CPU_MCF5XXX_H */\r
196 \r