* [PATCH v3 0/4] Improve Mips target
@ 2024-11-12 16:41 Aleksandar Rakic
2024-11-12 16:41 ` Aleksandar Rakic
` (4 more replies)
0 siblings, 5 replies; 16+ messages in thread
From: Aleksandar Rakic @ 2024-11-12 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
philmd, aurelien, jiaxun.yang, kwolf, hreitz, pbonzini,
alex.bennee, pierrick.bouvier, berrange
This patch series adds support for emulation of CRC32 instructions for
the Mips target in QEMU, skips NaN mode check for soft-float, adds a CLI
flag for enabling an MSA feature, and enables the MSA for
MIPS64R2-generic.
There aren't tests for these improvements.
The patch 1/8 "Add CP0 MemoryMapID register implementation" from v2 has
been dropped from v3 since it has been accepted and integrated into the
master branch.
The patch 3/8 "GTM19-448: Fix script to work without realpath" from v2
will be sent separately as it is a fix to a general bug and is intended
for other maintainers.
The patch 5/8 "Add micromips to P5600" from v2 has been dropped from v3
since the latest document for P5600 with eventually updated field
CP0_Config3_ISA that would support microMIPS hasn't been found.
The patch 6/8 "Revert use of clock_gettime for benchmarking" from v2 has
been dropped from v3 because it seems that clock_gettime and
CLOCK_MONOTONIC exist in MinGW headers and that QEMU builds with MinGW.
The patch 7/8 "target/mips: Enable MSA ASE for mips32r6-generic" from v2
has been dropped from v3 since it has been accepted and integrated into
the master branch.
When it comes to the patch 8/8 "target/mips: Enable MSA ASE for
mips64R2-generic" from v2, the cpu Loongson-3A4000 supports both
mips64r2 and the MSA, so I'm not sure whether to drop this patch.
Regarding the DSPRAM for I6500, I heard that the IP for the DSPRAM for
mips64r6 hasn't been published, but in the document "MIPS64® I6500
Multiprocessing System Programmer’s Guide" the DSPRAM is elaborated, so
I don't know whether to add support for the DSPRAM.
Most of the following patches are cherry-picked from the branch
mips_rel/4_1_0/master on the MIPS' repository:
https://github.com/MIPS/gnutools-qemu/
Further details on individual changes are included in the respective
patches. An instance of a pipeline of QEMU CI jobs run with input
variable QEMU_CI=1 for this patch series is available here:
https://gitlab.com/rakicaleksandar1999/qemu/-/pipelines/1533819034
and for the master branch is available here:
https://gitlab.com/rakicaleksandar1999/qemu/-/pipelines/1533465414
We are open for a discussion.
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3 0/4] Improve Mips target
2024-11-12 16:41 [PATCH v3 0/4] Improve Mips target Aleksandar Rakic
@ 2024-11-12 16:41 ` Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 1/4] Add support for emulation of CRC32 instructions Aleksandar Rakic
` (3 subsequent siblings)
4 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Rakic @ 2024-11-12 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
philmd, aurelien, jiaxun.yang, kwolf, hreitz, pbonzini,
alex.bennee, pierrick.bouvier, berrange
Aleksandar Rakic (4):
Add support for emulation of CRC32 instructions
Skip NaN mode check for soft-float
target/mips: Enable MSA ASE using a CLI flag
target/mips: Enable MSA ASE for mips64R2-generic
linux-user/mips/cpu_loop.c | 6 ++++--
target/mips/cpu-defs.c.inc | 4 +++-
target/mips/cpu.c | 16 ++++++++++++++++
target/mips/cpu.h | 1 +
target/mips/helper.h | 2 ++
target/mips/internal.h | 2 +-
target/mips/meson.build | 1 +
target/mips/tcg/op_helper.c | 26 ++++++++++++++++++++++++++
target/mips/tcg/rel6.decode | 5 +++++
target/mips/tcg/rel6_translate.c | 14 ++++++++++++++
target/mips/tcg/translate.c | 25 +++++++++++++++++++++++++
target/mips/tcg/translate.h | 3 +++
12 files changed, 101 insertions(+), 4 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3 1/4] Add support for emulation of CRC32 instructions
2024-11-12 16:41 [PATCH v3 0/4] Improve Mips target Aleksandar Rakic
2024-11-12 16:41 ` Aleksandar Rakic
@ 2024-11-12 16:41 ` Aleksandar Rakic
2024-12-11 15:14 ` Aleksandar Rakic
` (2 more replies)
2024-11-12 16:41 ` [PATCH v3 2/4] Skip NaN mode check for soft-float Aleksandar Rakic
` (2 subsequent siblings)
4 siblings, 3 replies; 16+ messages in thread
From: Aleksandar Rakic @ 2024-11-12 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
philmd, aurelien, jiaxun.yang, kwolf, hreitz, pbonzini,
alex.bennee, pierrick.bouvier, berrange, Yongbok Kim,
Aleksandar Markovic
Add emulation of MIPS' CRC32 (Cyclic Redundancy Check) instructions.
Reuse zlib crc32() and Linux crc32c().
Cherry-picked 4cc974938aee1588f852590509004e340c072940
from https://github.com/MIPS/gnutools-qemu
Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
Reviewed-by: Aleksandar Rikalo <arikalo@gmail.com>
---
target/mips/helper.h | 2 ++
target/mips/meson.build | 1 +
target/mips/tcg/op_helper.c | 26 ++++++++++++++++++++++++++
target/mips/tcg/rel6.decode | 5 +++++
target/mips/tcg/rel6_translate.c | 14 ++++++++++++++
target/mips/tcg/translate.c | 25 +++++++++++++++++++++++++
target/mips/tcg/translate.h | 3 +++
7 files changed, 76 insertions(+)
diff --git a/target/mips/helper.h b/target/mips/helper.h
index 0f8462febb..752748d5e6 100644
--- a/target/mips/helper.h
+++ b/target/mips/helper.h
@@ -21,6 +21,8 @@ DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl)
DEF_HELPER_FLAGS_1(dbitswap, TCG_CALL_NO_RWG_SE, tl, tl)
#endif
+DEF_HELPER_3(crc32, tl, tl, tl, i32)
+DEF_HELPER_3(crc32c, tl, tl, tl, i32)
DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32, i32, i32)
/* microMIPS functions */
diff --git a/target/mips/meson.build b/target/mips/meson.build
index a26d1e1f79..d2d686fc0c 100644
--- a/target/mips/meson.build
+++ b/target/mips/meson.build
@@ -7,6 +7,7 @@ mips_ss.add(files(
'gdbstub.c',
'msa.c',
))
+mips_ss.add(zlib)
if have_system
subdir('sysemu')
diff --git a/target/mips/tcg/op_helper.c b/target/mips/tcg/op_helper.c
index 65403f1a87..22600697f0 100644
--- a/target/mips/tcg/op_helper.c
+++ b/target/mips/tcg/op_helper.c
@@ -25,6 +25,8 @@
#include "exec/exec-all.h"
#include "exec/memop.h"
#include "fpu_helper.h"
+#include "qemu/crc32c.h"
+#include <zlib.h>
static inline target_ulong bitswap(target_ulong v)
{
@@ -143,6 +145,30 @@ target_ulong helper_rotx(target_ulong rs, uint32_t shift, uint32_t shiftx,
return (int64_t)(int32_t)(uint32_t)tmp5;
}
+/* these crc32 functions are based on target/arm/helper-a64.c */
+target_ulong helper_crc32(target_ulong val, target_ulong m, uint32_t sz)
+{
+ uint8_t buf[8];
+ target_ulong mask = ((sz * 8) == 64) ?
+ (target_ulong) -1ULL :
+ ((1ULL << (sz * 8)) - 1);
+
+ m &= mask;
+ stq_le_p(buf, m);
+ return (int32_t) (crc32(val ^ 0xffffffff, buf, sz) ^ 0xffffffff);
+}
+
+target_ulong helper_crc32c(target_ulong val, target_ulong m, uint32_t sz)
+{
+ uint8_t buf[8];
+ target_ulong mask = ((sz * 8) == 64) ?
+ (target_ulong) -1ULL :
+ ((1ULL << (sz * 8)) - 1);
+ m &= mask;
+ stq_le_p(buf, m);
+ return (int32_t) (crc32c(val, buf, sz) ^ 0xffffffff);
+}
+
void helper_fork(target_ulong arg1, target_ulong arg2)
{
/*
diff --git a/target/mips/tcg/rel6.decode b/target/mips/tcg/rel6.decode
index d6989cf56e..5074338aa5 100644
--- a/target/mips/tcg/rel6.decode
+++ b/target/mips/tcg/rel6.decode
@@ -16,11 +16,16 @@
&r rs rt rd sa
+&special3_crc rs rt c sz
+
@lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r
+@crc32 ...... rs:5 rt:5 ..... c:3 sz:2 ...... &special3_crc
LSA 000000 ..... ..... ..... 000 .. 000101 @lsa
DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa
+CRC32 011111 ..... ..... 00000 ... .. 001111 @crc32
+
REMOVED 010011 ----- ----- ----- ----- ------ # COP1X (COP3)
REMOVED 011100 ----- ----- ----- ----- ------ # SPECIAL2
diff --git a/target/mips/tcg/rel6_translate.c b/target/mips/tcg/rel6_translate.c
index 59f237ba3b..423b323ba7 100644
--- a/target/mips/tcg/rel6_translate.c
+++ b/target/mips/tcg/rel6_translate.c
@@ -33,3 +33,17 @@ static bool trans_DLSA(DisasContext *ctx, arg_r *a)
}
return gen_dlsa(ctx, a->rd, a->rt, a->rs, a->sa);
}
+
+static bool trans_CRC32(DisasContext *ctx, arg_special3_crc *a)
+{
+ if (unlikely(!ctx->crcp) ||
+ unlikely((a->sz == 3) &&
+ (!(ctx->hflags & MIPS_HFLAG_64))) ||
+ unlikely((a->c >= 2))) {
+ gen_reserved_instruction(ctx);
+ return true;
+ }
+ gen_crc32(ctx, a->rt, a->rs, a->rt,
+ a->sz, a->c);
+ return true;
+}
diff --git a/target/mips/tcg/translate.c b/target/mips/tcg/translate.c
index de7045874d..c97d1d37bd 100644
--- a/target/mips/tcg/translate.c
+++ b/target/mips/tcg/translate.c
@@ -13448,6 +13448,30 @@ static void decode_opc_special2_legacy(CPUMIPSState *env, DisasContext *ctx)
}
}
+void gen_crc32(DisasContext *ctx, int rd, int rs, int rt, int sz,
+ int crc32c)
+{
+ TCGv t0;
+ TCGv t1;
+ TCGv_i32 tsz = tcg_constant_i32(1 << sz);
+ if (rd == 0) {
+ /* Treat as NOP. */
+ return;
+ }
+ t0 = tcg_temp_new();
+ t1 = tcg_temp_new();
+
+ gen_load_gpr(t0, rt);
+ gen_load_gpr(t1, rs);
+
+ if (crc32c) {
+ gen_helper_crc32c(cpu_gpr[rd], t0, t1, tsz);
+ } else {
+ gen_helper_crc32(cpu_gpr[rd], t0, t1, tsz);
+ }
+
+}
+
static void decode_opc_special3_r6(CPUMIPSState *env, DisasContext *ctx)
{
int rs, rt, rd, sa;
@@ -15094,6 +15118,7 @@ static void mips_tr_init_disas_context(DisasContextBase *dcbase, CPUState *cs)
ctx->abs2008 = (env->active_fpu.fcr31 >> FCR31_ABS2008) & 1;
ctx->mi = (env->CP0_Config5 >> CP0C5_MI) & 1;
ctx->gi = (env->CP0_Config5 >> CP0C5_GI) & 3;
+ ctx->crcp = (env->CP0_Config5 >> CP0C5_CRCP) & 1;
restore_cpu_state(env, ctx);
#ifdef CONFIG_USER_ONLY
ctx->mem_idx = MIPS_HFLAG_UM;
diff --git a/target/mips/tcg/translate.h b/target/mips/tcg/translate.h
index 1bf153d183..cb27ae78ae 100644
--- a/target/mips/tcg/translate.h
+++ b/target/mips/tcg/translate.h
@@ -51,6 +51,7 @@ typedef struct DisasContext {
bool abs2008;
bool mi;
int gi;
+ bool crcp;
} DisasContext;
#define DISAS_STOP DISAS_TARGET_0
@@ -181,6 +182,8 @@ bool gen_lsa(DisasContext *ctx, int rd, int rt, int rs, int sa);
bool gen_dlsa(DisasContext *ctx, int rd, int rt, int rs, int sa);
void gen_rdhwr(DisasContext *ctx, int rt, int rd, int sel);
+void gen_crc32(DisasContext *ctx, int rd, int rs, int rt, int sz,
+ int crc32c);
extern TCGv cpu_gpr[32], cpu_PC;
#if defined(TARGET_MIPS64)
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v3 2/4] Skip NaN mode check for soft-float
2024-11-12 16:41 [PATCH v3 0/4] Improve Mips target Aleksandar Rakic
2024-11-12 16:41 ` Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 1/4] Add support for emulation of CRC32 instructions Aleksandar Rakic
@ 2024-11-12 16:41 ` Aleksandar Rakic
2024-12-11 15:17 ` Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 3/4] target/mips: Enable MSA ASE using a CLI flag Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 4/4] target/mips: Enable MSA ASE for mips64R2-generic Aleksandar Rakic
4 siblings, 1 reply; 16+ messages in thread
From: Aleksandar Rakic @ 2024-11-12 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
philmd, aurelien, jiaxun.yang, kwolf, hreitz, pbonzini,
alex.bennee, pierrick.bouvier, berrange, Faraz Shahbazker
Skip NaN mode check for soft-float since NaN mode is irrelevant if an ELF
binary's FPU mode is soft-float, i.e. it doesn't utilize a FPU.
Cherry-picked 63492a56485f6b755fccf7ad623f7a189bfc79b6
from https://github.com/MIPS/gnutools-qemu
Signed-off-by: Faraz Shahbazker <fshahbazker@wavecomp.com>
Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
---
linux-user/mips/cpu_loop.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c
index 462387a073..07c1ebe287 100644
--- a/linux-user/mips/cpu_loop.c
+++ b/linux-user/mips/cpu_loop.c
@@ -304,8 +304,10 @@ void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
if (env->insn_flags & ISA_NANOMIPS32) {
return;
}
- if (((info->elf_flags & EF_MIPS_NAN2008) != 0) !=
- ((env->active_fpu.fcr31 & (1 << FCR31_NAN2008)) != 0)) {
+ if (info->fp_abi != MIPS_ABI_FP_SOFT
+ && ((info->elf_flags & EF_MIPS_NAN2008) != 0) !=
+ ((env->active_fpu.fcr31 & (1 << FCR31_NAN2008)) != 0))
+ {
if ((env->active_fpu.fcr31_rw_bitmask &
(1 << FCR31_NAN2008)) == 0) {
fprintf(stderr, "ELF binary's NaN mode not supported by CPU\n");
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v3 3/4] target/mips: Enable MSA ASE using a CLI flag
2024-11-12 16:41 [PATCH v3 0/4] Improve Mips target Aleksandar Rakic
` (2 preceding siblings ...)
2024-11-12 16:41 ` [PATCH v3 2/4] Skip NaN mode check for soft-float Aleksandar Rakic
@ 2024-11-12 16:41 ` Aleksandar Rakic
2024-12-11 15:19 ` Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 4/4] target/mips: Enable MSA ASE for mips64R2-generic Aleksandar Rakic
4 siblings, 1 reply; 16+ messages in thread
From: Aleksandar Rakic @ 2024-11-12 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
philmd, aurelien, jiaxun.yang, kwolf, hreitz, pbonzini,
alex.bennee, pierrick.bouvier, berrange
Enable MSA ASE using a CLI flag -cpu <cpu>,msa=on.
Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
---
target/mips/cpu.c | 16 ++++++++++++++++
target/mips/cpu.h | 1 +
target/mips/internal.h | 2 +-
3 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/target/mips/cpu.c b/target/mips/cpu.c
index d0a43b6d5c..8e12d303de 100644
--- a/target/mips/cpu.c
+++ b/target/mips/cpu.c
@@ -494,8 +494,24 @@ static void mips_cpu_realizefn(DeviceState *dev, Error **errp)
mcc->parent_realize(dev, errp);
}
+static bool mips_get_msa_on(Object *obj, Error **errp)
+{
+ MIPSCPU *cpu = MIPS_CPU(obj);
+ CPUMIPSState *env = &cpu->env;
+ return env->msa_on;
+}
+
+static void mips_set_msa_on(Object *obj, bool value, Error **errp)
+{
+ MIPSCPU *cpu = MIPS_CPU(obj);
+ CPUMIPSState *env = &cpu->env;
+ env->msa_on = value;
+}
+
static void mips_cpu_initfn(Object *obj)
{
+ object_property_add_bool(obj, "msa", mips_get_msa_on, mips_set_msa_on);
+ object_property_set_bool(obj, "msa", false, NULL);
MIPSCPU *cpu = MIPS_CPU(obj);
CPUMIPSState *env = &cpu->env;
MIPSCPUClass *mcc = MIPS_CPU_GET_CLASS(obj);
diff --git a/target/mips/cpu.h b/target/mips/cpu.h
index f6877ece8b..3e636535c6 100644
--- a/target/mips/cpu.h
+++ b/target/mips/cpu.h
@@ -1191,6 +1191,7 @@ typedef struct CPUArchState {
QEMUTimer *timer; /* Internal timer */
Clock *count_clock; /* CP0_Count clock */
target_ulong exception_base; /* ExceptionBase input to the core */
+ bool msa_on; /* Enable MSA using a CLI flag -cpu ...,msa=on/off */
} CPUMIPSState;
/**
diff --git a/target/mips/internal.h b/target/mips/internal.h
index 91c786cff8..bbe2acffe2 100644
--- a/target/mips/internal.h
+++ b/target/mips/internal.h
@@ -399,7 +399,7 @@ static inline void compute_hflags(CPUMIPSState *env)
}
}
if (ase_msa_available(env)) {
- if (env->CP0_Config5 & (1 << CP0C5_MSAEn)) {
+ if ((env->CP0_Config5 & (1 << CP0C5_MSAEn)) || (env->msa_on)) {
env->hflags |= MIPS_HFLAG_MSA;
}
}
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v3 4/4] target/mips: Enable MSA ASE for mips64R2-generic
2024-11-12 16:41 [PATCH v3 0/4] Improve Mips target Aleksandar Rakic
` (3 preceding siblings ...)
2024-11-12 16:41 ` [PATCH v3 3/4] target/mips: Enable MSA ASE using a CLI flag Aleksandar Rakic
@ 2024-11-12 16:41 ` Aleksandar Rakic
2024-11-12 19:29 ` Philippe Mathieu-Daudé
4 siblings, 1 reply; 16+ messages in thread
From: Aleksandar Rakic @ 2024-11-12 16:41 UTC (permalink / raw)
To: qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
philmd, aurelien, jiaxun.yang, kwolf, hreitz, pbonzini,
alex.bennee, pierrick.bouvier, berrange, Faraz Shahbazker
Enable MSA ASE for mips64R2-generic CPU.
Cherry-picked 60f6ae8d3d685ba1ea5d301222fb72b67f39264f
from https://github.com/MIPS/gnutools-qemu
Signed-off-by: Faraz Shahbazker <fshahbazker@wavecomp.com>
Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
---
target/mips/cpu-defs.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/mips/cpu-defs.c.inc b/target/mips/cpu-defs.c.inc
index 922fc39138..e77a327422 100644
--- a/target/mips/cpu-defs.c.inc
+++ b/target/mips/cpu-defs.c.inc
@@ -678,7 +678,9 @@ const mips_def_t mips_defs[] =
(2 << CP0C1_DS) | (4 << CP0C1_DL) | (3 << CP0C1_DA) |
(1 << CP0C1_PC) | (1 << CP0C1_WR) | (1 << CP0C1_EP),
.CP0_Config2 = MIPS_CONFIG2,
- .CP0_Config3 = MIPS_CONFIG3 | (1 << CP0C3_LPA),
+ .CP0_Config3 = MIPS_CONFIG3 | (1 << CP0C3_LPA) |
+ (1 << CP0C3_VInt) | (1 << CP0C3_MSAP),
+ .CP0_Config5_rw_bitmask = (1 << CP0C5_MSAEn),
.CP0_LLAddr_rw_bitmask = 0,
.CP0_LLAddr_shift = 0,
.SYNCI_Step = 32,
--
2.34.1
^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v3 4/4] target/mips: Enable MSA ASE for mips64R2-generic
2024-11-12 16:41 ` [PATCH v3 4/4] target/mips: Enable MSA ASE for mips64R2-generic Aleksandar Rakic
@ 2024-11-12 19:29 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-11-12 19:29 UTC (permalink / raw)
To: Aleksandar Rakic, qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
aurelien, jiaxun.yang, kwolf, hreitz, pbonzini, alex.bennee,
pierrick.bouvier, berrange, Faraz Shahbazker
On 12/11/24 16:41, Aleksandar Rakic wrote:
> Enable MSA ASE for mips64R2-generic CPU.
>
> Cherry-picked 60f6ae8d3d685ba1ea5d301222fb72b67f39264f
> from https://github.com/MIPS/gnutools-qemu
>
> Signed-off-by: Faraz Shahbazker <fshahbazker@wavecomp.com>
> Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
> ---
> target/mips/cpu-defs.c.inc | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/target/mips/cpu-defs.c.inc b/target/mips/cpu-defs.c.inc
> index 922fc39138..e77a327422 100644
> --- a/target/mips/cpu-defs.c.inc
> +++ b/target/mips/cpu-defs.c.inc
> @@ -678,7 +678,9 @@ const mips_def_t mips_defs[] =
> (2 << CP0C1_DS) | (4 << CP0C1_DL) | (3 << CP0C1_DA) |
> (1 << CP0C1_PC) | (1 << CP0C1_WR) | (1 << CP0C1_EP),
> .CP0_Config2 = MIPS_CONFIG2,
> - .CP0_Config3 = MIPS_CONFIG3 | (1 << CP0C3_LPA),
> + .CP0_Config3 = MIPS_CONFIG3 | (1 << CP0C3_LPA) |
> + (1 << CP0C3_VInt) | (1 << CP0C3_MSAP),
> + .CP0_Config5_rw_bitmask = (1 << CP0C5_MSAEn),
See v2:
https://lore.kernel.org/qemu-devel/50dd60b2-f789-4828-9a7e-3becc6721964@linaro.org/
> .CP0_LLAddr_rw_bitmask = 0,
> .CP0_LLAddr_shift = 0,
> .SYNCI_Step = 32,
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/4] Add support for emulation of CRC32 instructions
2024-11-12 16:41 ` [PATCH v3 1/4] Add support for emulation of CRC32 instructions Aleksandar Rakic
@ 2024-12-11 15:14 ` Aleksandar Rakic
2025-01-17 12:00 ` Aleksandar Rakic
2025-01-22 7:22 ` Philippe Mathieu-Daudé
2025-01-22 7:27 ` Philippe Mathieu-Daudé
2 siblings, 1 reply; 16+ messages in thread
From: Aleksandar Rakic @ 2024-12-11 15:14 UTC (permalink / raw)
To: rakicaleksandar1999
Cc: aleksandar.rakic, alex.bennee, amarkovic, arikalo, aurelien,
berrange, cfu, djordje.todorovic, hreitz, jiaxun.yang, kwolf,
pbonzini, peter.maydell, philmd, pierrick.bouvier, qemu-devel,
yongbok.kim
Hi,
A kind remind/ping on the patch. Before we send v3,
do you have any comments on this patch?
Kind regards,
Aleksandar Rakic
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 2/4] Skip NaN mode check for soft-float
2024-11-12 16:41 ` [PATCH v3 2/4] Skip NaN mode check for soft-float Aleksandar Rakic
@ 2024-12-11 15:17 ` Aleksandar Rakic
2025-01-17 12:02 ` Aleksandar Rakic
0 siblings, 1 reply; 16+ messages in thread
From: Aleksandar Rakic @ 2024-12-11 15:17 UTC (permalink / raw)
To: rakicaleksandar1999
Cc: aleksandar.rakic, alex.bennee, arikalo, aurelien, berrange, cfu,
djordje.todorovic, fshahbazker, hreitz, jiaxun.yang, kwolf,
pbonzini, peter.maydell, philmd, pierrick.bouvier, qemu-devel
Hi,
A kind remind/ping on the patch. Before we send v3,
do you have any comments on this patch?
Kind regards,
Aleksandar Rakic
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 3/4] target/mips: Enable MSA ASE using a CLI flag
2024-11-12 16:41 ` [PATCH v3 3/4] target/mips: Enable MSA ASE using a CLI flag Aleksandar Rakic
@ 2024-12-11 15:19 ` Aleksandar Rakic
2025-01-17 12:03 ` Aleksandar Rakic
0 siblings, 1 reply; 16+ messages in thread
From: Aleksandar Rakic @ 2024-12-11 15:19 UTC (permalink / raw)
To: rakicaleksandar1999
Cc: aleksandar.rakic, alex.bennee, arikalo, aurelien, berrange, cfu,
djordje.todorovic, hreitz, jiaxun.yang, kwolf, pbonzini,
peter.maydell, philmd, pierrick.bouvier, qemu-devel
Hi,
A kind remind/ping on the patch. Before we send v3,
do you have any comments on this patch?
Kind regards,
Aleksandar Rakic
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/4] Add support for emulation of CRC32 instructions
2024-12-11 15:14 ` Aleksandar Rakic
@ 2025-01-17 12:00 ` Aleksandar Rakic
0 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Rakic @ 2025-01-17 12:00 UTC (permalink / raw)
To: rakicaleksandar1999
Cc: aleksandar.rakic, alex.bennee, amarkovic, arikalo, aurelien,
berrange, cfu, djordje.todorovic, hreitz, jiaxun.yang, kwolf,
pbonzini, peter.maydell, philmd, pierrick.bouvier, qemu-devel,
yongbok.kim
Hi,
Could you please let us know if you have any comments
on the latest version of this patch?
Kind regards,
Aleksandar Rakic
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 2/4] Skip NaN mode check for soft-float
2024-12-11 15:17 ` Aleksandar Rakic
@ 2025-01-17 12:02 ` Aleksandar Rakic
0 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Rakic @ 2025-01-17 12:02 UTC (permalink / raw)
To: rakicaleksandar1999
Cc: aleksandar.rakic, alex.bennee, arikalo, aurelien, berrange, cfu,
djordje.todorovic, fshahbazker, hreitz, jiaxun.yang, kwolf,
pbonzini, peter.maydell, philmd, pierrick.bouvier, qemu-devel
Hi,
Could you please let us know if you have any comments
on the latest version of this patch?
Kind regards,
Aleksandar Rakic
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 3/4] target/mips: Enable MSA ASE using a CLI flag
2024-12-11 15:19 ` Aleksandar Rakic
@ 2025-01-17 12:03 ` Aleksandar Rakic
0 siblings, 0 replies; 16+ messages in thread
From: Aleksandar Rakic @ 2025-01-17 12:03 UTC (permalink / raw)
To: rakicaleksandar1999
Cc: aleksandar.rakic, alex.bennee, arikalo, aurelien, berrange, cfu,
djordje.todorovic, hreitz, jiaxun.yang, kwolf, pbonzini,
peter.maydell, philmd, pierrick.bouvier, qemu-devel
Hi,
Could you please let us know if you have any comments
on the latest version of this patch?
Kind regards,
Aleksandar Rakic
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/4] Add support for emulation of CRC32 instructions
2024-11-12 16:41 ` [PATCH v3 1/4] Add support for emulation of CRC32 instructions Aleksandar Rakic
2024-12-11 15:14 ` Aleksandar Rakic
@ 2025-01-22 7:22 ` Philippe Mathieu-Daudé
2025-01-22 7:27 ` Philippe Mathieu-Daudé
2 siblings, 0 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-01-22 7:22 UTC (permalink / raw)
To: Aleksandar Rakic, qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
aurelien, jiaxun.yang, kwolf, hreitz, pbonzini, alex.bennee,
pierrick.bouvier, berrange, Yongbok Kim, Aleksandar Markovic
On 12/11/24 17:41, Aleksandar Rakic wrote:
> Add emulation of MIPS' CRC32 (Cyclic Redundancy Check) instructions.
> Reuse zlib crc32() and Linux crc32c().
>
> Cherry-picked 4cc974938aee1588f852590509004e340c072940
> from https://github.com/MIPS/gnutools-qemu
>
> Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
> Reviewed-by: Aleksandar Rikalo <arikalo@gmail.com>
> ---
> target/mips/helper.h | 2 ++
> target/mips/meson.build | 1 +
> target/mips/tcg/op_helper.c | 26 ++++++++++++++++++++++++++
> target/mips/tcg/rel6.decode | 5 +++++
> target/mips/tcg/rel6_translate.c | 14 ++++++++++++++
> target/mips/tcg/translate.c | 25 +++++++++++++++++++++++++
> target/mips/tcg/translate.h | 3 +++
> 7 files changed, 76 insertions(+)
Thanks Aleksandar, could you add a pair of tests in
tests/tcg/mips/user/isa/mips64r6/?
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/4] Add support for emulation of CRC32 instructions
2024-11-12 16:41 ` [PATCH v3 1/4] Add support for emulation of CRC32 instructions Aleksandar Rakic
2024-12-11 15:14 ` Aleksandar Rakic
2025-01-22 7:22 ` Philippe Mathieu-Daudé
@ 2025-01-22 7:27 ` Philippe Mathieu-Daudé
2025-01-22 8:38 ` Philippe Mathieu-Daudé
2 siblings, 1 reply; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-01-22 7:27 UTC (permalink / raw)
To: Aleksandar Rakic, qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
aurelien, jiaxun.yang, kwolf, hreitz, pbonzini, alex.bennee,
pierrick.bouvier, berrange, Yongbok Kim, Aleksandar Markovic
On 12/11/24 17:41, Aleksandar Rakic wrote:
> Add emulation of MIPS' CRC32 (Cyclic Redundancy Check) instructions.
> Reuse zlib crc32() and Linux crc32c().
>
> Cherry-picked 4cc974938aee1588f852590509004e340c072940
> from https://github.com/MIPS/gnutools-qemu
>
> Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
> Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
> Reviewed-by: Aleksandar Rikalo <arikalo@gmail.com>
> ---
> target/mips/helper.h | 2 ++
> target/mips/meson.build | 1 +
> target/mips/tcg/op_helper.c | 26 ++++++++++++++++++++++++++
> target/mips/tcg/rel6.decode | 5 +++++
> target/mips/tcg/rel6_translate.c | 14 ++++++++++++++
> target/mips/tcg/translate.c | 25 +++++++++++++++++++++++++
> target/mips/tcg/translate.h | 3 +++
> 7 files changed, 76 insertions(+)
> diff --git a/target/mips/tcg/rel6.decode b/target/mips/tcg/rel6.decode
> index d6989cf56e..5074338aa5 100644
> --- a/target/mips/tcg/rel6.decode
> +++ b/target/mips/tcg/rel6.decode
> @@ -16,11 +16,16 @@
>
> &r rs rt rd sa
>
> +&special3_crc rs rt c sz
> +
> @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r
> +@crc32 ...... rs:5 rt:5 ..... c:3 sz:2 ...... &special3_crc
>
> LSA 000000 ..... ..... ..... 000 .. 000101 @lsa
> DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa
>
> +CRC32 011111 ..... ..... 00000 ... .. 001111 @crc32
Interestingly the disassembly for that is in tree, hidden in commit
99029be1c28 ("target/mips: Add implementation of GINVT instruction")...
^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v3 1/4] Add support for emulation of CRC32 instructions
2025-01-22 7:27 ` Philippe Mathieu-Daudé
@ 2025-01-22 8:38 ` Philippe Mathieu-Daudé
0 siblings, 0 replies; 16+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-01-22 8:38 UTC (permalink / raw)
To: Aleksandar Rakic, qemu-devel
Cc: aleksandar.rakic, djordje.todorovic, cfu, arikalo, peter.maydell,
aurelien, jiaxun.yang, kwolf, hreitz, pbonzini, alex.bennee,
pierrick.bouvier, berrange, Yongbok Kim, Aleksandar Markovic
On 22/1/25 08:27, Philippe Mathieu-Daudé wrote:
> On 12/11/24 17:41, Aleksandar Rakic wrote:
>> Add emulation of MIPS' CRC32 (Cyclic Redundancy Check) instructions.
>> Reuse zlib crc32() and Linux crc32c().
>>
>> Cherry-picked 4cc974938aee1588f852590509004e340c072940
>> from https://github.com/MIPS/gnutools-qemu
>>
>> Signed-off-by: Yongbok Kim <yongbok.kim@mips.com>
>> Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com>
>> Signed-off-by: Aleksandar Rakic <aleksandar.rakic@htecgroup.com>
>> Reviewed-by: Aleksandar Rikalo <arikalo@gmail.com>
>> ---
>> target/mips/helper.h | 2 ++
>> target/mips/meson.build | 1 +
>> target/mips/tcg/op_helper.c | 26 ++++++++++++++++++++++++++
>> target/mips/tcg/rel6.decode | 5 +++++
>> target/mips/tcg/rel6_translate.c | 14 ++++++++++++++
>> target/mips/tcg/translate.c | 25 +++++++++++++++++++++++++
>> target/mips/tcg/translate.h | 3 +++
>> 7 files changed, 76 insertions(+)
>
>
>> diff --git a/target/mips/tcg/rel6.decode b/target/mips/tcg/rel6.decode
>> index d6989cf56e..5074338aa5 100644
>> --- a/target/mips/tcg/rel6.decode
>> +++ b/target/mips/tcg/rel6.decode
>> @@ -16,11 +16,16 @@
>> &r rs rt rd sa
>> +&special3_crc rs rt c sz
>> +
>> @lsa ...... rs:5 rt:5 rd:5 ... sa:2 ...... &r
>> +@crc32 ...... rs:5 rt:5 ..... c:3 sz:2 ......
>> &special3_crc
>> LSA 000000 ..... ..... ..... 000 .. 000101 @lsa
>> DLSA 000000 ..... ..... ..... 000 .. 010101 @lsa
>> +CRC32 011111 ..... ..... 00000 ... .. 001111 @crc32
Are these really available on MIPS64? (Looking at MD00087 Revision 6.05)
> Interestingly the disassembly for that is in tree, hidden in commit
> 99029be1c28 ("target/mips: Add implementation of GINVT instruction")...
^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2025-01-22 8:38 UTC | newest]
Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-12 16:41 [PATCH v3 0/4] Improve Mips target Aleksandar Rakic
2024-11-12 16:41 ` Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 1/4] Add support for emulation of CRC32 instructions Aleksandar Rakic
2024-12-11 15:14 ` Aleksandar Rakic
2025-01-17 12:00 ` Aleksandar Rakic
2025-01-22 7:22 ` Philippe Mathieu-Daudé
2025-01-22 7:27 ` Philippe Mathieu-Daudé
2025-01-22 8:38 ` Philippe Mathieu-Daudé
2024-11-12 16:41 ` [PATCH v3 2/4] Skip NaN mode check for soft-float Aleksandar Rakic
2024-12-11 15:17 ` Aleksandar Rakic
2025-01-17 12:02 ` Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 3/4] target/mips: Enable MSA ASE using a CLI flag Aleksandar Rakic
2024-12-11 15:19 ` Aleksandar Rakic
2025-01-17 12:03 ` Aleksandar Rakic
2024-11-12 16:41 ` [PATCH v3 4/4] target/mips: Enable MSA ASE for mips64R2-generic Aleksandar Rakic
2024-11-12 19:29 ` Philippe Mathieu-Daudé
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).