decoding of LWL, LWR, SWL, SWR
Stefan Schuermans

Stefan Schuermans commited on 2012-02-05 16:25:41
Showing 2 changed files, with 7 additions and 2 deletions.

... ...
@@ -149,15 +149,18 @@ BEGIN
149 149
             WHEN "001101" => o_op <= op_alu; o_alu <= alu_or; o_imm <= imm_16ze;
150 150
             WHEN "001110" => o_op <= op_alu; o_alu <= alu_xor; o_imm <= imm_16ze;
151 151
             WHEN "001111" => o_op <= op_alu; o_alu <= alu_up; o_imm <= imm_16ze;
152
-            -- TODO: 011xxx missing
153 152
             WHEN "100000" => o_op <= op_l; o_imm <= imm_16se; o_ldst <= ldst_b;
154 153
             WHEN "100001" => o_op <= op_l; o_imm <= imm_16se; o_ldst <= ldst_h;
154
+            WHEN "100010" => o_op <= op_l; o_imm <= imm_16se; o_ldst <= ldst_wl;
155 155
             WHEN "100011" => o_op <= op_l; o_imm <= imm_16se; o_ldst <= ldst_w;
156 156
             WHEN "100100" => o_op <= op_l; o_imm <= imm_16se; o_ldst <= ldst_bu;
157 157
             WHEN "100101" => o_op <= op_l; o_imm <= imm_16se; o_ldst <= ldst_hu;
158
+            WHEN "100110" => o_op <= op_l; o_imm <= imm_16se; o_ldst <= ldst_wr;
158 159
             WHEN "101000" => o_op <= op_s; o_imm <= imm_16se; o_ldst <= ldst_b;
159 160
             WHEN "101001" => o_op <= op_s; o_imm <= imm_16se; o_ldst <= ldst_h;
161
+            WHEN "101010" => o_op <= op_s; o_imm <= imm_16se; o_ldst <= ldst_wl;
160 162
             WHEN "101011" => o_op <= op_s; o_imm <= imm_16se; o_ldst <= ldst_w;
163
+            WHEN "101110" => o_op <= op_s; o_imm <= imm_16se; o_ldst <= ldst_wr;
161 164
             WHEN OTHERS => NULL;
162 165
         END CASE;
163 166
     END PROCESS p_op;
... ...
@@ -63,7 +63,9 @@ PACKAGE mips_types IS
63 63
         ldst_bu, -- byte unsigned (zero-extension)
64 64
         ldst_h,  -- half word (16 bit) (sign-extension)
65 65
         ldst_hu, -- half word unsigned (16 bit) (zero-extension)
66
-        ldst_w   -- word (32 bit)
66
+        ldst_w,  -- word (32 bit)
67
+        ldst_wl, -- word left (8 to 32 bits)
68
+        ldst_wr  -- word right (8 to 32 bits)
67 69
     );
68 70
 
69 71
 END PACKAGE;
70 72