bscreg.h revision 1.1 1 /* $NetBSD: bscreg.h,v 1.1 1999/09/13 10:31:14 itojun Exp $ */
2
3 /*-
4 * Copyright (C) 1999 SAITOH Masanobu. All rights reserved.
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 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * 3. The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 #ifndef _SH3_BSCREG_H_
30 #define _SH3_BSCREG_H_
31
32 #ifndef BYTE_ORDER
33 #error Define BYTE_ORDER!
34 #endif
35
36 /*
37 * Bus State Controller
38 */
39
40 #if !defined(SH4)
41
42 /* SH3 definitions */
43
44 struct sh3_bsc {
45 /* Bus Control Register 1 (0xffffff60) */
46 union {
47 unsigned short WORD; /* Word Access */
48 struct { /* Bit Access */
49 #if BYTE_ORDER == BIG_ENDIAN
50 /* Bit 15..0 */
51 unsigned short :3;
52 unsigned short HIZCNT :1;
53 unsigned short ENDIAN :1;
54 unsigned short A0BST1 :1;
55 unsigned short A0BST0 :1;
56 unsigned short A5BST1 :1;
57 unsigned short A5BST0 :1;
58 unsigned short A6BST1 :1;
59 unsigned short A6BST0 :1;
60 unsigned short DRAMTP2:1;
61 unsigned short DRAMTP1:1;
62 unsigned short DRAMTP0:1;
63 unsigned short A5PCM :1;
64 unsigned short A6PCM :1;
65 #else /* BYTE_ORDER == LITTLE_ENDIAN */
66 /* Bit 0..15 */
67 unsigned short A6PCM :1;
68 unsigned short A5PCM :1;
69 unsigned short DRAMTP0:1;
70 unsigned short DRAMTP1:1;
71 unsigned short DRAMTP2:1;
72 unsigned short A6BST0 :1;
73 unsigned short A6BST1 :1;
74 unsigned short A5BST0 :1;
75 unsigned short A5BST1 :1;
76 unsigned short A0BST0 :1;
77 unsigned short A0BST1 :1;
78 unsigned short ENDIAN :1;
79 unsigned short HIZCNT :1;
80 unsigned short :3;
81 #endif
82 } BIT;
83 } BCR1;
84
85 /* Bus Control Register 2 (0xffffff62) */
86 union { /* BCR */
87 unsigned short WORD; /* Word Access */
88 struct { /* Bit Access */
89 #if BYTE_ORDER == BIG_ENDIAN
90 /* Bit 15..0 */
91 unsigned short :2;
92 unsigned short A6SZ1 :1;
93 unsigned short A6SZ0 :1;
94 unsigned short A5SZ1 :1;
95 unsigned short A5SZ0 :1;
96 unsigned short A4SZ1 :1;
97 unsigned short A4SZ0 :1;
98 unsigned short A3SZ1 :1;
99 unsigned short A3SZ0 :1;
100 unsigned short A2SZ1 :1;
101 unsigned short A2SZ0 :1;
102 unsigned short A1SZ1 :1;
103 unsigned short A1SZ0 :1;
104 unsigned short :1;
105 unsigned short PORTBN :1;
106 #else /* BYTE_ORDER == LITTLE_ENDIAN */
107 /* Bit 0..15 */
108 unsigned short PORTBN :1;
109 unsigned short :1;
110 unsigned short A1SZ0 :1;
111 unsigned short A1SZ1 :1;
112 unsigned short A2SZ0 :1;
113 unsigned short A2SZ1 :1;
114 unsigned short A3SZ0 :1;
115 unsigned short A3SZ1 :1;
116 unsigned short A4SZ0 :1;
117 unsigned short A4SZ1 :1;
118 unsigned short A5SZ0 :1;
119 unsigned short A5SZ1 :1;
120 unsigned short A6SZ0 :1;
121 unsigned short A6SZ1 :1;
122 unsigned short :2;
123 #endif
124 } BIT;
125 } BCR2;
126
127 /* Wait state Control Register 1 (0xffffff64) */
128 union {
129 unsigned short WORD; /* Word Access */
130 struct { /* Bit Access */
131 #if BYTE_ORDER == BIG_ENDIAN
132 /* Bit 15..0 */
133 unsigned short :2;
134 unsigned short A6IW1 :1;
135 unsigned short A6IW0 :1;
136 unsigned short A5IW1 :1;
137 unsigned short A5IW0 :1;
138 unsigned short A4IW1 :1;
139 unsigned short A4IW0 :1;
140 unsigned short A3IW1 :1;
141 unsigned short A3IW0 :1;
142 unsigned short A2IW1 :1;
143 unsigned short A2IW0 :1;
144 unsigned short A1IW1 :1;
145 unsigned short A1IW0 :1;
146 unsigned short A0IW1 :1;
147 unsigned short A0IW0 :1;
148 #else /* BYTE_ORDER == LITTLE_ENDIAN */
149 /* Bit 0..15 */
150 unsigned short A0IW0 :1;
151 unsigned short A0IW1 :1;
152 unsigned short A1IW0 :1;
153 unsigned short A1IW1 :1;
154 unsigned short A2IW0 :1;
155 unsigned short A2IW1 :1;
156 unsigned short A3IW0 :1;
157 unsigned short A3IW1 :1;
158 unsigned short A4IW0 :1;
159 unsigned short A4IW1 :1;
160 unsigned short A5IW0 :1;
161 unsigned short A5IW1 :1;
162 unsigned short A6IW0 :1;
163 unsigned short A6IW1 :1;
164 unsigned short :2;
165 #endif
166 } BIT;
167 } WCR1;
168
169 /* Wait state Control Register 2 (0xffffff66) */
170 union {
171 unsigned short WORD; /* Word Access */
172 struct { /* Bit Access */
173 #if BYTE_ORDER == BIG_ENDIAN
174 /* Bit 15..0 */
175 unsigned short A6W2 :1;
176 unsigned short A6W1 :1;
177 unsigned short A6W0 :1;
178 unsigned short A5W2 :1;
179 unsigned short A5W1 :1;
180 unsigned short A5W0 :1;
181 unsigned short A4W2 :1;
182 unsigned short A4W1 :1;
183 unsigned short A4W0 :1;
184 unsigned short A3W1 :1;
185 unsigned short A3W0 :1;
186 unsigned short A21W1 :1;
187 unsigned short A21W0 :1;
188 unsigned short A0W2 :1;
189 unsigned short A0W1 :1;
190 unsigned short A0W0 :1;
191 #else /* BYTE_ORDER == LITTLE_ENDIAN */
192 /* Bit 0..15 */
193 unsigned short A0W0 :1;
194 unsigned short A0W1 :1;
195 unsigned short A0W2 :1;
196 unsigned short A21W0 :1;
197 unsigned short A21W1 :1;
198 unsigned short A3W0 :1;
199 unsigned short A3W1 :1;
200 unsigned short A4W0 :1;
201 unsigned short A4W1 :1;
202 unsigned short A4W2 :1;
203 unsigned short A5W0 :1;
204 unsigned short A5W1 :1;
205 unsigned short A5W2 :1;
206 unsigned short A6W0 :1;
207 unsigned short A6W1 :1;
208 unsigned short A6W2 :1;
209 #endif
210 } BIT;
211 } WCR2;
212
213 /* Memory Control Register (0xffffff68) */
214 union {
215 unsigned short WORD; /* Word Access */
216 struct { /* Bit Access */
217 #if BYTE_ORDER == BIG_ENDIAN
218 /* Bit 15..0 */
219 unsigned short TPC1 :1;
220 unsigned short TPC0 :1;
221 unsigned short RCD1 :1;
222 unsigned short RCD0 :1;
223 unsigned short TRWL1 :1;
224 unsigned short TRWL0 :1;
225 unsigned short TRAS1 :1;
226 unsigned short TRAS0 :1;
227 unsigned short :1;
228 unsigned short BE :1;
229 unsigned short SZ :1;
230 unsigned short AMX1 :1;
231 unsigned short AMX0 :1;
232 unsigned short RFSH :1;
233 unsigned short RMODE :1;
234 unsigned short EDOMD :1;
235 #else /* BYTE_ORDER == LITTLE_ENDIAN */
236 /* Bit 0..15 */
237 unsigned short EDOMD :1;
238 unsigned short RMODE :1;
239 unsigned short RFSH :1;
240 unsigned short AMX0 :1;
241 unsigned short AMX1 :1;
242 unsigned short SZ :1;
243 unsigned short BE :1;
244 unsigned short :1;
245 unsigned short TRAS0 :1;
246 unsigned short TRAS1 :1;
247 unsigned short TRWL0 :1;
248 unsigned short TRWL1 :1;
249 unsigned short RCD0 :1;
250 unsigned short RCD1 :1;
251 unsigned short TPC0 :1;
252 unsigned short TPC1 :1;
253 #endif
254 } BIT;
255 } MCR;
256
257 /* Dram Control Register (0xffffff6a) */
258 union {
259 unsigned short WORD; /* Word Access */
260 struct { /* Bit Access */
261 #if BYTE_ORDER == BIG_ENDIAN
262 /* Bit 15..0 */
263 unsigned short TPC1 :1;
264 unsigned short TPC0 :1;
265 unsigned short RCD1 :1;
266 unsigned short RCD0 :1;
267 unsigned short :2;
268 unsigned short TRAS1 :1;
269 unsigned short TRAS0 :1;
270 unsigned short :1;
271 unsigned short BE :1;
272 unsigned short :1;
273 unsigned short AMX1 :1;
274 unsigned short AMX0 :1;
275 unsigned short RFSH :1;
276 unsigned short RMODE :1;
277 unsigned short :1;
278 #else /* BYTE_ORDER == LITTLE_ENDIAN */
279 /* Bit 0..15 */
280 unsigned short :1;
281 unsigned short RMODE :1;
282 unsigned short RFSH :1;
283 unsigned short AMX0 :1;
284 unsigned short AMX1 :1;
285 unsigned short :1;
286 unsigned short BE :1;
287 unsigned short :1;
288 unsigned short TRAS0 :1;
289 unsigned short TRAS1 :1;
290 unsigned short :2;
291 unsigned short RCD0 :1;
292 unsigned short RCD1 :1;
293 unsigned short TPC0 :1;
294 unsigned short TPC1 :1;
295 #endif
296 } BIT;
297 } DCR;
298
299 /* PCMCIA Control Register (0xffffff6c) */
300 union {
301 unsigned short WORD; /* Word Access */
302 struct { /* Bit Access */
303 #if BYTE_ORDER == BIG_ENDIAN
304 /* Bit 15..0 */
305 unsigned short :8;
306 unsigned short A5TED1 :1;
307 unsigned short A5TED0 :1;
308 unsigned short A6TED1 :1;
309 unsigned short A6TED0 :1;
310 unsigned short A5TEH1 :1;
311 unsigned short A5TEH0 :1;
312 unsigned short A6TEH1 :1;
313 unsigned short A6TEH0 :1;
314 #else /* BYTE_ORDER == LITTLE_ENDIAN */
315 /* Bit 0..15 */
316 unsigned short A6TEH0 :1;
317 unsigned short A6TEH1 :1;
318 unsigned short A5TEH0 :1;
319 unsigned short A5TEH1 :1;
320 unsigned short A6TED0 :1;
321 unsigned short A6TED1 :1;
322 unsigned short A5TED0 :1;
323 unsigned short A5TED1 :1;
324 unsigned short :8;
325 #endif
326 } BIT;
327 } PCR;
328
329 /* Refresh Timer Control/Status Register (0xffffff6e) */
330 union {
331 unsigned short WORD; /* Word Access */
332 struct { /* Bit Access */
333 #if BYTE_ORDER == BIG_ENDIAN
334 /* Bit 15..0 */
335 unsigned short :8;
336 unsigned short CMF :1;
337 unsigned short CMIE :1;
338 unsigned short CKS2 :1;
339 unsigned short CKS1 :1;
340 unsigned short CKS0 :1;
341 unsigned short OVF :1;
342 unsigned short OVIE :1;
343 unsigned short LMTS :1;
344 #else /* BYTE_ORDER == LITTLE_ENDIAN */
345 /* Bit 0..15 */
346 unsigned short LMTS :1;
347 unsigned short OVIE :1;
348 unsigned short OVF :1;
349 unsigned short CKS0 :1;
350 unsigned short CKS1 :1;
351 unsigned short CKS2 :1;
352 unsigned short CMIE :1;
353 unsigned short CMF :1;
354 unsigned short :8;
355 #endif
356 } BIT;
357 } RTCSR;
358
359 /* Refresh Timer CouNTer (0xffffff70) */
360 unsigned short RTCNT;
361
362 /* Refresh Time Constant cOunteR (0xffffff72) */
363 unsigned short RTCOR;
364
365 /* Refresh Count Register (0xffffff74) */
366 unsigned short RFCR;
367 };
368
369 /* BSC Address */
370 #define SHREG_BSC (*(volatile struct sh3_bsc *) 0xFFFFFF60)
371
372 #else
373
374 /* SH4 definitions */
375
376 struct sh3_bsc {
377 /* Bus Control Register 1 0xff800000) */
378 union {
379 unsigned int WORD; /* Word Access */
380 struct { /* Bit Access */
381 #if BYTE_ORDER == BIG_ENDIAN
382 /* Bit 31..0 */
383 unsigned int ENDIAN :1;
384 unsigned int MASTER :1;
385 unsigned int A0MPX :1;
386 unsigned int :3;
387 unsigned int IPUP :1;
388 unsigned int OPUP :1;
389 unsigned int :2;
390 unsigned int A1MBC :1;
391 unsigned int A4MBC :1;
392 unsigned int BREQEN :1;
393 unsigned int PSHR :1;
394 unsigned int MEMMPX :1;
395 unsigned int :1;
396 unsigned int HIZMEM :1;
397 unsigned int HIZCNT :1;
398 unsigned int A0BST2 :1;
399 unsigned int A0BST1 :1;
400 unsigned int A0BST0 :1;
401 unsigned int A5BST2 :1;
402 unsigned int A5BST1 :1;
403 unsigned int A5BST0 :1;
404 unsigned int A6BST2 :1;
405 unsigned int A6BST1 :1;
406 unsigned int A6BST0 :1;
407 unsigned int DRAMTP2 :1;
408 unsigned int DRAMTP1 :1;
409 unsigned int DRAMTP0 :1;
410 unsigned int :1;
411 unsigned int A56PCM :1;
412 #else /* BYTE_ORDER == LITTLE_ENDIAN */
413 /* Bit 0..31 */
414 unsigned int A56PCM :1;
415 unsigned int :1;
416 unsigned int DRAMTP0 :1;
417 unsigned int DRAMTP1 :1;
418 unsigned int DRAMTP2 :1;
419 unsigned int A6BST0 :1;
420 unsigned int A6BST1 :1;
421 unsigned int A6BST2 :1;
422 unsigned int A5BST0 :1;
423 unsigned int A5BST1 :1;
424 unsigned int A5BST2 :1;
425 unsigned int A0BST0 :1;
426 unsigned int A0BST1 :1;
427 unsigned int A0BST2 :1;
428 unsigned int HIZCNT :1;
429 unsigned int HIZMEM :1;
430 unsigned int :1;
431 unsigned int MEMMPX :1;
432 unsigned int PSHR :1;
433 unsigned int BREQEN :1;
434 unsigned int A4MBC :1;
435 unsigned int A1MBC :1;
436 unsigned int :2;
437 unsigned int OPUP :1;
438 unsigned int IPUP :1;
439 unsigned int :3;
440 unsigned int A0MPX :1;
441 unsigned int MASTER :1;
442 unsigned int ENDIAN :1;
443 #endif
444 } BIT;
445 } BCR1;
446
447 /* Bus Control Register 2 0xff800004) */
448 union {
449 unsigned short WORD; /* Word Access */
450 struct { /* Bit Access */
451 #if BYTE_ORDER == BIG_ENDIAN
452 /* Bit 15..0 */
453 unsigned short A0SZ1 :1;
454 unsigned short A0SZ0 :1;
455 unsigned short A6SZ1 :1;
456 unsigned short A6SZ0 :1;
457 unsigned short A5SZ1 :1;
458 unsigned short A5SZ0 :1;
459 unsigned short A4SZ1 :1;
460 unsigned short A4SZ0 :1;
461 unsigned short A3SZ1 :1;
462 unsigned short A3SZ0 :1;
463 unsigned short A2SZ1 :1;
464 unsigned short A2SZ0 :1;
465 unsigned short A1SZ1 :1;
466 unsigned short A1SZ0 :1;
467 unsigned short :1;
468 unsigned short PORTBN :1;
469 #else /* BYTE_ORDER == LITTLE_ENDIAN */
470 /* Bit 0..15 */
471 unsigned short PORTBN :1;
472 unsigned short :1;
473 unsigned short A1SZ0 :1;
474 unsigned short A1SZ1 :1;
475 unsigned short A2SZ0 :1;
476 unsigned short A2SZ1 :1;
477 unsigned short A3SZ0 :1;
478 unsigned short A3SZ1 :1;
479 unsigned short A4SZ0 :1;
480 unsigned short A4SZ1 :1;
481 unsigned short A5SZ0 :1;
482 unsigned short A5SZ1 :1;
483 unsigned short A6SZ0 :1;
484 unsigned short A6SZ1 :1;
485 unsigned short A0SZ0 :1;
486 unsigned short A0SZ1 :1;
487 #endif
488 } BIT;
489 } BCR2;
490
491 /* Wait state Control Register 1 0xff800008) */
492 union {
493 unsigned int WORD; /* Word Access */
494 struct { /* Bit Access */
495 #if BYTE_ORDER == BIG_ENDIAN
496 /* Bit 31..0 */
497 unsigned int :1;
498 unsigned int DMAIW2 :1;
499 unsigned int DMAIW1 :1;
500 unsigned int DMAIW0 :1;
501 unsigned int :1;
502 unsigned int A6IW2 :1;
503 unsigned int A6IW1 :1;
504 unsigned int A6IW0 :1;
505 unsigned int :1;
506 unsigned int A5IW2 :1;
507 unsigned int A5IW1 :1;
508 unsigned int A5IW0 :1;
509 unsigned int :1;
510 unsigned int A4IW2 :1;
511 unsigned int A4IW1 :1;
512 unsigned int A4IW0 :1;
513 unsigned int :1;
514 unsigned int A3IW2 :1;
515 unsigned int A3IW1 :1;
516 unsigned int A3IW0 :1;
517 unsigned int :1;
518 unsigned int A2IW2 :1;
519 unsigned int A2IW1 :1;
520 unsigned int A2IW0 :1;
521 unsigned int :1;
522 unsigned int A1IW2 :1;
523 unsigned int A1IW1 :1;
524 unsigned int A1IW0 :1;
525 unsigned int :1;
526 unsigned int A0IW2 :1;
527 unsigned int A0IW1 :1;
528 unsigned int A0IW0 :1;
529 #else /* BYTE_ORDER == LITTLE_ENDIAN */
530 /* Bit 0..31 */
531 unsigned int A0IW0 :1;
532 unsigned int A0IW1 :1;
533 unsigned int A0IW2 :1;
534 unsigned int :1;
535 unsigned int A1IW0 :1;
536 unsigned int A1IW1 :1;
537 unsigned int A1IW2 :1;
538 unsigned int :1;
539 unsigned int A2IW0 :1;
540 unsigned int A2IW1 :1;
541 unsigned int A2IW2 :1;
542 unsigned int :1;
543 unsigned int A3IW0 :1;
544 unsigned int A3IW1 :1;
545 unsigned int A3IW2 :1;
546 unsigned int :1;
547 unsigned int A4IW0 :1;
548 unsigned int A4IW1 :1;
549 unsigned int A4IW2 :1;
550 unsigned int :1;
551 unsigned int A5IW0 :1;
552 unsigned int A5IW1 :1;
553 unsigned int A5IW2 :1;
554 unsigned int :1;
555 unsigned int A6IW0 :1;
556 unsigned int A6IW1 :1;
557 unsigned int A6IW2 :1;
558 unsigned int :1;
559 unsigned int DMAIW0 :1;
560 unsigned int DMAIW1 :1;
561 unsigned int DMAIW2 :1;
562 unsigned int :1;
563 #endif
564 } BIT;
565 } WCR1;
566
567 /* Wait state Control Register 2 0xff80000c) */
568 union {
569 unsigned int WORD; /* Word Access */
570 struct { /* Bit Access */
571 #if BYTE_ORDER == BIG_ENDIAN
572 /* Bit 31..0 */
573 unsigned int A6W2 :1;
574 unsigned int A6W1 :1;
575 unsigned int A6W0 :1;
576 unsigned int A6B2 :1;
577 unsigned int A6B1 :1;
578 unsigned int A6B0 :1;
579 unsigned int A5W2 :1;
580 unsigned int A5W1 :1;
581 unsigned int A5W0 :1;
582 unsigned int A5B2 :1;
583 unsigned int A5B1 :1;
584 unsigned int A5B0 :1;
585 unsigned int A4W2 :1;
586 unsigned int A4W1 :1;
587 unsigned int A4W0 :1;
588 unsigned int :1;
589 unsigned int A3W2 :1;
590 unsigned int A3W1 :1;
591 unsigned int A3W0 :1;
592 unsigned int :1;
593 unsigned int A2W2 :1;
594 unsigned int A2W1 :1;
595 unsigned int A2W0 :1;
596 unsigned int A1W2 :1;
597 unsigned int A1W1 :1;
598 unsigned int A1W0 :1;
599 unsigned int A0W2 :1;
600 unsigned int A0W1 :1;
601 unsigned int A0W0 :1;
602 unsigned int A0B2 :1;
603 unsigned int A0B1 :1;
604 unsigned int A0B0 :1;
605 #else /* BYTE_ORDER == LITTLE_ENDIAN */
606 /* Bit 0..31 */
607 unsigned int A0B0 :1;
608 unsigned int A0B1 :1;
609 unsigned int A0B2 :1;
610 unsigned int A0W0 :1;
611 unsigned int A0W1 :1;
612 unsigned int A0W2 :1;
613 unsigned int A1W0 :1;
614 unsigned int A1W1 :1;
615 unsigned int A1W2 :1;
616 unsigned int A2W0 :1;
617 unsigned int A2W1 :1;
618 unsigned int A2W2 :1;
619 unsigned int :1;
620 unsigned int A3W0 :1;
621 unsigned int A3W1 :1;
622 unsigned int A3W2 :1;
623 unsigned int :1;
624 unsigned int A4W0 :1;
625 unsigned int A4W1 :1;
626 unsigned int A4W2 :1;
627 unsigned int A5B0 :1;
628 unsigned int A5B1 :1;
629 unsigned int A5B2 :1;
630 unsigned int A5W0 :1;
631 unsigned int A5W1 :1;
632 unsigned int A5W2 :1;
633 unsigned int A6B0 :1;
634 unsigned int A6B1 :1;
635 unsigned int A6B2 :1;
636 unsigned int A6W0 :1;
637 unsigned int A6W1 :1;
638 unsigned int A6W2 :1;
639 #endif
640 } BIT;
641 } WCR2;
642
643
644 /* Wait state Control Register 3 (0xff800010) */
645 union {
646 unsigned int WORD; /* Word Access */
647 struct { /* Bit Access */
648 #if BYTE_ORDER == BIG_ENDIAN
649 /* Bit 31..0 */
650 unsigned int :5;
651 unsigned int A6S0 :1;
652 unsigned int A6H1 :1;
653 unsigned int A6H0 :1;
654 unsigned int :1;
655 unsigned int A5S0 :1;
656 unsigned int A5H1 :1;
657 unsigned int A5H0 :1;
658 unsigned int :1;
659 unsigned int A4S0 :1;
660 unsigned int A4H1 :1;
661 unsigned int A4H0 :1;
662 unsigned int :1;
663 unsigned int A3S0 :1;
664 unsigned int A3H1 :1;
665 unsigned int A3H0 :1;
666 unsigned int :1;
667 unsigned int A2S0 :1;
668 unsigned int A2H1 :1;
669 unsigned int A2H0 :1;
670 unsigned int :1;
671 unsigned int A1S0 :1;
672 unsigned int A1H1 :1;
673 unsigned int A1H0 :1;
674 unsigned int :1;
675 unsigned int A0S0 :1;
676 unsigned int A0H1 :1;
677 unsigned int A0H0 :1;
678 #else /* BYTE_ORDER == LITTLE_ENDIAN */
679 /* Bit 0..31 */
680 unsigned int A0H0 :1;
681 unsigned int A0H1 :1;
682 unsigned int A0S0 :1;
683 unsigned int :1;
684 unsigned int A1H0 :1;
685 unsigned int A1H1 :1;
686 unsigned int A1S0 :1;
687 unsigned int :1;
688 unsigned int A2H0 :1;
689 unsigned int A2H1 :1;
690 unsigned int A2S0 :1;
691 unsigned int :1;
692 unsigned int A3H0 :1;
693 unsigned int A3H1 :1;
694 unsigned int A3S0 :1;
695 unsigned int :1;
696 unsigned int A4H0 :1;
697 unsigned int A4H1 :1;
698 unsigned int A4S0 :1;
699 unsigned int :1;
700 unsigned int A5H0 :1;
701 unsigned int A5H1 :1;
702 unsigned int A5S0 :1;
703 unsigned int :1;
704 unsigned int A6H0 :1;
705 unsigned int A6H1 :1;
706 unsigned int A6S0 :1;
707 unsigned int :5;
708 #endif
709 } BIT;
710 } WCR3;
711
712 /* Memory Control Register 0xff800014) */
713 union {
714 unsigned int WORD; /* Word Access */
715 struct { /* Bit Access */
716 #if BYTE_ORDER == BIG_ENDIAN
717 /* Bit 31..0 */
718 unsigned int RASD :1;
719 unsigned int MRSET :1;
720 unsigned int TRC2 :1;
721 unsigned int TRC1 :1;
722 unsigned int TRC0 :1;
723 unsigned int :3;
724 unsigned int TCAS :1;
725 unsigned int :1;
726 unsigned int TPC2 :1;
727 unsigned int TPC1 :1;
728 unsigned int TPC0 :1;
729 unsigned int :1;
730 unsigned int RCD1 :1;
731 unsigned int RCD0 :1;
732 unsigned int TRWL2 :1;
733 unsigned int TRWL1 :1;
734 unsigned int TRWL0 :1;
735 unsigned int TRAS2 :1;
736 unsigned int TRAS1 :1;
737 unsigned int TRAS0 :1;
738 unsigned int BE :1;
739 unsigned int SZ1 :1;
740 unsigned int SZ0 :1;
741 unsigned int AMXEXT :1;
742 unsigned int AMX2 :1;
743 unsigned int AMX1 :1;
744 unsigned int AMX0 :1;
745 unsigned int RFSH :1;
746 unsigned int RMODE :1;
747 unsigned int EDOMODE :1;
748 #else /* BYTE_ORDER == LITTLE_ENDIAN */
749 /* Bit 0..31 */
750 unsigned int EDOMODE :1;
751 unsigned int RMODE :1;
752 unsigned int RFSH :1;
753 unsigned int AMX0 :1;
754 unsigned int AMX1 :1;
755 unsigned int AMX2 :1;
756 unsigned int AMXEXT :1;
757 unsigned int SZ0 :1;
758 unsigned int SZ1 :1;
759 unsigned int BE :1;
760 unsigned int TRAS0 :1;
761 unsigned int TRAS1 :1;
762 unsigned int TRAS2 :1;
763 unsigned int TRWL0 :1;
764 unsigned int TRWL1 :1;
765 unsigned int TRWL2 :1;
766 unsigned int RCD0 :1;
767 unsigned int RCD1 :1;
768 unsigned int :1;
769 unsigned int TPC0 :1;
770 unsigned int TPC1 :1;
771 unsigned int TPC2 :1;
772 unsigned int :1;
773 unsigned int TCAS :1;
774 unsigned int :3;
775 unsigned int TRC0 :1;
776 unsigned int TRC1 :1;
777 unsigned int TRC2 :1;
778 unsigned int MRSET :1;
779 unsigned int RASD :1;
780 #endif
781 } BIT;
782 } MCR;
783
784 /* PCMCIA Control Register 0xff800018) */
785 union {
786 unsigned short WORD; /* Word Access */
787 struct { /* Bit Access */
788 #if BYTE_ORDER == BIG_ENDIAN
789 /* Bit 15..0 */
790 unsigned short A5PCW1 :1;
791 unsigned short A5PCW0 :1;
792 unsigned short A6PCW1 :1;
793 unsigned short A6PCW0 :1;
794 unsigned short A5TED2 :1;
795 unsigned short A5TED1 :1;
796 unsigned short A5TED0 :1;
797 unsigned short A6TED2 :1;
798 unsigned short A6TED1 :1;
799 unsigned short A6TED0 :1;
800 unsigned short A5TEH2 :1;
801 unsigned short A5TEH1 :1;
802 unsigned short A5TEH0 :1;
803 unsigned short A6TEH2 :1;
804 unsigned short A6TEH1 :1;
805 unsigned short A6TEH0 :1;
806 #else /* BYTE_ORDER == LITTLE_ENDIAN */
807 /* Bit 0..15 */
808 unsigned short A6TEH0 :1;
809 unsigned short A6TEH1 :1;
810 unsigned short A6TEH2 :1;
811 unsigned short A5TEH0 :1;
812 unsigned short A5TEH1 :1;
813 unsigned short A5TEH2 :1;
814 unsigned short A6TED0 :1;
815 unsigned short A6TED1 :1;
816 unsigned short A6TED2 :1;
817 unsigned short A5TED0 :1;
818 unsigned short A5TED1 :1;
819 unsigned short A5TED2 :1;
820 unsigned short A6PCW0 :1;
821 unsigned short A6PCW1 :1;
822 unsigned short A5PCW0 :1;
823 unsigned short A5PCW1 :1;
824 #endif
825 } BIT;
826 } PCR;
827
828 /* Refresh Timer Control/Status Register 0xff80001c) */
829 union {
830 unsigned short WORD; /* Word Access */
831 struct { /* Bit Access */
832 #if BYTE_ORDER == BIG_ENDIAN
833 /* Bit 15..0 */
834 unsigned short :8;
835 unsigned short CMF :1;
836 unsigned short CMIE :1;
837 unsigned short CKS2 :1;
838 unsigned short CKS1 :1;
839 unsigned short CKS0 :1;
840 unsigned short OVF :1;
841 unsigned short OVIE :1;
842 unsigned short LMTS :1;
843 #else /* BYTE_ORDER == LITTLE_ENDIAN */
844 /* Bit 0..15 */
845 unsigned short LMTS :1;
846 unsigned short OVIE :1;
847 unsigned short OVF :1;
848 unsigned short CKS0 :1;
849 unsigned short CKS1 :1;
850 unsigned short CKS2 :1;
851 unsigned short CMIE :1;
852 unsigned short CMF :1;
853 unsigned short :8;
854 #endif
855 } BIT;
856 } RTCSR;
857
858 /* Refresh Timer CouNTer 0xff800020) */
859 unsigned short RTCNT;
860
861 /* Refresh Time Constant cOunteR 0xff800024) */
862 unsigned short RTCOR;
863
864 /* Refresh Count Register 0xff800028) */
865 unsigned short RFCR;
866 };
867
868 /* BSC Address */
869 #define SHREG_BSC (*(volatile struct sh3_bsc *) 0xff800000)
870
871 #endif
872 #endif /* !_SH3_BSCREG_H_ */
873