hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/mips/mm/uasm.c
....@@ -50,21 +50,22 @@
5050 insn_beq, insn_beql, insn_bgez, insn_bgezl, insn_bgtz, insn_blez,
5151 insn_bltz, insn_bltzl, insn_bne, insn_break, insn_cache, insn_cfc1,
5252 insn_cfcmsa, insn_ctc1, insn_ctcmsa, insn_daddiu, insn_daddu, insn_ddivu,
53
- insn_di, insn_dins, insn_dinsm, insn_dinsu, insn_divu, insn_dmfc0,
54
- insn_dmtc0, insn_dmultu, insn_drotr, insn_drotr32, insn_dsbh, insn_dshd,
55
- insn_dsll, insn_dsll32, insn_dsllv, insn_dsra, insn_dsra32, insn_dsrav,
56
- insn_dsrl, insn_dsrl32, insn_dsrlv, insn_dsubu, insn_eret, insn_ext,
57
- insn_ins, insn_j, insn_jal, insn_jalr, insn_jr, insn_lb, insn_lbu,
58
- insn_ld, insn_lddir, insn_ldpte, insn_ldx, insn_lh, insn_lhu,
59
- insn_ll, insn_lld, insn_lui, insn_lw, insn_lwu, insn_lwx, insn_mfc0,
60
- insn_mfhc0, insn_mfhi, insn_mflo, insn_movn, insn_movz, insn_mtc0,
61
- insn_mthc0, insn_mthi, insn_mtlo, insn_mul, insn_multu, insn_nor,
62
- insn_or, insn_ori, insn_pref, insn_rfe, insn_rotr, insn_sb,
63
- insn_sc, insn_scd, insn_sd, insn_sh, insn_sll, insn_sllv,
64
- insn_slt, insn_slti, insn_sltiu, insn_sltu, insn_sra, insn_srl,
65
- insn_srlv, insn_subu, insn_sw, insn_sync, insn_syscall, insn_tlbp,
66
- insn_tlbr, insn_tlbwi, insn_tlbwr, insn_wait, insn_wsbh, insn_xor,
67
- insn_xori, insn_yield,
53
+ insn_ddivu_r6, insn_di, insn_dins, insn_dinsm, insn_dinsu, insn_divu,
54
+ insn_divu_r6, insn_dmfc0, insn_dmodu, insn_dmtc0, insn_dmultu,
55
+ insn_dmulu, insn_drotr, insn_drotr32, insn_dsbh, insn_dshd, insn_dsll,
56
+ insn_dsll32, insn_dsllv, insn_dsra, insn_dsra32, insn_dsrav, insn_dsrl,
57
+ insn_dsrl32, insn_dsrlv, insn_dsubu, insn_eret, insn_ext, insn_ins,
58
+ insn_j, insn_jal, insn_jalr, insn_jr, insn_lb, insn_lbu, insn_ld,
59
+ insn_lddir, insn_ldpte, insn_ldx, insn_lh, insn_lhu, insn_ll, insn_lld,
60
+ insn_lui, insn_lw, insn_lwu, insn_lwx, insn_mfc0, insn_mfhc0, insn_mfhi,
61
+ insn_mflo, insn_modu, insn_movn, insn_movz, insn_mtc0, insn_mthc0,
62
+ insn_mthi, insn_mtlo, insn_mul, insn_multu, insn_mulu, insn_nor,
63
+ insn_or, insn_ori, insn_pref, insn_rfe, insn_rotr, insn_sb, insn_sc,
64
+ insn_scd, insn_seleqz, insn_selnez, insn_sd, insn_sh, insn_sll,
65
+ insn_sllv, insn_slt, insn_slti, insn_sltiu, insn_sltu, insn_sra,
66
+ insn_srav, insn_srl, insn_srlv, insn_subu, insn_sw, insn_sync,
67
+ insn_syscall, insn_tlbp, insn_tlbr, insn_tlbwi, insn_tlbwr, insn_wait,
68
+ insn_wsbh, insn_xor, insn_xori, insn_yield,
6869 insn_invalid /* insn_invalid must be last */
6970 };
7071
....@@ -287,13 +288,17 @@
287288 I_u1u2(_ctc1)
288289 I_u2u1(_ctcmsa)
289290 I_u1u2(_ddivu)
291
+I_u3u1u2(_ddivu_r6)
290292 I_u1u2u3(_dmfc0)
293
+I_u3u1u2(_dmodu)
291294 I_u1u2u3(_dmtc0)
292295 I_u1u2(_dmultu)
296
+I_u3u1u2(_dmulu)
293297 I_u2u1s3(_daddiu)
294298 I_u3u1u2(_daddu)
295299 I_u1(_di);
296300 I_u1u2(_divu)
301
+I_u3u1u2(_divu_r6)
297302 I_u2u1(_dsbh);
298303 I_u2u1(_dshd);
299304 I_u2u1u3(_dsll)
....@@ -327,6 +332,7 @@
327332 I_u2s3u1(_lwu)
328333 I_u1u2u3(_mfc0)
329334 I_u1u2u3(_mfhc0)
335
+I_u3u1u2(_modu)
330336 I_u3u1u2(_movn)
331337 I_u3u1u2(_movz)
332338 I_u1(_mfhi)
....@@ -337,6 +343,7 @@
337343 I_u1(_mtlo)
338344 I_u3u1u2(_mul)
339345 I_u1u2(_multu)
346
+I_u3u1u2(_mulu)
340347 I_u3u1u2(_nor)
341348 I_u3u1u2(_or)
342349 I_u2u1u3(_ori)
....@@ -345,6 +352,8 @@
345352 I_u2s3u1(_sc)
346353 I_u2s3u1(_scd)
347354 I_u2s3u1(_sd)
355
+I_u3u1u2(_seleqz)
356
+I_u3u1u2(_selnez)
348357 I_u2s3u1(_sh)
349358 I_u2u1u3(_sll)
350359 I_u3u2u1(_sllv)
....@@ -353,6 +362,7 @@
353362 I_u2u1s3(_sltiu)
354363 I_u3u1u2(_sltu)
355364 I_u2u1u3(_sra)
365
+I_u3u2u1(_srav)
356366 I_u2u1u3(_srl)
357367 I_u3u2u1(_srlv)
358368 I_u2u1u3(_rotr)
....@@ -384,7 +394,7 @@
384394 void uasm_i_pref(u32 **buf, unsigned int a, signed int b,
385395 unsigned int c)
386396 {
387
- if (CAVIUM_OCTEON_DCACHE_PREFETCH_WAR && a <= 24 && a != 5)
397
+ if (OCTEON_IS_MODEL(OCTEON_CN6XXX) && a <= 24 && a != 5)
388398 /*
389399 * As per erratum Core-14449, replace prefetches 0-4,
390400 * 6-24 with 'pref 28'.