Changeset bc85fd5a in rtems for c/src/lib/libcpu/i960
- Timestamp:
- 07/11/00 19:31:04 (23 years ago)
- Branches:
- 4.10, 4.11, 4.8, 4.9, 5, master
- Children:
- 073e2411
- Parents:
- 9e52b29
- Location:
- c/src/lib/libcpu/i960
- Files:
-
- 17 added
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
c/src/lib/libcpu/i960/include/i960RP.h
r9e52b29 rbc85fd5a 11 11 #define __I960RP_h 12 12 13 /*----------------------------------------------------------*/ 14 /* Example 6. Include File (evrp.h) */ 15 /*----------------------------------------------------------*/ 16 /* Define JX Core memory mapped register addresses */ 17 /* Common to Jx and RP: */ 18 #define DLMCON_ADDR 0xff008100 19 #define LMAR0_ADDR 0xff008108 20 #define LMMR0_ADDR 0xff00810c 21 #define LMAR1_ADDR 0xff008110 22 #define LMMR1_ADDR 0xff008114 23 #define IPB0_ADDR 0xff008400 24 #define IPB1_ADDR 0xff008404 25 #define DAB0_ADDR 0xff008420 26 #define DAB1_ADDR 0xff008424 27 #define BPCON_ADDR 0xff008440 28 #define IPND_ADDR 0xff008500 29 #define IMSK_ADDR 0xff008504 30 #define ICON_ADDR 0xff008510 31 #define IMAP0_ADDR 0xff008520 32 #define IMAP1_ADDR 0xff008524 33 #define IMAP2_ADDR 0xff008528 34 #define PMCON0_ADDR 0xff008600 35 #define PMCON2_ADDR 0xff008608 36 #define PMCON4_ADDR 0xff008610 37 #define PMCON6_ADDR 0xff008618 38 #define PMCON8_ADDR 0xff008620 39 #define PMCON10_ADDR 0xff008628 40 #define PMCON12_ADDR 0xff008630 41 #define PMCON14_ADDR 0xff008638 42 #define BCON_ADDR 0xff0086fc 43 #define PRCB_ADDR 0xff008700 44 #define ISP_ADDR 0xff008704 45 #define SSP_ADDR 0xff008708 46 #define DEVID_ADDR 0xff008710 47 #define TRR0_ADDR 0xff000300 48 #define TCR0_ADDR 0xff000304 49 #define TMR0_ADDR 0xff000308 50 #define TRR1_ADDR 0xff000310 51 #define TCR1_ADDR 0xff000314 52 #define TMR1_ADDR 0xff000318 13 /* i960RP control structures */ 14 15 /* Intel i960RP Control Table */ 16 17 typedef struct { 18 /* Control Group 0 */ 19 unsigned int rsvd00; 20 unsigned int rsvd01; 21 unsigned int rsvd02; 22 unsigned int rsvd03; 23 /* Control Group 1 */ 24 unsigned int imap0; /* interrupt map 0 */ 25 unsigned int imap1; /* interrupt map 1 */ 26 unsigned int imap2; /* interrupt map 2 */ 27 unsigned int icon; /* interrupt control */ 28 /* Control Group 2 */ 29 unsigned int pmcon0; /* memory region 0 configuration */ 30 unsigned int rsvd1; 31 unsigned int pmcon2; /* memory region 2 configuration */ 32 unsigned int rsvd2; 33 /* Control Group 3 */ 34 unsigned int pmcon4; /* memory region 4 configuration */ 35 unsigned int rsvd3; 36 unsigned int pmcon6; /* memory region 6 configuration */ 37 unsigned int rsvd4; 38 /* Control Group 4 */ 39 unsigned int pmcon8; /* memory region 8 configuration */ 40 unsigned int rsvd5; 41 unsigned int pmcon10; /* memory region 10 configuration */ 42 unsigned int rsvd6; 43 /* Control Group 5 */ 44 unsigned int pmcon12; /* memory region 12 configuration */ 45 unsigned int rsvd7; 46 unsigned int pmcon14; /* memory region 14 configuration */ 47 unsigned int rsvd8; 48 /* Control Group 6 */ 49 unsigned int rsvd9; 50 unsigned int rsvd10; 51 unsigned int tc; /* trace control */ 52 unsigned int bcon; /* bus configuration control */ 53 } i960rp_control_table; 54 55 /* Intel i960RP Processor Control Block */ 56 57 /* Intel i960RP Processor Control Block */ 58 59 typedef struct { 60 unsigned int *fault_tbl; /* fault table base address */ 61 i960rp_control_table 62 *control_tbl; /* control table base address */ 63 unsigned int initial_ac; /* AC register initial value */ 64 unsigned int fault_config; /* fault configuration word */ 65 void **intr_tbl; /* interrupt table base address */ 66 void *sys_proc_tbl; /* system procedure table 67 base address */ 68 unsigned int reserved; /* reserved */ 69 unsigned int *intr_stack; /* interrupt stack pointer */ 70 unsigned int ins_cache_cfg; /* instruction cache 71 configuration word */ 72 unsigned int reg_cache_cfg; /* register cache configuration word */ 73 } i960rp_PRCB; 74 75 typedef i960rp_control_table i960_control_table; 76 typedef i960rp_PRCB i960_PRCB; 77 78 /* Addresses shared with JX */ 79 80 #include <libcpu/i960JX_RP_common.h> 53 81 54 82 /* RP-only addresses: */ … … 315 343 #define RP_PRI_MEM_WIND_BASE 0x80000000 316 344 345 #define i960_unmask_intr( xint ) \ 346 { register unsigned int _mask= (1<<(xint)); \ 347 register unsigned int *_imsk = (int * ) IMSK_ADDR; \ 348 register unsigned int _val= *_imsk; \ 349 asm volatile( "or %0,%2,%0; \ 350 st %0,(%1)" \ 351 : "=d" (_val), "=d" (_imsk), "=d" (_mask) \ 352 : "0" (_val), "1" (_imsk), "2" (_mask) ); \ 353 } 354 355 #define i960_mask_intr( xint ) \ 356 { register unsigned int _mask= (1<<(xint)); \ 357 register unsigned int *_imsk = (int * ) IMSK_ADDR; \ 358 register unsigned int _val = *_imsk; \ 359 asm volatile( "andnot %2,%0,%0; \ 360 st %0,(%1)" \ 361 : "=d" (_val), "=d" (_imsk), "=d" (_mask) \ 362 : "0" (_val), "1" (_imsk), "2" (_mask) ); \ 363 } 364 #define i960_clear_intr( xint ) \ 365 { register unsigned int _xint=xint; \ 366 register unsigned int _mask=(1<<(xint)); \ 367 register unsigned int *_ipnd = (int * ) IPND_ADDR; \ 368 register unsigned int _rslt = 0; \ 369 asm volatile( "loop_til_cleared: mov 0, %0; \ 370 atmod %1, %2, %0; \ 371 bbs %3,%0, loop_til_cleared" \ 372 : "=d" (_rslt), "=d" (_ipnd), "=d" (_mask), "=d" (_xint) \ 373 : "0" (_rslt), "1" (_ipnd), "2" (_mask), "3" (_xint) ); \ 374 } 375 376 static inline unsigned int i960_pend_intrs() 377 { register unsigned int _intr= *(unsigned int *) IPND_ADDR; 378 /*register unsigned int *_ipnd = (int * ) IPND_ADDR; \ 379 asm volatile( "mov (%0),%1" \ 380 : "=d" (_ipnd), "=d" (_mask) \ 381 : "0" (_ipnd), "1" (_mask) ); \ */ 382 return ( _intr ); 383 } 384 385 static inline unsigned int i960_mask_intrs() 386 { register unsigned int _intr= *(unsigned int *) IMSK_ADDR; 387 /*asm volatile( "mov sf1,%0" : "=d" (_intr) : "0" (_intr) );*/ 388 return( _intr ); 389 } 390 391 #define I960_SOFT_RESET_COMMAND 0x300 392 393 #define i960_soft_reset( prcb ) \ 394 { register i960_PRCB *_prcb = (prcb); \ 395 register unsigned int *_next=0; \ 396 register unsigned int _cmd = I960_SOFT_RESET_COMMAND; \ 397 asm volatile( "lda next,%1; \ 398 sysctl %0,%1,%2; \ 399 next: mov g0,g0" \ 400 : "=d" (_cmd), "=d" (_next), "=d" (_prcb) \ 401 : "0" (_cmd), "1" (_next), "2" (_prcb) ); \ 402 } 403 404 317 405 #endif 318 406 /* end of include file */
Note: See TracChangeset
for help on using the changeset viewer.