diff options
author | Markos Chandras <markos.chandras@imgtec.com> | 2014-04-08 07:47:06 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2014-05-30 08:53:06 -0400 |
commit | 4c12a854d81db5454436c015ec30f39882e923a4 (patch) | |
tree | e93e7a339a0e80d0e9900c80e0ad048b809bc9ac /arch/mips | |
parent | f31318fdf324901ce5a17ccc3d71213117fb44af (diff) |
MIPS: uasm: Add divu uasm instruction
It will be used later on by bpf-jit
[ralf@linux-mips.org: Resolved conflict.]
Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: http://patchwork.linux-mips.org/patch/6727/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips')
-rw-r--r-- | arch/mips/include/asm/uasm.h | 1 | ||||
-rw-r--r-- | arch/mips/include/uapi/asm/inst.h | 1 | ||||
-rw-r--r-- | arch/mips/mm/uasm-micromips.c | 1 | ||||
-rw-r--r-- | arch/mips/mm/uasm-mips.c | 1 | ||||
-rw-r--r-- | arch/mips/mm/uasm.c | 3 |
5 files changed, 6 insertions, 1 deletions
diff --git a/arch/mips/include/asm/uasm.h b/arch/mips/include/asm/uasm.h index f1315ce7e449..676c12370bab 100644 --- a/arch/mips/include/asm/uasm.h +++ b/arch/mips/include/asm/uasm.h | |||
@@ -105,6 +105,7 @@ Ip_u2u1s3(_daddiu); | |||
105 | Ip_u3u1u2(_daddu); | 105 | Ip_u3u1u2(_daddu); |
106 | Ip_u2u1msbu3(_dins); | 106 | Ip_u2u1msbu3(_dins); |
107 | Ip_u2u1msbu3(_dinsm); | 107 | Ip_u2u1msbu3(_dinsm); |
108 | Ip_u1u2(_divu); | ||
108 | Ip_u1u2u3(_dmfc0); | 109 | Ip_u1u2u3(_dmfc0); |
109 | Ip_u1u2u3(_dmtc0); | 110 | Ip_u1u2u3(_dmtc0); |
110 | Ip_u2u1u3(_drotr); | 111 | Ip_u2u1u3(_drotr); |
diff --git a/arch/mips/include/uapi/asm/inst.h b/arch/mips/include/uapi/asm/inst.h index abcdebe60e70..a4bef362d7a8 100644 --- a/arch/mips/include/uapi/asm/inst.h +++ b/arch/mips/include/uapi/asm/inst.h | |||
@@ -311,6 +311,7 @@ enum mm_32axf_minor_op { | |||
311 | mm_syscall_op = 0x22d, | 311 | mm_syscall_op = 0x22d, |
312 | mm_wait_op = 0x24d, | 312 | mm_wait_op = 0x24d, |
313 | mm_eret_op = 0x3cd, | 313 | mm_eret_op = 0x3cd, |
314 | mm_divu_op = 0x5dc, | ||
314 | }; | 315 | }; |
315 | 316 | ||
316 | /* | 317 | /* |
diff --git a/arch/mips/mm/uasm-micromips.c b/arch/mips/mm/uasm-micromips.c index b2348003b10f..aefe7441e620 100644 --- a/arch/mips/mm/uasm-micromips.c +++ b/arch/mips/mm/uasm-micromips.c | |||
@@ -63,6 +63,7 @@ static struct insn insn_table_MM[] = { | |||
63 | { insn_cache, M(mm_pool32b_op, 0, 0, mm_cache_func, 0, 0), RT | RS | SIMM }, | 63 | { insn_cache, M(mm_pool32b_op, 0, 0, mm_cache_func, 0, 0), RT | RS | SIMM }, |
64 | { insn_daddu, 0, 0 }, | 64 | { insn_daddu, 0, 0 }, |
65 | { insn_daddiu, 0, 0 }, | 65 | { insn_daddiu, 0, 0 }, |
66 | { insn_divu, M(mm_pool32a_op, 0, 0, 0, mm_divu_op, mm_pool32axf_op), RT | RS }, | ||
66 | { insn_dmfc0, 0, 0 }, | 67 | { insn_dmfc0, 0, 0 }, |
67 | { insn_dmtc0, 0, 0 }, | 68 | { insn_dmtc0, 0, 0 }, |
68 | { insn_dsll, 0, 0 }, | 69 | { insn_dsll, 0, 0 }, |
diff --git a/arch/mips/mm/uasm-mips.c b/arch/mips/mm/uasm-mips.c index 3d68c001fcb3..6f51543dceac 100644 --- a/arch/mips/mm/uasm-mips.c +++ b/arch/mips/mm/uasm-mips.c | |||
@@ -67,6 +67,7 @@ static struct insn insn_table[] = { | |||
67 | { insn_daddu, M(spec_op, 0, 0, 0, 0, daddu_op), RS | RT | RD }, | 67 | { insn_daddu, M(spec_op, 0, 0, 0, 0, daddu_op), RS | RT | RD }, |
68 | { insn_dinsm, M(spec3_op, 0, 0, 0, 0, dinsm_op), RS | RT | RD | RE }, | 68 | { insn_dinsm, M(spec3_op, 0, 0, 0, 0, dinsm_op), RS | RT | RD | RE }, |
69 | { insn_dins, M(spec3_op, 0, 0, 0, 0, dins_op), RS | RT | RD | RE }, | 69 | { insn_dins, M(spec3_op, 0, 0, 0, 0, dins_op), RS | RT | RD | RE }, |
70 | { insn_divu, M(spec_op, 0, 0, 0, 0, divu_op), RS | RT }, | ||
70 | { insn_dmfc0, M(cop0_op, dmfc_op, 0, 0, 0, 0), RT | RD | SET}, | 71 | { insn_dmfc0, M(cop0_op, dmfc_op, 0, 0, 0, 0), RT | RD | SET}, |
71 | { insn_dmtc0, M(cop0_op, dmtc_op, 0, 0, 0, 0), RT | RD | SET}, | 72 | { insn_dmtc0, M(cop0_op, dmtc_op, 0, 0, 0, 0), RT | RD | SET}, |
72 | { insn_drotr32, M(spec_op, 1, 0, 0, 0, dsrl32_op), RT | RD | RE }, | 73 | { insn_drotr32, M(spec_op, 1, 0, 0, 0, dsrl32_op), RT | RD | RE }, |
diff --git a/arch/mips/mm/uasm.c b/arch/mips/mm/uasm.c index 567003ca5b18..31873cdd8021 100644 --- a/arch/mips/mm/uasm.c +++ b/arch/mips/mm/uasm.c | |||
@@ -47,7 +47,7 @@ enum opcode { | |||
47 | insn_addiu, insn_addu, insn_and, insn_andi, insn_bbit0, insn_bbit1, | 47 | insn_addiu, insn_addu, insn_and, insn_andi, insn_bbit0, insn_bbit1, |
48 | insn_beq, insn_beql, insn_bgez, insn_bgezl, insn_bltz, insn_bltzl, | 48 | insn_beq, insn_beql, insn_bgez, insn_bgezl, insn_bltz, insn_bltzl, |
49 | insn_bne, insn_cache, insn_daddiu, insn_daddu, insn_dins, insn_dinsm, | 49 | insn_bne, insn_cache, insn_daddiu, insn_daddu, insn_dins, insn_dinsm, |
50 | insn_dmfc0, insn_dmtc0, insn_drotr, insn_drotr32, insn_dsll, | 50 | insn_divu, insn_dmfc0, insn_dmtc0, insn_drotr, insn_drotr32, insn_dsll, |
51 | insn_dsll32, insn_dsra, insn_dsrl, insn_dsrl32, insn_dsubu, insn_eret, | 51 | insn_dsll32, insn_dsra, insn_dsrl, insn_dsrl32, insn_dsubu, insn_eret, |
52 | insn_ext, insn_ins, insn_j, insn_jal, insn_jalr, insn_jr, insn_ld, | 52 | insn_ext, insn_ins, insn_j, insn_jal, insn_jalr, insn_jr, insn_ld, |
53 | insn_ldx, insn_ll, insn_lld, insn_lui, insn_lw, insn_lwx, insn_mfc0, | 53 | insn_ldx, insn_ll, insn_lld, insn_lui, insn_lw, insn_lwx, insn_mfc0, |
@@ -251,6 +251,7 @@ I_u1u2u3(_dmfc0) | |||
251 | I_u1u2u3(_dmtc0) | 251 | I_u1u2u3(_dmtc0) |
252 | I_u2u1s3(_daddiu) | 252 | I_u2u1s3(_daddiu) |
253 | I_u3u1u2(_daddu) | 253 | I_u3u1u2(_daddu) |
254 | I_u1u2(_divu) | ||
254 | I_u2u1u3(_dsll) | 255 | I_u2u1u3(_dsll) |
255 | I_u2u1u3(_dsll32) | 256 | I_u2u1u3(_dsll32) |
256 | I_u2u1u3(_dsra) | 257 | I_u2u1u3(_dsra) |