📄 sym_defs.h
字号:
#define LOA 0x08 /* sta: arbitration lost */ #define WOA 0x04 /* sta: arbitration won */ #define IRST 0x02 /* sta: scsi reset signal */ #define SDP 0x01 /* sta: scsi parity signal *//*0e*/ u8 nc_sstat1; #define FF3210 0xf0 /* sta: bytes in the scsi fifo *//*0f*/ u8 nc_sstat2; #define ILF1 0x80 /* sta: data in SIDL register msb[W]*/ #define ORF1 0x40 /* sta: data in SODR register msb[W]*/ #define OLF1 0x20 /* sta: data in SODL register msb[W]*/ #define DM 0x04 /* sta: DIFFSENS mismatch (895/6 only) */ #define LDSC 0x02 /* sta: disconnect & reconnect *//*10*/ u8 nc_dsa; /* --> Base page *//*11*/ u8 nc_dsa1;/*12*/ u8 nc_dsa2;/*13*/ u8 nc_dsa3;/*14*/ u8 nc_istat; /* --> Main Command and status */ #define CABRT 0x80 /* cmd: abort current operation */ #define SRST 0x40 /* mod: reset chip */ #define SIGP 0x20 /* r/w: message from host to script */ #define SEM 0x10 /* r/w: message between host + script */ #define CON 0x08 /* sta: connected to scsi */ #define INTF 0x04 /* sta: int on the fly (reset by wr)*/ #define SIP 0x02 /* sta: scsi-interrupt */ #define DIP 0x01 /* sta: host/script interrupt *//*15*/ u8 nc_istat1; /* 896 only */ #define FLSH 0x04 /* sta: chip is flushing */ #define SCRUN 0x02 /* sta: scripts are running */ #define SIRQD 0x01 /* r/w: disable INT pin *//*16*/ u8 nc_mbox0; /* 896 only *//*17*/ u8 nc_mbox1; /* 896 only *//*18*/ u8 nc_ctest0;/*19*/ u8 nc_ctest1;/*1a*/ u8 nc_ctest2; #define CSIGP 0x40 /* bits 0-2,7 rsvd for C1010 *//*1b*/ u8 nc_ctest3; #define FLF 0x08 /* cmd: flush dma fifo */ #define CLF 0x04 /* cmd: clear dma fifo */ #define FM 0x02 /* mod: fetch pin mode */ #define WRIE 0x01 /* mod: write and invalidate enable */ /* bits 4-7 rsvd for C1010 *//*1c*/ u32 nc_temp; /* ### Temporary stack *//*20*/ u8 nc_dfifo;/*21*/ u8 nc_ctest4; #define BDIS 0x80 /* mod: burst disable */ #define MPEE 0x08 /* mod: master parity error enable *//*22*/ u8 nc_ctest5; #define DFS 0x20 /* mod: dma fifo size */ /* bits 0-1, 3-7 rsvd for C1010 *//*23*/ u8 nc_ctest6;/*24*/ u32 nc_dbc; /* ### Byte count and command *//*28*/ u32 nc_dnad; /* ### Next command register *//*2c*/ u32 nc_dsp; /* --> Script Pointer *//*30*/ u32 nc_dsps; /* --> Script pointer save/opcode#2 *//*34*/ u8 nc_scratcha; /* Temporary register a *//*35*/ u8 nc_scratcha1;/*36*/ u8 nc_scratcha2;/*37*/ u8 nc_scratcha3;/*38*/ u8 nc_dmode; #define BL_2 0x80 /* mod: burst length shift value +2 */ #define BL_1 0x40 /* mod: burst length shift value +1 */ #define ERL 0x08 /* mod: enable read line */ #define ERMP 0x04 /* mod: enable read multiple */ #define BOF 0x02 /* mod: burst op code fetch *//*39*/ u8 nc_dien;/*3a*/ u8 nc_sbr;/*3b*/ u8 nc_dcntl; /* --> Script execution control */ #define CLSE 0x80 /* mod: cache line size enable */ #define PFF 0x40 /* cmd: pre-fetch flush */ #define PFEN 0x20 /* mod: pre-fetch enable */ #define SSM 0x10 /* mod: single step mode */ #define IRQM 0x08 /* mod: irq mode (1 = totem pole !) */ #define STD 0x04 /* cmd: start dma mode */ #define IRQD 0x02 /* mod: irq disable */ #define NOCOM 0x01 /* cmd: protect sfbr while reselect */ /* bits 0-1 rsvd for C1010 *//*3c*/ u32 nc_adder;/*40*/ u16 nc_sien; /* -->: interrupt enable *//*42*/ u16 nc_sist; /* <--: interrupt status */ #define SBMC 0x1000/* sta: SCSI Bus Mode Change (895/6 only) */ #define STO 0x0400/* sta: timeout (select) */ #define GEN 0x0200/* sta: timeout (general) */ #define HTH 0x0100/* sta: timeout (handshake) */ #define MA 0x80 /* sta: phase mismatch */ #define CMP 0x40 /* sta: arbitration complete */ #define SEL 0x20 /* sta: selected by another device */ #define RSL 0x10 /* sta: reselected by another device*/ #define SGE 0x08 /* sta: gross error (over/underflow)*/ #define UDC 0x04 /* sta: unexpected disconnect */ #define RST 0x02 /* sta: scsi bus reset detected */ #define PAR 0x01 /* sta: scsi parity error *//*44*/ u8 nc_slpar;/*45*/ u8 nc_swide;/*46*/ u8 nc_macntl;/*47*/ u8 nc_gpcntl;/*48*/ u8 nc_stime0; /* cmd: timeout for select&handshake*//*49*/ u8 nc_stime1; /* cmd: timeout user defined *//*4a*/ u16 nc_respid; /* sta: Reselect-IDs *//*4c*/ u8 nc_stest0;/*4d*/ u8 nc_stest1; #define SCLK 0x80 /* Use the PCI clock as SCSI clock */ #define DBLEN 0x08 /* clock doubler running */ #define DBLSEL 0x04 /* clock doubler selected */ /*4e*/ u8 nc_stest2; #define ROF 0x40 /* reset scsi offset (after gross error!) */ #define EXT 0x02 /* extended filtering *//*4f*/ u8 nc_stest3; #define TE 0x80 /* c: tolerAnt enable */ #define HSC 0x20 /* c: Halt SCSI Clock */ #define CSF 0x02 /* c: clear scsi fifo *//*50*/ u16 nc_sidl; /* Lowlevel: latched from scsi data *//*52*/ u8 nc_stest4; #define SMODE 0xc0 /* SCSI bus mode (895/6 only) */ #define SMODE_HVD 0x40 /* High Voltage Differential */ #define SMODE_SE 0x80 /* Single Ended */ #define SMODE_LVD 0xc0 /* Low Voltage Differential */ #define LCKFRQ 0x20 /* Frequency Lock (895/6 only) */ /* bits 0-5 rsvd for C1010 *//*53*/ u8 nc_53_;/*54*/ u16 nc_sodl; /* Lowlevel: data out to scsi data *//*56*/ u8 nc_ccntl0; /* Chip Control 0 (896) */ #define ENPMJ 0x80 /* Enable Phase Mismatch Jump */ #define PMJCTL 0x40 /* Phase Mismatch Jump Control */ #define ENNDJ 0x20 /* Enable Non Data PM Jump */ #define DISFC 0x10 /* Disable Auto FIFO Clear */ #define DILS 0x02 /* Disable Internal Load/Store */ #define DPR 0x01 /* Disable Pipe Req *//*57*/ u8 nc_ccntl1; /* Chip Control 1 (896) */ #define ZMOD 0x80 /* High Impedance Mode */ #define DDAC 0x08 /* Disable Dual Address Cycle */ #define XTIMOD 0x04 /* 64-bit Table Ind. Indexing Mode */ #define EXTIBMV 0x02 /* Enable 64-bit Table Ind. BMOV */ #define EXDBMV 0x01 /* Enable 64-bit Direct BMOV *//*58*/ u16 nc_sbdl; /* Lowlevel: data from scsi data *//*5a*/ u16 nc_5a_;/*5c*/ u8 nc_scr0; /* Working register B *//*5d*/ u8 nc_scr1;/*5e*/ u8 nc_scr2;/*5f*/ u8 nc_scr3;/*60*/ u8 nc_scrx[64]; /* Working register C-R *//*a0*/ u32 nc_mmrs; /* Memory Move Read Selector *//*a4*/ u32 nc_mmws; /* Memory Move Write Selector *//*a8*/ u32 nc_sfs; /* Script Fetch Selector *//*ac*/ u32 nc_drs; /* DSA Relative Selector *//*b0*/ u32 nc_sbms; /* Static Block Move Selector *//*b4*/ u32 nc_dbms; /* Dynamic Block Move Selector *//*b8*/ u32 nc_dnad64; /* DMA Next Address 64 *//*bc*/ u16 nc_scntl4; /* C1010 only */ #define U3EN 0x80 /* Enable Ultra 3 */ #define AIPCKEN 0x40 /* AIP checking enable */ /* Also enable AIP generation on C10-33*/ #define XCLKH_DT 0x08 /* Extra clock of data hold on DT edge */ #define XCLKH_ST 0x04 /* Extra clock of data hold on ST edge */ #define XCLKS_DT 0x02 /* Extra clock of data set on DT edge */ #define XCLKS_ST 0x01 /* Extra clock of data set on ST edge *//*be*/ u8 nc_aipcntl0; /* AIP Control 0 C1010 only *//*bf*/ u8 nc_aipcntl1; /* AIP Control 1 C1010 only */ #define DISAIP 0x08 /* Disable AIP generation C10-66 only *//*c0*/ u32 nc_pmjad1; /* Phase Mismatch Jump Address 1 *//*c4*/ u32 nc_pmjad2; /* Phase Mismatch Jump Address 2 *//*c8*/ u8 nc_rbc; /* Remaining Byte Count *//*c9*/ u8 nc_rbc1;/*ca*/ u8 nc_rbc2;/*cb*/ u8 nc_rbc3;/*cc*/ u8 nc_ua; /* Updated Address *//*cd*/ u8 nc_ua1;/*ce*/ u8 nc_ua2;/*cf*/ u8 nc_ua3;/*d0*/ u32 nc_esa; /* Entry Storage Address *//*d4*/ u8 nc_ia; /* Instruction Address *//*d5*/ u8 nc_ia1;/*d6*/ u8 nc_ia2;/*d7*/ u8 nc_ia3;/*d8*/ u32 nc_sbc; /* SCSI Byte Count (3 bytes only) *//*dc*/ u32 nc_csbc; /* Cumulative SCSI Byte Count */ /* Following for C1010 only *//*e0*/ u16 nc_crcpad; /* CRC Value *//*e2*/ u8 nc_crccntl0; /* CRC control register */ #define SNDCRC 0x10 /* Send CRC Request *//*e3*/ u8 nc_crccntl1; /* CRC control register *//*e4*/ u32 nc_crcdata; /* CRC data register *//*e8*/ u32 nc_e8_;/*ec*/ u32 nc_ec_;/*f0*/ u16 nc_dfbc; /* DMA FIFO byte count */ };/*----------------------------------------------------------- * * Utility macros for the script. * *----------------------------------------------------------- */#define REGJ(p,r) (offsetof(struct sym_reg, p ## r))#define REG(r) REGJ (nc_, r)/*----------------------------------------------------------- * * SCSI phases * *----------------------------------------------------------- */#define SCR_DATA_OUT 0x00000000#define SCR_DATA_IN 0x01000000#define SCR_COMMAND 0x02000000#define SCR_STATUS 0x03000000#define SCR_DT_DATA_OUT 0x04000000#define SCR_DT_DATA_IN 0x05000000#define SCR_MSG_OUT 0x06000000#define SCR_MSG_IN 0x07000000/* DT phases are illegal for non Ultra3 mode */#define SCR_ILG_OUT 0x04000000#define SCR_ILG_IN 0x05000000/*----------------------------------------------------------- * * Data transfer via SCSI. * *----------------------------------------------------------- * * MOVE_ABS (LEN) * <<start address>> * * MOVE_IND (LEN) * <<dnad_offset>> * * MOVE_TBL * <<dnad_offset>> * *----------------------------------------------------------- */#define OPC_MOVE 0x08000000#define SCR_MOVE_ABS(l) ((0x00000000 | OPC_MOVE) | (l))/* #define SCR_MOVE_IND(l) ((0x20000000 | OPC_MOVE) | (l)) */#define SCR_MOVE_TBL (0x10000000 | OPC_MOVE)#define SCR_CHMOV_ABS(l) ((0x00000000) | (l))/* #define SCR_CHMOV_IND(l) ((0x20000000) | (l)) */#define SCR_CHMOV_TBL (0x10000000)#ifdef SYM_CONF_TARGET_ROLE_SUPPORT/* We steal the `indirect addressing' flag for target mode MOVE in scripts */#define OPC_TCHMOVE 0x08000000#define SCR_TCHMOVE_ABS(l) ((0x20000000 | OPC_TCHMOVE) | (l))#define SCR_TCHMOVE_TBL (0x30000000 | OPC_TCHMOVE)#define SCR_TMOV_ABS(l) ((0x20000000) | (l))#define SCR_TMOV_TBL (0x30000000)#endifstruct sym_tblmove { u32 size; u32 addr;};/*----------------------------------------------------------- * * Selection * *----------------------------------------------------------- * * SEL_ABS | SCR_ID (0..15) [ | REL_JMP] * <<alternate_address>> * * SEL_TBL | << dnad_offset>> [ | REL_JMP] * <<alternate_address>> * *----------------------------------------------------------- */#define SCR_SEL_ABS 0x40000000#define SCR_SEL_ABS_ATN 0x41000000#define SCR_SEL_TBL 0x42000000#define SCR_SEL_TBL_ATN 0x43000000#ifdef SYM_CONF_TARGET_ROLE_SUPPORT#define SCR_RESEL_ABS 0x40000000#define SCR_RESEL_ABS_ATN 0x41000000#define SCR_RESEL_TBL 0x42000000#define SCR_RESEL_TBL_ATN 0x43000000#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -