From 4be1f418bc4bd6d3b63b913e3ac57519acf4584a Mon Sep 17 00:00:00 2001 From: Korey Sewell Date: Wed, 25 Jan 2006 17:36:38 -0500 Subject: more changes to the decoder ... Now does special 3 table arch/mips/isa_desc/bitfields.h: Change from table names to actual bitfield name ... --HG-- extra : convert_revision : ead69065eb9c3e9c4ea4f67587a6fb07091898ed --- arch/mips/isa_desc/bitfields.h | 23 ++++++++++++++++------ arch/mips/isa_desc/decoder.h | 43 +++++++++++++++++++++++++----------------- 2 files changed, 43 insertions(+), 23 deletions(-) diff --git a/arch/mips/isa_desc/bitfields.h b/arch/mips/isa_desc/bitfields.h index 7fce190ce..793889150 100644 --- a/arch/mips/isa_desc/bitfields.h +++ b/arch/mips/isa_desc/bitfields.h @@ -7,14 +7,25 @@ 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 FUNCTION_HI < 5: 3>; +def bitfield FUNCTION_LO < 2: 0>; -def bitfield REGIMM_HI <20:19>; -def bitfield REGIMM_LO <18:16>; +def bitfield RT <20:16>; +def bitfield RT_HI <20:19>; +def bitfield RT_LO <18:16>; -def bitfield RS <25:21>; -def bitfield RT <20:16>; +def bitfield RS <25:21>; +def bitfield RS_HI <25:24>; +def bitfield RS_LO <23:21>; + +def bitfield MOVCI <>; +def bitfield SRL <>; +def bitfield SRLV <>; +def bitfield SA <>; + +def bitfield BSHFL <>; +def bitfield BSHFL_HI <>; +def bitfield BSHFL_LO <>; // Integer operate format(s>; def bitfield INTIMM <15: 0>; // integer immediate (literal) diff --git a/arch/mips/isa_desc/decoder.h b/arch/mips/isa_desc/decoder.h index 235ff1ef6..1afd0f9d9 100644 --- a/arch/mips/isa_desc/decoder.h +++ b/arch/mips/isa_desc/decoder.h @@ -14,8 +14,8 @@ decode OPCODE_HI default FailUnimpl::unknown() { // Derived From ... Table A-2 MIPS32 ISA Manual 0x0: decode OPCODE_LO default FailUnimpl::reserved(){ - 0x0: decode SPECIAL_HI { - 0x0: decode SPECIAL_LO { + 0x0: decode FUNCTION_HI { + 0x0: decode FUNCTION_LO { 0x1: decode MOVCI { format Move { 0: movc({{ }}); @@ -46,7 +46,7 @@ decode OPCODE_HI default FailUnimpl::unknown() { } } - 0x1: decode SPECIAL_LO { + 0x1: decode FUNCTION_LO { //Table A-3 Note: "Specific encodings of the hint field are used //to distinguish JR from JR.HB and JALR from JALR.HB" @@ -65,7 +65,7 @@ decode OPCODE_HI default FailUnimpl::unknown() { 0x7: Synchronize::synch({{ }}); } - 0x2: decode SPECIAL_LO { + 0x2: decode FUNCTION_LO { format MultDiv { 0x0: mfhi({{ }}); 0x1: mthi({{ }}); @@ -74,7 +74,7 @@ decode OPCODE_HI default FailUnimpl::unknown() { } }; - 0x3: decode SPECIAL_LO { + 0x3: decode FUNCTION_LO { format MultDiv { 0x0: mult({{ }}); 0x1: multu({{ }}); @@ -83,7 +83,7 @@ decode OPCODE_HI default FailUnimpl::unknown() { } }; - 0x4: decode SPECIAL_LO { + 0x4: decode FUNCTION_LO { format Arithmetic { 0x0: add({{ }}); 0x1: addu({{ }}); @@ -99,14 +99,14 @@ decode OPCODE_HI default FailUnimpl::unknown() { } } - 0x5: decode SPECIAL_LO { + 0x5: decode FUNCTION_LO { format SetInstructions{ 0x2: slt({{ }}); 0x3: sltu({{ }}); } }; - 0x6: decode SPECIAL_LO { + 0x6: decode FUNCTION_LO { format Trap { 0x0: tge({{ }}); 0x1: tgeu({{ }}); @@ -218,7 +218,7 @@ decode OPCODE_HI default FailUnimpl::unknown() { 0x6: reserved_inst_exception({{ }}) }; - 4: decode SPECIAL2 { + 0x4: decode FUNCTION_HI { 0x0:; 0x1:; 0x2:; @@ -228,14 +228,23 @@ decode OPCODE_HI default FailUnimpl::unknown() { 0x6:; } - 7: decode SPECIAL3 { - 0x0:; - 0x1:; - 0x2:; - 0x3:; - 0x4:; - 0x5:; - 0x6:; + 0x7: decode FUNCTION_HI { + //Table A-6 MIPS32 SPECIAL31 Encoding of Function Field for Release 2 of the Architecture + 0x0: decode FUNCTION_LO { + 0x1: ext({{ }}); + 0x4: ins({{ }}); + } + + 0x4: decode SA { + //Table A-10 MIPS32 BSHFL Encoding of sa Field + 0x02: wsbh({{ }}); + 0x10: seb({{ }}); + 0x18: seh({{ }}); + } + + 0x6: decode FUNCTION_LO { + 0x7: rdhwr({{ }}); + } } }; -- cgit v1.2.3