mips: bpf: implement jitting of BPF_ALU | BPF_ARSH | BPF_X
Jitting of BPF_K is supported already, but not BPF_X. This patch complete the support for the latter on both MIPS and microMIPS. Cc: Paul Burton <paul.burton@mips.com> Cc: linux-mips@vger.kernel.org Acked-by: Paul Burton <paul.burton@mips.com> Signed-off-by: Jiong Wang <jiong.wang@netronome.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
committed by
Alexei Starovoitov
parent
17f6c83fb5
commit
ee94b90c8a
@@ -104,6 +104,7 @@ static const struct insn insn_table_MM[insn_invalid] = {
|
||||
[insn_sltiu] = {M(mm_sltiu32_op, 0, 0, 0, 0, 0), RT | RS | SIMM},
|
||||
[insn_sltu] = {M(mm_pool32a_op, 0, 0, 0, 0, mm_sltu_op), RT | RS | RD},
|
||||
[insn_sra] = {M(mm_pool32a_op, 0, 0, 0, 0, mm_sra_op), RT | RS | RD},
|
||||
[insn_srav] = {M(mm_pool32a_op, 0, 0, 0, 0, mm_srav_op), RT | RS | RD},
|
||||
[insn_srl] = {M(mm_pool32a_op, 0, 0, 0, 0, mm_srl32_op), RT | RS | RD},
|
||||
[insn_srlv] = {M(mm_pool32a_op, 0, 0, 0, 0, mm_srlv32_op), RT | RS | RD},
|
||||
[insn_rotr] = {M(mm_pool32a_op, 0, 0, 0, 0, mm_rotr_op), RT | RS | RD},
|
||||
|
||||
@@ -171,6 +171,7 @@ static const struct insn insn_table[insn_invalid] = {
|
||||
[insn_sltiu] = {M(sltiu_op, 0, 0, 0, 0, 0), RS | RT | SIMM},
|
||||
[insn_sltu] = {M(spec_op, 0, 0, 0, 0, sltu_op), RS | RT | RD},
|
||||
[insn_sra] = {M(spec_op, 0, 0, 0, 0, sra_op), RT | RD | RE},
|
||||
[insn_srav] = {M(spec_op, 0, 0, 0, 0, srav_op), RS | RT | RD},
|
||||
[insn_srl] = {M(spec_op, 0, 0, 0, 0, srl_op), RT | RD | RE},
|
||||
[insn_srlv] = {M(spec_op, 0, 0, 0, 0, srlv_op), RS | RT | RD},
|
||||
[insn_subu] = {M(spec_op, 0, 0, 0, 0, subu_op), RS | RT | RD},
|
||||
|
||||
@@ -61,10 +61,10 @@ enum opcode {
|
||||
insn_mthc0, insn_mthi, insn_mtlo, insn_mul, insn_multu, insn_nor,
|
||||
insn_or, insn_ori, insn_pref, insn_rfe, insn_rotr, insn_sb,
|
||||
insn_sc, insn_scd, insn_sd, insn_sh, insn_sll, insn_sllv,
|
||||
insn_slt, insn_slti, insn_sltiu, insn_sltu, insn_sra, insn_srl,
|
||||
insn_srlv, insn_subu, insn_sw, insn_sync, insn_syscall, insn_tlbp,
|
||||
insn_tlbr, insn_tlbwi, insn_tlbwr, insn_wait, insn_wsbh, insn_xor,
|
||||
insn_xori, insn_yield,
|
||||
insn_slt, insn_slti, insn_sltiu, insn_sltu, insn_sra, insn_srav,
|
||||
insn_srl, insn_srlv, insn_subu, insn_sw, insn_sync, insn_syscall,
|
||||
insn_tlbp, insn_tlbr, insn_tlbwi, insn_tlbwr, insn_wait, insn_wsbh,
|
||||
insn_xor, insn_xori, insn_yield,
|
||||
insn_invalid /* insn_invalid must be last */
|
||||
};
|
||||
|
||||
@@ -353,6 +353,7 @@ I_u2u1s3(_slti)
|
||||
I_u2u1s3(_sltiu)
|
||||
I_u3u1u2(_sltu)
|
||||
I_u2u1u3(_sra)
|
||||
I_u3u2u1(_srav)
|
||||
I_u2u1u3(_srl)
|
||||
I_u3u2u1(_srlv)
|
||||
I_u2u1u3(_rotr)
|
||||
|
||||
Reference in New Issue
Block a user