gem5/system/alpha/h/ssb.h
2003-11-14 10:52:42 -05:00

184 lines
5.2 KiB
C

#ifndef __SSB_H_LOADED
#define __SSB_H_LOADED
/*****************************************************************************
Copyright © 1993, 1994 Digital Equipment Corporation,
Maynard, Massachusetts.
All Rights Reserved
Permission to use, copy, modify, and distribute this software and its
documentation for any purpose and without fee is hereby granted, provided
that the copyright notice and this permission notice appear in all copies
of software and supporting documentation, and that the name of Digital not
be used in advertising or publicity pertaining to distribution of the software
without specific, written prior permission. Digital grants this permission
provided that you prominently mark, as not part of the original, any
modifications made to this software or documentation.
Digital Equipment Corporation disclaims all warranties and/or guarantees
with regard to this software, including all implied warranties of fitness for
a particular purpose and merchantability, and makes no representations
regarding the use of, or the results of the use of, the software and
documentation in terms of correctness, accuracy, reliability, currentness or
otherwise; and you rely on the software, documentation and results solely at
your own risk.
******************************************************************************/
/*
* $Id: ssb.h,v 1.1.1.1 1997/10/30 23:27:17 verghese Exp $;
*/
/*
* $Log: ssb.h,v $
* Revision 1.1.1.1 1997/10/30 23:27:17 verghese
* current 10/29/97
*
* Revision 1.3 1994/08/05 20:13:47 fdh
* Updated Copyright header and RCS $Id: identifier.
*
* Revision 1.2 1994/06/20 14:18:59 fdh
* Fixup header file preprocessor #include conditionals.
*
* Revision 1.1 1993/06/08 19:56:16 fdh
* Initial revision
*
*/
/* ssbinit */
/* Set up SSB definitions */
/* Last modified on 1/3/91 by L. Stewart */
#define SSB_stcreset1 0x0800 /* CR_DIR */
#define SSB_stcreset2 0x3820 /* CR_CABEN | CR_AUTO | CR_DIR */
/* | CR_FIFOMR */
#define SSB_TagCable 0
#define SSB_TagSlot 3
#define SSB_TagTVA 2
#define SSB_TagRFA 1
#define SSB_TagORF 5
#define SSB_TagStartTV 4
#define SSB_TagTVStat 6
#define SSB_TagLocalStat 7
#define SSB_AdrLocalStat 0x4000
#define SSB_AdrSRA 0x8000
#define SSB_AdrSRB 0x8001
#define SSB_LCRenable 0x1
#define SSB_LCRclrstat 0x2
#define SSB_LCRfifomr 0x4
#define SSB_LCRreset 0x8
#define SSB_LCRled 0x10
#define SSB_LSTfifoff 0x100
#define SSB_LSTfifohf 0x200
#define SSB_LSTfifoef 0x400
#define SSB_LSTinst 0x800
#define SSB_LSTid 0x1000
#define SSB_LSTotherinst 0x2000
#define SSB_LSTcnfg0 0x4000
#define SSB_LSTcnfg1 0x8000
#define SSB_LSTnode 0xf000
#define SSB_CRrParityS 0x01
#define SSB_CRdataWP 0x02
#define SSB_CRadrWP 0x04
#define SSB_CRerrEnable 0x08
#define SSB_CRreset 0x10
#define SSB_CRdoConfig 0x20
#define SSB_CRnodeClock 0x40
#define SSB_SRAshared 0x00000080
#define SSB_SRAdirty 0x00100000
#define SSB_SRAnType 0x80000000
#define SSB_PSRinst 0x001
#define SSB_PSRmerror 0x002
#define SSB_PSRreset 0x004
#define SSB_PSRerror 0x008
#define SSB_PSRserror 0x010
#define SSB_PSRisr 0x7e0
struct SSB_lsrtype {
unsigned sequence : 8;
unsigned slot : 8;
unsigned mix : 4;
unsigned inst : 1;
unsigned ef : 1;
unsigned hf : 1;
unsigned ff : 1;
unsigned crpad : 3;
unsigned crled : 1;
unsigned crreset : 1;
unsigned crfifomr : 1;
unsigned crclrstat : 1;
unsigned crenable : 1;
};
struct SSB_pstattype {
unsigned pad : 21;
unsigned isr : 6;
unsigned serror : 1;
unsigned error : 1;
unsigned reset : 1;
unsigned merror : 1;
unsigned inst : 1;
};
struct SSB_sratype {
unsigned nodeType : 1;
unsigned p0stat: 11;
unsigned dirty : 1;
unsigned p1stat : 11;
unsigned shared : 1;
unsigned cr : 7;
};
struct SSB_srbtype {
unsigned p1count : 8;
unsigned p0count : 8;
unsigned arbcount : 16;
};
extern int ssb_sequence;
extern int ssb_localcr;
extern int ssb_maincr;
extern int ssb_port;
extern int ssb_node;
extern int ssb_config1;
extern int ssb_config0;
extern int ssb_lastsra;
extern int ssb_lastsrb;
extern int ssb_lastlsr;
extern int ssb_lastieecc;
extern struct SSB_lsrtype ssb_lsr;
extern int ssb_mix;
extern struct SSB_sratype ssb_sra;
extern struct SSB_srbtype ssb_srb;
extern int ssb_resid;
extern struct SSB_pstattype ssb_portstatus;
/* ssb routines */
#define SSB_CR SSB_stcreset2
#define SSBCH 1020
#define SSB_CABLE(x) (wfifo(x, SSB_TagCable))
#define SSB_LDSLOT(x) (wfifo(x, SSB_TagSlot))
#define SSB_LDTVA(x, w) (wfifo((x) | ((w) ? 0x80000000 : 0), SSB_TagTVA))
#define SSB_LDRFA(a, c) (wfifo(((255 - c) << 16) + a, SSB_TagRFA))
#define SSB_LDORF(x) (wfifo(x, SSB_TagORF))
#define SSB_STARTTV(a, c, w) (wfifo(( (w << 15) | ((255 - c) << 16) | a), SSB_TagStartTV ))
#define SSB_TVSTAT(x) (wfifo(x, SSB_TagTVStat))
#define SSB_LOCALSTAT(x) (wfifo(x, SSB_TagLocalStat))
#define SSB_CFF() ( STC_SETCR(tvp->crmask & ~STC_CRFIFOMR), \
STC_SETCR(tvp->crmask | STC_CRFIFOMR) )
#endif /* __SSB_H_LOADED */