📄 sparc.h
字号:
#ifndef _SPARC_HEADER
#define _SPARC_HEADER
// op decoding (inst(31 downto 30))
// subtype op_type is std_logic_vector(1 downto 0)
const int FMT2 = 0;
const int CALL = 1;
const int FMT3 = 2;
const int LDST = 3;
// op2 decoding (inst(24 downto 22))
// subtype op2_type is std_logic_vector(2 downto 0)
const int BICC = 2;
const int SETHI = 4;
const int FBFCC = 6;
const int CBCCC = 7;
// op3 decoding (inst(24 downto 19))
// subtype op3_type is std_logic_vector(5 downto 0)
const int IADD = 0;
const int IAND = 1;
const int IOR = 2;
const int IXOR = 3;
const int ISUB = 4;
const int ANDN = 5;
const int ORN = 6;
const int IXNOR = 7;
const int ADDX = 8;
const int UMUL = 0xa;
const int SMUL = 0xb;
const int SUBX = 0xc;
const int UDIV = 0xe;
const int SDIV = 0xf;
const int ADDCC = 0x10;
const int ANDCC = 0x11;
const int ORCC = 0x12;
const int XORCC = 0x13;
const int SUBCC = 0x14;
const int ANDNCC = 0x15;
const int ORNCC = 0x16;
const int XNORCC = 0x17;
const int ADDXCC = 0x18;
const int UMULCC = 0x1a;
const int SMULCC = 0x1b;
const int SUBXCC = 0x1c;
const int UDIVCC = 0x1e;
const int SDIVCC = 0x1f;
const int TADDCC = 0x20;
const int TSUBCC = 0x21;
const int TADDCCTV = 0x22;
const int TSUBCCTV = 0x23;
const int MULSCC = 0x24;
const int ISLL = 0x25;
const int ISRL = 0x26;
const int ISRA = 0x27;
const int RDY = 0x28;
const int RDPSR = 0x29;
const int RDWIM = 0x2a;
const int RDTBR = 0x2b;
const int WRY = 0x30;
const int WRPSR = 0x31;
const int WRWIM = 0x32;
const int WRTBR = 0x33;
const int FPOP1 = 0x34;
const int FPOP2 = 0x35;
const int CPOP1 = 0x36;
const int CPOP2 = 0x37;
const int JMPL = 0x38;
const int TICC = 0x3a;
const int FLUSH = 0x3b;
const int RETT = 0x39;
const int SAVE = 0x3c;
const int RESTORE = 0x3d;
const int UMAC = 0x3e;
const int SMAC = 0x3f;
const int LD = 0x00;
const int LDUB = 0x01;
const int LDUH = 0x02;
const int LDD = 0x03;
const int LDSB = 0x09;
const int LDSH = 0x0a;
const int LDSTUB = 0x0d;
const int SWAP = 0x0f;
const int LDA = 0x10;
const int LDUBA = 0x11;
const int LDUHA = 0x12;
const int LDDA = 0x13;
const int LDSBA = 0x19;
const int LDSHA = 0x1a;
const int LDSTUBA = 0x1d;
const int SWAPA = 0x1f;
const int LDF = 0x20;
const int LDFSR = 0x21;
const int LDDF = 0x23;
const int LDC = 0x30;
const int LDCSR = 0x31;
const int LDDC = 0x33;
const int ST = 0x04;
const int STB = 0x05;
const int STH = 0x06;
const int ISTD = 0x07;
const int STA = 0x14;
const int STBA = 0x15;
const int STHA = 0x16;
const int STDA = 0x17;
const int STF = 0x24;
const int STFSR = 0x25;
const int STDFQ = 0x26;
const int STDF = 0x27;
const int STC = 0x34;
const int STCSR = 0x35;
const int STDCQ = 0x36;
const int STDC = 0x37;
// bicc decoding (inst(27 downto 25))
const int BA = 0x08;
// fpop1 decoding
// subtype fpop_type is std_logic_vector(8 downto 0);
const int FITOS = 0xc4;
const int FITOD = 0xc8;
const int FSTOI = 0xd1;
const int FDTOI = 0xd2;
const int FSTOD = 0xc9;
const int FDTOS = 0xc6;
const int FMOVS = 0x01;
const int FNEGS = 0x05;
const int FABSS = 0x09;
const int FSQRTS = 0x29;
const int FSQRTD = 0x2a;
const int FADDS = 0x41;
const int FADDD = 0x42;
const int FSUBS = 0x45;
const int FSUBD = 0x46;
const int FMULS = 0x49;
const int FMULD = 0x4a;
const int FSMULD = 0x69;
const int FDIVS = 0x4d;
const int FDIVD = 0x4e;
// fpop2 decoding
const int FCMPS = 0x51;
const int FCMPD = 0x52;
const int FCMPES = 0x55;
const int FCMPED = 0x56;
// trap type decoding
// subtype trap_type is std_logic_vector(5 downto 0);
const int TT_IAEX = 1;
const int TT_IINST = 2;
const int TT_PRIV = 3;
const int TT_FPDIS = 4;
const int TT_WINOF = 5;
const int TT_WINUF = 6;
const int TT_UNALA = 7;
const int TT_FPEXC = 8;
const int TT_DAEX = 9;
const int TT_TAG = 0xa;
const int TT_WATCH = 0xb;
const int TT_DSU = 0x10;
const int TT_PWD = 0x11;
const int TT_RFERR = 0x20;
const int TT_IAERR = 0x21;
const int TT_CPDIS = 0x24;
const int TT_CPEXC = 0x28;
const int TT_DIV = 0x2a;
const int TT_DSEX = 0x2b;
const int TT_TICC = 0x3f;
// Alternate address space identifiers (only 5 lsb bist are used)
// subtype asi_type is std_logic_vector(4 downto 0);
const int ASI_SYSR = 0x02;
const int ASI_UINST = 0x08;
const int ASI_SINST = 0x09;
const int ASI_UDATA = 0x0A;
const int ASI_SDATA = 0x0B;
const int ASI_ITAG = 0x0C;
const int ASI_IDATA = 0x0D;
const int ASI_DTAG = 0x0E;
const int ASI_DDATA = 0x0F;
const int ASI_IFLUSH = 0x10;
const int ASI_DFLUSH = 0x11;
const int ASI_FLUSH_PAGE = 0x10;
const int ASI_FLUSH_CTX = 0x13;
const int ASI_DCTX = 0x14;
const int ASI_ICTX = 0x15;
const int ASI_MMUFLUSHPROBE = 0x18;
const int ASI_MMUREGS = 0x19;
const int ASI_MMU_BP = 0x1c;
const int ASI_MMU_DIAG = 0x1d;
const int ASI_MMU_DSU = 0x1f;
// ftt decoding
//subtype ftt_type is std_logic_vector(2 downto 0);
const int FPIEEE_ERR = 1;
const int FPSEQ_ERR = 4;
const int FPHW_ERR = 5;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -