summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/mips.h27
-rw-r--r--masm/parse.c8
2 files changed, 3 insertions, 32 deletions
diff --git a/include/mips.h b/include/mips.h
index b63d631..cf17935 100644
--- a/include/mips.h
+++ b/include/mips.h
@@ -84,8 +84,6 @@ enum mips_instruction_type {
MIPS_INS_LHU,
MIPS_INS_LUI,
MIPS_INS_LW,
- MIPS_INS_LWL,
- MIPS_INS_LWR,
MIPS_INS_MFHI,
MIPS_INS_MFLO,
MIPS_INS_MTHI,
@@ -94,12 +92,9 @@ enum mips_instruction_type {
MIPS_INS_MUH,
MIPS_INS_MULU,
MIPS_INS_MUHU,
- MIPS_INS_MULT,
MIPS_INS_SB,
MIPS_INS_SH,
MIPS_INS_SW,
- MIPS_INS_SWL,
- MIPS_INS_SWR,
MIPS_INS_SLL,
MIPS_INS_SLLV,
MIPS_INS_SLT,
@@ -203,7 +198,7 @@ MIPS_INS(ANDI, .op = MIPS_OP_ANDI)
/* BAL - branch and link */
#define MIPS_OP_REGIMM 0b000001
#define MIPS_FUNCT_BAL 0b10001
-MIPS_INS(BAL, .op = MIPS_OP_REGIMM, .funct = MIPS_FUNCT_BAL)
+MIPS_INS(BAL, .op = MIPS_OP_REGIMM, .bfunct = MIPS_FUNCT_BAL)
/* BALC - branch and link, compact */
#define MIPS_OP_BALC 0b111010
@@ -343,14 +338,6 @@ MIPS_INS(LUI, .op = MIPS_OP_LUI)
#define MIPS_OP_LW 0b100011
MIPS_INS(LW, .op = MIPS_OP_LW)
-/* LWL - load word left */
-#define MIPS_OP_LWL 0b100010
-MIPS_INS(LWL, .op = MIPS_OP_LWL)
-
-/* LWR - load word right */
-#define MIPS_OP_LWR 0b100110
-MIPS_INS(LWR, .op = MIPS_OP_LWR)
-
/* MFHI - move from hi */
#define MIPS_FUNCT_MFHI 0b010000
MIPS_INS(MFHI, .op = MIPS_OP_SPECIAL, .funct = MIPS_FUNCT_MFHI)
@@ -389,10 +376,6 @@ MIPS_INS(MULU, .op = MIPS_OP_SPECIAL, .shamt = MIPS_SOP31_MULU,
MIPS_INS(MUHU, .op = MIPS_OP_SPECIAL, .shamt = MIPS_SOP31_MUHU,
.funct = MIPS_FUNCT_SOP31)
-/* MULT - multiply (OLD) */
-#define MIPS_FUNCT_MULT 0b011000
-MIPS_INS(MULT, .op = MIPS_OP_SPECIAL, .funct = MIPS_FUNCT_MULT)
-
/* SB - store byte */
#define MIPS_OP_SB 0b101000
MIPS_INS(SB, .op = MIPS_OP_SB)
@@ -405,14 +388,6 @@ MIPS_INS(SH, .op = MIPS_OP_SH)
#define MIPS_OP_SW 0b101011
MIPS_INS(SW, .op = MIPS_OP_SW)
-/* SWL - store word left */
-#define MIPS_OP_SWL 0b101010
-MIPS_INS(SWL, .op = MIPS_OP_SWL)
-
-/* SWR - store word right */
-#define MIPS_OP_SWR 0b101110
-MIPS_INS(SWR, .op = MIPS_OP_SWR)
-
/* SLL - shift left logical */
#define MIPS_FUNCT_SLL 0b000000
MIPS_INS(SLL, .op = MIPS_OP_SPECIAL, .funct = MIPS_FUNCT_SLL)
diff --git a/masm/parse.c b/masm/parse.c
index 3cbe305..dfa9479 100644
--- a/masm/parse.c
+++ b/masm/parse.c
@@ -148,8 +148,6 @@ const enum mips_parse_format mips_parse_formats[] = {
FORMAT(LHU, SL)
FORMAT(LUI, SLI)
FORMAT(LW, SL)
- FORMAT(LWL, SL)
- FORMAT(LWR, SL)
FORMAT(MFHI, RD)
FORMAT(MFLO, RD)
FORMAT(MTHI, RS)
@@ -158,11 +156,9 @@ const enum mips_parse_format mips_parse_formats[] = {
FORMAT(MUH, R)
FORMAT(MULU, R)
FORMAT(MUHU, R)
- FORMAT(MULT, R2)
FORMAT(SB, SL)
FORMAT(SH, SL)
FORMAT(SW, SL)
- FORMAT(SWL, SL)
FORMAT(SLL, S)
FORMAT(SLLV, SV)
FORMAT(SLT, R)
@@ -862,9 +858,9 @@ static int parse_pseudo_la(struct parser *parser, struct ins_expr *expr)
expr->ins[0] = mips_instructions[MIPS_INS_LUI];
expr->ins[0].data.rt = reg;
expr->ins[0].data.immd = B16(hi);
- expr->ins[1] = mips_instructions[MIPS_INS_ORI];
+ expr->ins[1] = mips_instructions[MIPS_INS_ADDI];
expr->ins[1].data.rt = reg;
- expr->ins[1].data.rs = MIPS_REG_ZERO;
+ expr->ins[1].data.rs = reg;
expr->ins[1].data.immd = B16(lo);
return M_SUCCESS;