2006-01-10 20:57:37 +01:00
|
|
|
////////////////////////////////////////////////////////////////////
|
|
|
|
//
|
|
|
|
// Bitfield definitions.
|
|
|
|
//
|
|
|
|
|
2006-01-25 23:06:23 +01:00
|
|
|
// Universal (format-independent) fields
|
|
|
|
def bitfield OPCODE_HI <31:29>;
|
|
|
|
def bitfield OPCODE_LO <28:26>;
|
|
|
|
|
|
|
|
def bitfield SPECIAL_HI < 5: 3>;
|
|
|
|
def bitfield SPECIAL_HI < 2: 0>;
|
|
|
|
|
|
|
|
def bitfield REGIMM_HI <20:19>;
|
|
|
|
def bitfield REGIMM_LO <18:16>;
|
|
|
|
|
|
|
|
def bitfield RS <25:21>;
|
|
|
|
def bitfield RT <20:16>;
|
|
|
|
|
|
|
|
// Integer operate format(s>;
|
|
|
|
def bitfield INTIMM <15: 0>; // integer immediate (literal)
|
|
|
|
def bitfield IMM <12:12>; // immediate flag
|
|
|
|
def bitfield INTFUNC <11: 5>; // function code
|
|
|
|
def bitfield RD <15:11>; // dest reg
|
|
|
|
|
|
|
|
// Memory format
|
|
|
|
def signed bitfield MEMDISP <15: 0>; // displacement
|
|
|
|
def bitfield MEMFUNC <15: 0>; // function code (same field, unsigned)
|
|
|
|
|
|
|
|
// Memory-format jumps
|
|
|
|
def bitfield JMPFUNC <15:14>; // function code (disp<15:14>)
|
|
|
|
def bitfield JMPHINT <13: 0>; // tgt Icache idx hint (disp<13:0>)
|
|
|
|
|
|
|
|
// Branch format
|
|
|
|
def signed bitfield BRDISP <20: 0>; // displacement
|
|
|
|
|
|
|
|
// Floating-point operate format
|
|
|
|
def bitfield FMT <25:21>;
|
|
|
|
def bitfield FT <20:16>;
|
|
|
|
def bitfield FS <15:11>;
|
|
|
|
def bitfield FD <10: 6>;
|
|
|
|
|
|
|
|
def bitfield FP_FULLFUNC <15: 5>; // complete function code
|
|
|
|
def bitfield FP_TRAPMODE <15:13>; // trapping mode
|
|
|
|
def bitfield FP_ROUNDMODE <12:11>; // rounding mode
|
|
|
|
def bitfield FP_TYPEFUNC <10: 5>; // type+func: handiest for decoding
|
|
|
|
def bitfield FP_SRCTYPE <10: 9>; // source reg type
|
|
|
|
def bitfield FP_SHORTFUNC < 8: 5>; // short function code
|
|
|
|
def bitfield FP_SHORTFUNC_TOP2 <8:7>; // top 2 bits of short func code
|
|
|
|
|
|
|
|
// PALcode format
|
|
|
|
def bitfield PALFUNC <25: 0>; // function code
|
|
|
|
|
|
|
|
// EV5 PAL instructions:
|
|
|
|
// HW_LD/HW_ST
|
|
|
|
def bitfield HW_LDST_PHYS <15>; // address is physical
|
|
|
|
def bitfield HW_LDST_ALT <14>; // use ALT_MODE IPR
|
|
|
|
def bitfield HW_LDST_WRTCK <13>; // HW_LD only: fault if no write acc
|
|
|
|
def bitfield HW_LDST_QUAD <12>; // size: 0=32b, 1=64b
|
|
|
|
def bitfield HW_LDST_VPTE <11>; // HW_LD only: is PTE fetch
|
|
|
|
def bitfield HW_LDST_LOCK <10>; // HW_LD only: is load locked
|
|
|
|
def bitfield HW_LDST_COND <10>; // HW_ST only: is store conditional
|
|
|
|
def signed bitfield HW_LDST_DISP <9:0>; // signed displacement
|
|
|
|
|
|
|
|
// HW_REI
|
|
|
|
def bitfield HW_REI_TYP <15:14>; // type: stalling vs. non-stallingk
|
|
|
|
def bitfield HW_REI_MBZ <13: 0>; // must be zero
|
|
|
|
|
|
|
|
// HW_MTPR/MW_MFPR
|
|
|
|
def bitfield HW_IPR_IDX <15:0>; // IPR index
|
|
|
|
|
|
|
|
// M5 instructions
|
|
|
|
def bitfield M5FUNC <7:0>;
|