diff options
author | David Daney <ddaney@caviumnetworks.com> | 2010-12-27 21:07:56 -0500 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2011-01-18 13:30:23 -0500 |
commit | bb3d68c30a00918d4c9fa02a5c17a5aacf597977 (patch) | |
tree | 6d6db066452de4a2ec28f24bc7b0c287eabd9967 /arch/mips/mm | |
parent | cc33ae437975416a1b78f99e2715e91ab643526a (diff) |
MIPS: Add LDX and LWX instructions to uasm.
Needed by Octeon II optimized TLB handlers.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
To: linux-mips@linux-mips.org
Pachwork: https://patchwork.linux-mips.org/patch/1903/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/mm')
-rw-r--r-- | arch/mips/mm/uasm.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c index 99f0347e82d2..357916de0fab 100644 --- a/arch/mips/mm/uasm.c +++ b/arch/mips/mm/uasm.c | |||
@@ -68,7 +68,8 @@ enum opcode { | |||
68 | insn_pref, insn_rfe, insn_sc, insn_scd, insn_sd, insn_sll, | 68 | insn_pref, insn_rfe, insn_sc, insn_scd, insn_sd, insn_sll, |
69 | insn_sra, insn_srl, insn_rotr, insn_subu, insn_sw, insn_tlbp, | 69 | insn_sra, insn_srl, insn_rotr, insn_subu, insn_sw, insn_tlbp, |
70 | insn_tlbr, insn_tlbwi, insn_tlbwr, insn_xor, insn_xori, | 70 | insn_tlbr, insn_tlbwi, insn_tlbwr, insn_xor, insn_xori, |
71 | insn_dins, insn_dinsm, insn_syscall, insn_bbit0, insn_bbit1 | 71 | insn_dins, insn_dinsm, insn_syscall, insn_bbit0, insn_bbit1, |
72 | insn_lwx, insn_ldx | ||
72 | }; | 73 | }; |
73 | 74 | ||
74 | struct insn { | 75 | struct insn { |
@@ -146,6 +147,8 @@ static struct insn insn_table[] __uasminitdata = { | |||
146 | { insn_syscall, M(spec_op, 0, 0, 0, 0, syscall_op), SCIMM}, | 147 | { insn_syscall, M(spec_op, 0, 0, 0, 0, syscall_op), SCIMM}, |
147 | { insn_bbit0, M(lwc2_op, 0, 0, 0, 0, 0), RS | RT | BIMM }, | 148 | { insn_bbit0, M(lwc2_op, 0, 0, 0, 0, 0), RS | RT | BIMM }, |
148 | { insn_bbit1, M(swc2_op, 0, 0, 0, 0, 0), RS | RT | BIMM }, | 149 | { insn_bbit1, M(swc2_op, 0, 0, 0, 0, 0), RS | RT | BIMM }, |
150 | { insn_lwx, M(spec3_op, 0, 0, 0, lwx_op, lx_op), RS | RT | RD }, | ||
151 | { insn_ldx, M(spec3_op, 0, 0, 0, ldx_op, lx_op), RS | RT | RD }, | ||
149 | { insn_invalid, 0, 0 } | 152 | { insn_invalid, 0, 0 } |
150 | }; | 153 | }; |
151 | 154 | ||
@@ -434,6 +437,8 @@ I_u2u1msb32u3(_dinsm); | |||
434 | I_u1(_syscall); | 437 | I_u1(_syscall); |
435 | I_u1u2s3(_bbit0); | 438 | I_u1u2s3(_bbit0); |
436 | I_u1u2s3(_bbit1); | 439 | I_u1u2s3(_bbit1); |
440 | I_u3u1u2(_lwx) | ||
441 | I_u3u1u2(_ldx) | ||
437 | 442 | ||
438 | #ifdef CONFIG_CPU_CAVIUM_OCTEON | 443 | #ifdef CONFIG_CPU_CAVIUM_OCTEON |
439 | #include <asm/octeon/octeon.h> | 444 | #include <asm/octeon/octeon.h> |