1 /*
2 *
3 * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
4 *
5 *
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
8 * are met:
9 *
10 * Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 *
13 * Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the
16 * distribution.
17 *
18 * Neither the name of Texas Instruments Incorporated nor the names of
19 * its contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 */
38 /****************************************************************************/
39 /* PARAMS.H - Target dependent parameters. */
40 /****************************************************************************/
42 #if TMS340
43 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
44 typedef unsigned short T_DATA; /* TYPE FOR TARGET DATA WORD */
45 typedef unsigned short T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
46 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
47 typedef unsigned short T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
49 #define MAGIC MAGIC_340
50 /* #define NEW_SYM_NDX 1 USE 32-bit SYMBOL INDEX, NO DISP */
51 #define BYTETOLOC(x) ((T_ADDR)(x)<<3) /* CONVERT ADDRESSES TO BYTES */
52 #define LOCTOBYTE(x) ((x)>>3) /* CONVERT BYTES TO ADDRESSES */
53 #define BIT_OFFSET(a) ((a)&7) /* BIT OFFSET OF ADDR WITHIN BYTE */
55 #ifdef OTIS
56 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
57 #else
58 #define LOADBUFSIZE 0x1000 /* 16K BUFFER FOR LOADING DATA */
59 #endif
61 #define LOADWORDSIZE 2 /* MINIMUM DIVISOR OF LOAD SIZE */
62 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
63 #define INIT_ALIGN 1 /* ALIGNMENT OF CINIT RECORDS */
64 #define INIT_WSIZE 2 /* SIZE IN BYTES OF INIT DATA ITEMS */
65 #endif
67 #if TMS32030 || TMS32040
68 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
69 typedef unsigned int T_DATA; /* TYPE FOR TARGET DATA WORD */
70 typedef unsigned int T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
71 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
72 typedef unsigned int T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
74 #define MAGIC MAGIC_C30 /* Magic number for C30 */
76 #define LOCTOBYTE(x) ((x)<<2) /* C30 word addrs to byte addrs */
77 #define BYTETOLOC(x) ((x)>>2) /* byte addrs to word addrs */
78 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
80 #ifdef OTIS
81 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
82 #else
83 #define LOADBUFSIZE 0x0FF8 /* 4K-8 BUFFER FOR LOADING DATA */
84 #endif
86 #define LOADWORDSIZE 2 /* MINIMUM DIVISOR OF LOAD SIZE */
87 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
88 #define INIT_ALIGN 1 /* ALIGNMENT OF CINIT RECORDS */
89 #define INIT_WSIZE 4 /* SIZE IN BYTES OF INIT DATA ITEMS */
90 #endif
92 #if TMS32025 || TMS32050
93 typedef unsigned short T_ADDR; /* TYPE FOR TARGET ADDRESS */
94 typedef unsigned short T_DATA; /* TYPE FOR TARGET DATA WORD */
95 typedef unsigned short T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
96 typedef unsigned short T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
97 typedef unsigned short T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
99 #define MAGIC MAGIC_DSP /* Magic number for C25 */
101 #define LOCTOBYTE(x) ((x)<<1) /* 16-bit word addrs to byte addrs */
102 #define BYTETOLOC(x) ((x)>>1) /* byte addrs to word addrs */
103 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
105 #ifdef OTIS
106 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
107 #else
108 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
109 #endif /* ifdef OTIS */
111 #define LOADWORDSIZE 2 /* MINIMUM DIVISOR OF LOAD SIZE */
112 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
113 #define INIT_ALIGN 1 /* ALIGNMENT OF CINIT RECORDS */
114 #define INIT_WSIZE 2 /* SIZE IN BYTES OF INIT DATA ITEMS */
116 #endif /* TMS32025 || TMS32050 */
118 #if TMS380
119 typedef unsigned short T_ADDR; /* TYPE FOR TARGET ADDRESS */
120 typedef unsigned short T_DATA; /* TYPE FOR TARGET DATA WORD */
121 typedef unsigned short T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
122 typedef unsigned short T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
123 typedef unsigned short T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
125 #define MAGIC MAGIC_380 /* Magic number for TMS380 */
127 #define LOCTOBYTE(x) x /* 16-bit byte addrs to byte addrs */
128 #define BYTETOLOC(x) x /* byte addrs to byte addrs */
129 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
131 #ifdef OTIS
132 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
133 #else
134 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
135 #endif
137 #define LOADWORDSIZE 2 /* MINIMUM DIVISOR OF LOAD SIZE */
138 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
139 #define INIT_ALIGN 2 /* ALIGNMENT OF CINIT RECORDS */
140 #define INIT_WSIZE 1 /* SIZE IN BYTES OF INIT DATA ITEMS */
141 #endif
143 #if TMS370 || TMS370C8
144 typedef unsigned short T_ADDR; /* TYPE FOR TARGET ADDRESS */
145 typedef unsigned char T_DATA; /* TYPE FOR TARGET DATA WORD */
146 typedef unsigned short T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
147 typedef unsigned short T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
148 typedef unsigned char T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
150 #define MAGIC MAGIC_370 /* 370 Magic Number */
152 #define LOCTOBYTE(x) x /* 370 addresses are same as bytes */
153 #define BYTETOLOC(x) x
154 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
156 #ifdef OTIS
157 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
158 #else
159 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
160 #endif
162 #define LOADWORDSIZE 2 /* MINIMUM DIVISOR OF LOAD SIZE */
163 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
164 #define INIT_ALIGN 1 /* ALIGNMENT OF CINIT RECORDS */
165 #define INIT_WSIZE 1 /* SIZE IN BYTES OF INIT DATA ITEMS */
166 #endif
168 #if MVP_PP
169 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
170 typedef unsigned int T_DATA; /* TYPE FOR TARGET DATA WORD */
171 typedef unsigned int T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
172 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
174 typedef struct {unsigned int ins_h; unsigned int ins_l; } T_INSTRUCT;
175 /* TYPE FOR INSTRUCTION OPCODE */
177 #define MAGIC MAGIC_MVP /* PP Magic Number */
179 #define LOCTOBYTE(x) (x) /* PP addresses are same as bytes */
180 #define BYTETOLOC(x) (x)
181 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
183 #ifdef OTIS
184 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
185 #else
186 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
187 #endif
189 #define LOADWORDSIZE 8 /* MINIMUM DIVISOR OF LOAD SIZE */
190 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
191 #define INIT_ALIGN 8 /* ALIGNMENT OF CINIT RECORDS */
192 #define INIT_WSIZE 4 /* SIZE IN BYTES OF INIT DATA ITEMS */
193 #endif
195 #if MVP_MP
196 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
197 typedef unsigned int T_DATA; /* TYPE FOR TARGET DATA WORD */
198 typedef unsigned int T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
199 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
200 typedef unsigned int T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
202 #define FT_IEEE_FLT 1
203 #define FT_IEEE_DBL 2
204 #define FLT_PRECISION 4
206 typedef struct trg_fval {
207 unsigned int fval1;
208 unsigned int fval2;
209 } TRG_FVAL;
211 #define MAGIC MAGIC_MVP /* MP Magic Number */
213 #define LOCTOBYTE(x) (x) /* MP addresses are same as bytes */
214 #define BYTETOLOC(x) (x)
215 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
217 #ifdef OTIS
218 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
219 #else
220 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
221 #endif
223 #define LOADWORDSIZE 8 /* MINIMUM DIVISOR OF LOAD SIZE */
224 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
225 #define INIT_ALIGN 8 /* ALIGNMENT OF CINIT RECORDS */
226 #define INIT_WSIZE 4 /* SIZE IN BYTES OF INIT DATA ITEMS */
227 #endif
229 #if LEAD
230 typedef unsigned short T_ADDR; /* TYPE FOR TARGET ADDRESS */
231 typedef unsigned short T_DATA; /* TYPE FOR TARGET DATA WORD */
232 typedef unsigned short T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
233 typedef unsigned short T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
234 typedef unsigned short T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
236 #define MAGIC MAGIC_LEAD /* Magic number for C25 */
238 #define LOCTOBYTE(x) ((x)<<1) /* 16-bit word addrs to byte addrs */
239 #define BYTETOLOC(x) ((x)>>1) /* byte addrs to word addrs */
240 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
242 #ifdef OTIS
243 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
244 #else
245 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
246 #endif /* ifdef OTIS */
248 #define LOADWORDSIZE 2 /* MINIMUM DIVISOR OF LOAD SIZE */
249 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
250 #define INIT_ALIGN 1 /* ALIGNMENT OF CINIT RECORDS */
251 #define INIT_WSIZE 2 /* SIZE IN BYTES OF INIT DATA ITEMS */
253 #endif /* LEAD */
255 #if LEAD3
256 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
257 typedef unsigned short T_DATA; /* TYPE FOR TARGET DATA WORD */
258 typedef unsigned short T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
259 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
260 typedef unsigned int T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
262 #define MAGIC MAGIC_LEAD3 /* Magic number for C55 */
264 #define LOCTOBYTE(x) (x) /* LEAD3 is byte addressable */
265 #define BYTETOLOC(x) (x) /* LEAD3 is byte addressable */
266 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
268 #ifdef OTIS
269 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
270 #else
271 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
272 #endif /* ifdef OTIS */
274 #define LOADWORDSIZE 2 /* MINIMUM DIVISOR OF LOAD SIZE */
275 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
276 #define INIT_ALIGN 1 /* ALIGNMENT OF CINIT RECORDS */
277 #define INIT_WSIZE 2 /* SIZE IN BYTES OF INIT DATA ITEMS */
279 #endif /* LEAD3 */
281 #if ARM
282 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
283 typedef unsigned int T_DATA; /* TYPE FOR TARGET DATA WORD */
284 typedef unsigned int T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
285 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
286 typedef unsigned int T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
288 #define MAGIC MAGIC_ARM /* Magic number for ARM */
290 #define LOCTOBYTE(x) (x) /* ARM addresses are same as bytes */
291 #define BYTETOLOC(x) (x)
292 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
294 #ifdef OTIS
295 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
296 #else
297 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
298 #endif
300 #define LOADWORDSIZE 4 /* MINIMUM DIVISOR OF LOAD SIZE */
301 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
302 #define INIT_ALIGN 4 /* ALIGNMENT OF CINIT RECORDS */
303 #define INIT_WSIZE 4 /* SIZE IN BYTES OF INIT DATA ITEMS */
305 #endif /* ARM */
307 #if TMS32060
308 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
309 typedef unsigned int T_DATA; /* TYPE FOR TARGET DATA WORD */
310 typedef unsigned int T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
311 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
312 typedef unsigned int T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
314 #define FT_IEEE_FLT 1
315 #define FT_IEEE_DBL 2
316 #define FLT_PRECISION 4
318 typedef struct trg_fval {
319 unsigned int fval1;
320 unsigned int fval2;
321 } TRG_FVAL;
323 #define MAGIC MAGIC_C60 /* C60 Magic Number */
325 #define LOCTOBYTE(x) (x) /* C60 addresses are same as bytes */
326 #define BYTETOLOC(x) (x)
327 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
329 #ifdef OTIS
330 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
331 #else
332 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
333 //#define UNBUFFERED 1
334 #endif
336 #define LOADWORDSIZE 8 /* MINIMUM DIVISOR OF LOAD SIZE */
337 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
338 #define INIT_ALIGN 8 /* ALIGNMENT OF CINIT RECORDS */
339 #define INIT_WSIZE 4 /* SIZE IN BYTES OF INIT DATA ITEMS */
340 #endif
342 #if VIVID
343 typedef unsigned int T_ADDR; /* TYPE FOR TARGET ADDRESS */
344 typedef unsigned int T_DATA; /* TYPE FOR TARGET DATA WORD */
345 typedef unsigned int T_SIZE; /* TYPE FOR CINIT SIZE FIELD */
346 typedef unsigned int T_IADDR; /* TYPE FOR CINIT ADDRESS FIELD */
347 typedef unsigned int T_INSTRUCT; /* TYPE FOR INSTRUCTION OPCODE */
349 #define FT_IEEE_FLT 1
350 #define FT_IEEE_DBL 2
351 #define FLT_PRECISION 4
353 typedef struct trg_fval {
354 unsigned int fval1;
355 unsigned int fval2;
356 } TRG_FVAL;
358 #define MAGIC MAGIC_VIVID /* Vivid Magic Number */
360 #define LOCTOBYTE(x) (x) /* Vivid addresses are same as bytes*/
361 #define BYTETOLOC(x) (x)
362 #define BIT_OFFSET(a) (0) /* BIT OFFSET OF ADDR WITHIN BYTE */
364 #ifdef OTIS
365 #define LOADBUFSIZE (TRG_MAX_MBLK/8) /* USE OTIS BUFFER SIZE */
366 #else
367 #define LOADBUFSIZE 0x4000 /* 16K BUFFER FOR LOADING DATA */
368 #endif
370 #define LOADWORDSIZE 8 /* MINIMUM DIVISOR OF LOAD SIZE */
371 #define CINIT ".cinit" /* NAME OF CINIT SECTION */
372 #define INIT_ALIGN 8 /* ALIGNMENT OF CINIT RECORDS */
373 #define INIT_WSIZE 4 /* SIZE IN BYTES OF INIT DATA ITEMS */
374 #endif