diff options
| author | Ralf Baechle <ralf@linux-mips.org> | 2012-09-28 10:29:55 -0400 |
|---|---|---|
| committer | Ralf Baechle <ralf@linux-mips.org> | 2012-09-28 10:29:55 -0400 |
| commit | cb418b34caddc970c1513e515aaa535246a4bba3 (patch) | |
| tree | b89720b74d6a85a9407f03bb064248c7235b9dea /arch/mips/mm/uasm.c | |
| parent | 77a0d763c461da81c2a3fc9a7e58162a40854a1a (diff) | |
| parent | ff401e52100dcdc85e572d1ad376d3307b3fe28e (diff) | |
Merge branch 'ralf-3.7' of git://git.linux-mips.org/pub/scm/sjhill/linux-sjhill into mips-for-linux-next
Diffstat (limited to 'arch/mips/mm/uasm.c')
| -rw-r--r-- | arch/mips/mm/uasm.c | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c index 64a28e819064..39b891056227 100644 --- a/arch/mips/mm/uasm.c +++ b/arch/mips/mm/uasm.c | |||
| @@ -63,11 +63,12 @@ enum opcode { | |||
| 63 | insn_bne, insn_cache, insn_daddiu, insn_daddu, insn_dins, insn_dinsm, | 63 | insn_bne, insn_cache, insn_daddiu, insn_daddu, insn_dins, insn_dinsm, |
| 64 | insn_dmfc0, insn_dmtc0, insn_drotr, insn_drotr32, insn_dsll, | 64 | insn_dmfc0, insn_dmtc0, insn_drotr, insn_drotr32, insn_dsll, |
| 65 | insn_dsll32, insn_dsra, insn_dsrl, insn_dsrl32, insn_dsubu, insn_eret, | 65 | insn_dsll32, insn_dsra, insn_dsrl, insn_dsrl32, insn_dsubu, insn_eret, |
| 66 | insn_j, insn_jal, insn_jr, insn_ld, insn_ldx, insn_ll, insn_lld, | 66 | insn_ext, insn_ins, insn_j, insn_jal, insn_jr, insn_ld, insn_ldx, |
| 67 | insn_lui, insn_lw, insn_lwx, insn_mfc0, insn_mtc0, insn_or, insn_ori, | 67 | insn_ll, insn_lld, insn_lui, insn_lw, insn_lwx, insn_mfc0, insn_mtc0, |
| 68 | insn_pref, insn_rfe, insn_rotr, insn_sc, insn_scd, insn_sd, insn_sll, | 68 | insn_or, insn_ori, insn_pref, insn_rfe, insn_rotr, insn_sc, insn_scd, |
| 69 | insn_sra, insn_srl, insn_subu, insn_sw, insn_syscall, insn_tlbp, | 69 | insn_sd, insn_sll, insn_sra, insn_srl, insn_subu, insn_sw, |
| 70 | insn_tlbr, insn_tlbwi, insn_tlbwr, insn_xor, insn_xori, | 70 | insn_syscall, insn_tlbp, insn_tlbr, insn_tlbwi, insn_tlbwr, insn_xor, |
| 71 | insn_xori, | ||
| 71 | }; | 72 | }; |
| 72 | 73 | ||
| 73 | struct insn { | 74 | struct insn { |
| @@ -115,6 +116,9 @@ static struct insn insn_table[] __uasminitdata = { | |||
| 115 | { insn_dsrl, M(spec_op, 0, 0, 0, 0, dsrl_op), RT | RD | RE }, | 116 | { insn_dsrl, M(spec_op, 0, 0, 0, 0, dsrl_op), RT | RD | RE }, |
| 116 | { insn_dsubu, M(spec_op, 0, 0, 0, 0, dsubu_op), RS | RT | RD }, | 117 | { insn_dsubu, M(spec_op, 0, 0, 0, 0, dsubu_op), RS | RT | RD }, |
| 117 | { insn_eret, M(cop0_op, cop_op, 0, 0, 0, eret_op), 0 }, | 118 | { insn_eret, M(cop0_op, cop_op, 0, 0, 0, eret_op), 0 }, |
| 119 | { insn_ext, M(spec3_op, 0, 0, 0, 0, ext_op), RS | RT | RD | RE }, | ||
| 120 | { insn_ins, M(spec3_op, 0, 0, 0, 0, ins_op), RS | RT | RD | RE }, | ||
| 121 | { insn_j, M(j_op, 0, 0, 0, 0, 0), JIMM }, | ||
| 118 | { insn_jal, M(jal_op, 0, 0, 0, 0, 0), JIMM }, | 122 | { insn_jal, M(jal_op, 0, 0, 0, 0, 0), JIMM }, |
| 119 | { insn_j, M(j_op, 0, 0, 0, 0, 0), JIMM }, | 123 | { insn_j, M(j_op, 0, 0, 0, 0, 0), JIMM }, |
| 120 | { insn_jr, M(spec_op, 0, 0, 0, 0, jr_op), RS }, | 124 | { insn_jr, M(spec_op, 0, 0, 0, 0, jr_op), RS }, |
| @@ -341,6 +345,13 @@ Ip_u2u1msbu3(op) \ | |||
| 341 | } \ | 345 | } \ |
| 342 | UASM_EXPORT_SYMBOL(uasm_i##op); | 346 | UASM_EXPORT_SYMBOL(uasm_i##op); |
| 343 | 347 | ||
| 348 | #define I_u2u1msbdu3(op) \ | ||
| 349 | Ip_u2u1msbu3(op) \ | ||
| 350 | { \ | ||
| 351 | build_insn(buf, insn##op, b, a, d-1, c); \ | ||
| 352 | } \ | ||
| 353 | UASM_EXPORT_SYMBOL(uasm_i##op); | ||
| 354 | |||
| 344 | #define I_u1u2(op) \ | 355 | #define I_u1u2(op) \ |
| 345 | Ip_u1u2(op) \ | 356 | Ip_u1u2(op) \ |
| 346 | { \ | 357 | { \ |
| @@ -394,6 +405,8 @@ I_u2u1u3(_drotr) | |||
| 394 | I_u2u1u3(_drotr32) | 405 | I_u2u1u3(_drotr32) |
| 395 | I_u3u1u2(_dsubu) | 406 | I_u3u1u2(_dsubu) |
| 396 | I_0(_eret) | 407 | I_0(_eret) |
| 408 | I_u2u1msbdu3(_ext) | ||
| 409 | I_u2u1msbu3(_ins) | ||
| 397 | I_u1(_j) | 410 | I_u1(_j) |
| 398 | I_u1(_jal) | 411 | I_u1(_jal) |
| 399 | I_u1(_jr) | 412 | I_u1(_jr) |
