* [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs
@ 2025-01-27 11:27 Peter Maydell
2025-01-27 11:27 ` [PATCH 1/2] target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation Peter Maydell
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Peter Maydell @ 2025-01-27 11:27 UTC (permalink / raw)
To: qemu-arm, qemu-devel
This patchset marks all the CPUs that support iwMMXt as deprecated,
because I don't believe anybody is using them, and we have no way to
test the thousands of lines of code we have that's only there for
iwMMXt emulation. (See for instance the recent thread where a patch
was submitted to fix an issue detected by a static analyzer: we
didn't take it, largely because we had no way to know if the
behaviour change the patch would produce was correct or not.)
The pxa2xx CPUs are now only useful with user-mode emulation, because
we dropped all the machine types that used them in 9.2. (Technically
you could alse use "-cpu pxa270" with a board model like versatilepb
which doesn't sanity-check the CPU type, but that has never been a
supported config.)
To use them (or iwMMXt emulation) with QEMU user-mode you would need
to explicitly select them with the -cpu option or the QEMU_CPU
environment variable, because the '-cpu max' default CPU does not
include iwMMXt emulation. A google search finds no examples of
anybody doing this in the last decade.
I asked some of the Linaro GCC folks if they were using QEMU to test
their iwMMXt codegen, or knew anybody doing that upstream, and the
answer was "no". In fact, GCC is in the process of dropping support
for iwMMXt entirely.
We have one test case in check-tcg which purports to be checking
iwMMXt. In fact it is doing no such thing: it runs the test without
selecting an iwMMXt CPU, which means the iwMMXt insns are interpreted
as FPA11 insns by the linux-user emulate_arm_fpa11() code. So the test
prints garbage and then succeeds anyway. Modern distro toolchains
can't generate a binary that will run with -cpu pxa270 (because their
crt startup code uses Thumb insns); rather than putting in a lot of
effort trying to salvage the test case to really test a feature we've
deprecated, I opted to just remove the test.
-- PMM
Peter Maydell (2):
target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation
tests/tcg/arm: Remove test-arm-iwmmxt test
docs/about/deprecated.rst | 21 ++++++++++++++
target/arm/cpu.h | 1 +
target/arm/cpu.c | 3 ++
target/arm/tcg/cpu32.c | 36 ++++++++++++++++--------
tests/tcg/arm/Makefile.target | 7 -----
tests/tcg/arm/README | 5 ----
tests/tcg/arm/test-arm-iwmmxt.S | 49 ---------------------------------
7 files changed, 49 insertions(+), 73 deletions(-)
delete mode 100644 tests/tcg/arm/test-arm-iwmmxt.S
--
2.34.1
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH 1/2] target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation
2025-01-27 11:27 [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Peter Maydell
@ 2025-01-27 11:27 ` Peter Maydell
2025-01-27 11:27 ` [PATCH 2/2] tests/tcg/arm: Remove test-arm-iwmmxt test Peter Maydell
` (2 subsequent siblings)
3 siblings, 0 replies; 8+ messages in thread
From: Peter Maydell @ 2025-01-27 11:27 UTC (permalink / raw)
To: qemu-arm, qemu-devel
The pxa2xx CPUs are now only useful with user-mode emulation, because
we dropped all the machine types that used them in 9.2. (Technically
you could alse use "-cpu pxa270" with a board model like versatilepb
which doesn't sanity-check the CPU type, but that has never been a
supported config.)
To use them (or iwMMXt emulation) with QEMU user-mode you would need
to explicitly select them with the -cpu option or the QEMU_CPU
environment variable. A google search finds no examples of anybody
doing this in the last decade; I don't believe the GCC folks are
using QEMU to test their iwMMXt codegen either. In fact, GCC is in
the process of dropping support for iwMMXT entirely.
The iwMMXt emulation is thousands of lines of code in QEMU, and
is now the only bit of Arm insn decode which doesn't use decodetree.
We have no way to test or validate changes to it. This code is
just dead weight that is almost certainly not being used by anybody.
Mark it as deprecated.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
docs/about/deprecated.rst | 21 +++++++++++++++++++++
target/arm/cpu.h | 1 +
target/arm/cpu.c | 3 +++
target/arm/tcg/cpu32.c | 36 ++++++++++++++++++++++++------------
4 files changed, 49 insertions(+), 12 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 4a3c302962a..29de49351d1 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -204,6 +204,27 @@ is going to be so much slower it wouldn't make sense for any serious
instrumentation. Due to implementation differences there will also be
anomalies in things like memory instrumentation.
+linux-user mode CPUs
+--------------------
+
+iwMMXt emulation and the ``pxa`` CPUs (since 10.0)
+''''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``pxa`` CPU family (``pxa250``, ``pxa255``, ``pxa260``,
+``pxa261``, ``pxa262``, ``pxa270-a0``, ``pxa270-a1``, ``pxa270``,
+``pxa270-b0``, ``pxa270-b1``, ``pxa270-c0``, ``pxa270-c5``) are no
+longer used in system emulation, because all the machine types which
+used these CPUs were removed in the QEMU 9.2 release. These CPUs can
+now only be used in linux-user mode, and to do that you would have to
+explicitly select one of these CPUs with the ``-cpu`` command line
+option or the ``QEMU_CPU`` environment variable.
+
+We don't believe that anybody is using the iwMMXt emulation, and we do
+not have any tests to validate it or any real hardware or similar
+known-good implementation to test against. GCC is in the process of
+dropping their support for iwMMXt codegen. These CPU types are
+therefore deprecated in QEMU, and will be removed in a future release.
+
System emulator CPUs
--------------------
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index 9a6e8e589cc..71df9d3a0c4 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -1114,6 +1114,7 @@ struct ArchCPU {
typedef struct ARMCPUInfo {
const char *name;
+ const char *deprecation_note;
void (*initfn)(Object *obj);
void (*class_init)(ObjectClass *oc, void *data);
} ARMCPUInfo;
diff --git a/target/arm/cpu.c b/target/arm/cpu.c
index dc0231233a6..8a0e3d12f3f 100644
--- a/target/arm/cpu.c
+++ b/target/arm/cpu.c
@@ -2756,6 +2756,9 @@ static void cpu_register_class_init(ObjectClass *oc, void *data)
acc->info = data;
cc->gdb_core_xml_file = "arm-core.xml";
+ if (acc->info->deprecation_note) {
+ cc->deprecation_note = acc->info->deprecation_note;
+ }
}
void arm_cpu_register(const ARMCPUInfo *info)
diff --git a/target/arm/tcg/cpu32.c b/target/arm/tcg/cpu32.c
index 2ad21825255..0f1c5bc87e8 100644
--- a/target/arm/tcg/cpu32.c
+++ b/target/arm/tcg/cpu32.c
@@ -1026,19 +1026,31 @@ static const ARMCPUInfo arm_tcg_cpus[] = {
{ .name = "ti925t", .initfn = ti925t_initfn },
{ .name = "sa1100", .initfn = sa1100_initfn },
{ .name = "sa1110", .initfn = sa1110_initfn },
- { .name = "pxa250", .initfn = pxa250_initfn },
- { .name = "pxa255", .initfn = pxa255_initfn },
- { .name = "pxa260", .initfn = pxa260_initfn },
- { .name = "pxa261", .initfn = pxa261_initfn },
- { .name = "pxa262", .initfn = pxa262_initfn },
+ { .name = "pxa250", .initfn = pxa250_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa255", .initfn = pxa255_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa260", .initfn = pxa260_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa261", .initfn = pxa261_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa262", .initfn = pxa262_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
/* "pxa270" is an alias for "pxa270-a0" */
- { .name = "pxa270", .initfn = pxa270a0_initfn },
- { .name = "pxa270-a0", .initfn = pxa270a0_initfn },
- { .name = "pxa270-a1", .initfn = pxa270a1_initfn },
- { .name = "pxa270-b0", .initfn = pxa270b0_initfn },
- { .name = "pxa270-b1", .initfn = pxa270b1_initfn },
- { .name = "pxa270-c0", .initfn = pxa270c0_initfn },
- { .name = "pxa270-c5", .initfn = pxa270c5_initfn },
+ { .name = "pxa270", .initfn = pxa270a0_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa270-a0", .initfn = pxa270a0_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa270-a1", .initfn = pxa270a1_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa270-b0", .initfn = pxa270b0_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa270-b1", .initfn = pxa270b1_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa270-c0", .initfn = pxa270c0_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
+ { .name = "pxa270-c5", .initfn = pxa270c5_initfn,
+ .deprecation_note = "iwMMXt CPUs are no longer supported", },
#ifndef TARGET_AARCH64
{ .name = "max", .initfn = arm_max_initfn },
#endif
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/2] tests/tcg/arm: Remove test-arm-iwmmxt test
2025-01-27 11:27 [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Peter Maydell
2025-01-27 11:27 ` [PATCH 1/2] target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation Peter Maydell
@ 2025-01-27 11:27 ` Peter Maydell
2025-01-27 16:13 ` [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Richard Henderson
2025-01-27 17:27 ` Philippe Mathieu-Daudé
3 siblings, 0 replies; 8+ messages in thread
From: Peter Maydell @ 2025-01-27 11:27 UTC (permalink / raw)
To: qemu-arm, qemu-devel
The test-arm-iwmmmxt test isn't testing what it thinks it's testing.
If you run it with a CPU type that supports iwMMXt then it will crash
immediately with a SIGILL, because (even with -marm) GCC will link it
against startup code that is in Thumb mode, and no iwMMXt CPU has
Thumb:
00010338 <_start>:
10338: f04f 0b00 mov.w fp, #0
1033c: f04f 0e00 mov.w lr, #0
If you run it with a CPU type which does *not* support iwMMXt, which
is what 'make check-tcg' does, then QEMU will not try to handle the
insns as iwMMXt. Instead the translator turns them into illegal
instructions. Then in the linux-user cpu_loop() code we identify
them as FPA11 instructions inside emulate_arm_fpa11(), because the
FPA11 happened to use the same coprocessor number as these iwMMXt
insns. So we execute a completely different set of FPA11 insns,
which means we don't crash, but we will print garbage to stdout.
Then the test binary always exits with a 0 return code, so 'make
check-tcg' thinks the test passes.
Modern gnueabihf toolchains assume in their startup code that the CPU
is not so old as to not support Thumb, so there's no way to get them
to generate a binary that actually does what the test wants. Since
we're deprecating iwMMXt emulation anyway, it's not worth trying to
salvage the test case to get it to really test the iwMMXt insns.
Delete the test entirely.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
tests/tcg/arm/Makefile.target | 7 -----
tests/tcg/arm/README | 5 ----
tests/tcg/arm/test-arm-iwmmxt.S | 49 ---------------------------------
3 files changed, 61 deletions(-)
delete mode 100644 tests/tcg/arm/test-arm-iwmmxt.S
diff --git a/tests/tcg/arm/Makefile.target b/tests/tcg/arm/Makefile.target
index 06ddf3e04fc..99a953b6671 100644
--- a/tests/tcg/arm/Makefile.target
+++ b/tests/tcg/arm/Makefile.target
@@ -20,13 +20,6 @@ ARM_TESTS = hello-arm
hello-arm: CFLAGS+=-marm -ffreestanding -fno-stack-protector
hello-arm: LDFLAGS+=-nostdlib
-# IWMXT floating point extensions
-ARM_TESTS += test-arm-iwmmxt
-# Clang assembler does not support IWMXT, so use the external assembler.
-test-arm-iwmmxt: CFLAGS += -marm -march=iwmmxt -mabi=aapcs -mfpu=fpv4-sp-d16 $(CROSS_CC_HAS_FNIA)
-test-arm-iwmmxt: test-arm-iwmmxt.S
- $(CC) $(CFLAGS) -Wa,--noexecstack $< -o $@ $(LDFLAGS)
-
# Float-convert Tests
ARM_TESTS += fcvt
fcvt: LDFLAGS += -lm
diff --git a/tests/tcg/arm/README b/tests/tcg/arm/README
index e6307116e23..aceccc127f7 100644
--- a/tests/tcg/arm/README
+++ b/tests/tcg/arm/README
@@ -4,8 +4,3 @@ hello-arm
---------
A very simple inline assembly, write syscall based hello world
-
-test-arm-iwmmxt
----------------
-
-A simple test case for older iwmmxt extended ARMs
diff --git a/tests/tcg/arm/test-arm-iwmmxt.S b/tests/tcg/arm/test-arm-iwmmxt.S
deleted file mode 100644
index d647f9404ae..00000000000
--- a/tests/tcg/arm/test-arm-iwmmxt.S
+++ /dev/null
@@ -1,49 +0,0 @@
-@ Checks whether iwMMXt is functional.
-.code 32
-.globl main
-
-main:
-ldr r0, =data0
-ldr r1, =data1
-ldr r2, =data2
-#ifndef FPA
-wldrd wr0, [r0, #0]
-wldrd wr1, [r0, #8]
-wldrd wr2, [r1, #0]
-wldrd wr3, [r1, #8]
-wsubb wr2, wr2, wr0
-wsubb wr3, wr3, wr1
-wldrd wr0, [r2, #0]
-wldrd wr1, [r2, #8]
-waddb wr0, wr0, wr2
-waddb wr1, wr1, wr3
-wstrd wr0, [r2, #0]
-wstrd wr1, [r2, #8]
-#else
-ldfe f0, [r0, #0]
-ldfe f1, [r0, #8]
-ldfe f2, [r1, #0]
-ldfe f3, [r1, #8]
-adfdp f2, f2, f0
-adfdp f3, f3, f1
-ldfe f0, [r2, #0]
-ldfe f1, [r2, #8]
-adfd f0, f0, f2
-adfd f1, f1, f3
-stfe f0, [r2, #0]
-stfe f1, [r2, #8]
-#endif
-mov r0, #1
-mov r1, r2
-mov r2, #0x11
-swi #0x900004
-mov r0, #0
-swi #0x900001
-
-.data
-data0:
-.string "aaaabbbbccccdddd"
-data1:
-.string "bbbbccccddddeeee"
-data2:
-.string "hvLLWs\x1fsdrs9\x1fNJ-\n"
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs
2025-01-27 11:27 [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Peter Maydell
2025-01-27 11:27 ` [PATCH 1/2] target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation Peter Maydell
2025-01-27 11:27 ` [PATCH 2/2] tests/tcg/arm: Remove test-arm-iwmmxt test Peter Maydell
@ 2025-01-27 16:13 ` Richard Henderson
2025-01-27 17:27 ` Philippe Mathieu-Daudé
3 siblings, 0 replies; 8+ messages in thread
From: Richard Henderson @ 2025-01-27 16:13 UTC (permalink / raw)
To: qemu-devel
On 1/27/25 03:27, Peter Maydell wrote:
> This patchset marks all the CPUs that support iwMMXt as deprecated,
> because I don't believe anybody is using them, and we have no way to
> test the thousands of lines of code we have that's only there for
> iwMMXt emulation. (See for instance the recent thread where a patch
> was submitted to fix an issue detected by a static analyzer: we
> didn't take it, largely because we had no way to know if the
> behaviour change the patch would produce was correct or not.)
>
> The pxa2xx CPUs are now only useful with user-mode emulation, because
> we dropped all the machine types that used them in 9.2. (Technically
> you could alse use "-cpu pxa270" with a board model like versatilepb
> which doesn't sanity-check the CPU type, but that has never been a
> supported config.)
>
> To use them (or iwMMXt emulation) with QEMU user-mode you would need
> to explicitly select them with the -cpu option or the QEMU_CPU
> environment variable, because the '-cpu max' default CPU does not
> include iwMMXt emulation. A google search finds no examples of
> anybody doing this in the last decade.
>
> I asked some of the Linaro GCC folks if they were using QEMU to test
> their iwMMXt codegen, or knew anybody doing that upstream, and the
> answer was "no". In fact, GCC is in the process of dropping support
> for iwMMXt entirely.
>
> We have one test case in check-tcg which purports to be checking
> iwMMXt. In fact it is doing no such thing: it runs the test without
> selecting an iwMMXt CPU, which means the iwMMXt insns are interpreted
> as FPA11 insns by the linux-user emulate_arm_fpa11() code. So the test
> prints garbage and then succeeds anyway. Modern distro toolchains
> can't generate a binary that will run with -cpu pxa270 (because their
> crt startup code uses Thumb insns); rather than putting in a lot of
> effort trying to salvage the test case to really test a feature we've
> deprecated, I opted to just remove the test.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
r~
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs
2025-01-27 11:27 [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Peter Maydell
` (2 preceding siblings ...)
2025-01-27 16:13 ` [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Richard Henderson
@ 2025-01-27 17:27 ` Philippe Mathieu-Daudé
2025-01-27 17:46 ` Peter Maydell
3 siblings, 1 reply; 8+ messages in thread
From: Philippe Mathieu-Daudé @ 2025-01-27 17:27 UTC (permalink / raw)
To: Peter Maydell, qemu-arm, qemu-devel
On 27/1/25 12:27, Peter Maydell wrote:
> This patchset marks all the CPUs that support iwMMXt as deprecated,
> because I don't believe anybody is using them, and we have no way to
> test the thousands of lines of code we have that's only there for
> iwMMXt emulation. (See for instance the recent thread where a patch
> was submitted to fix an issue detected by a static analyzer: we
> didn't take it, largely because we had no way to know if the
> behaviour change the patch would produce was correct or not.)
>
> The pxa2xx CPUs are now only useful with user-mode emulation, because
> we dropped all the machine types that used them in 9.2. (Technically
> you could alse use "-cpu pxa270" with a board model like versatilepb
> which doesn't sanity-check the CPU type, but that has never been a
> supported config.)
>
> To use them (or iwMMXt emulation) with QEMU user-mode you would need
> to explicitly select them with the -cpu option or the QEMU_CPU
> environment variable, because the '-cpu max' default CPU does not
> include iwMMXt emulation. A google search finds no examples of
> anybody doing this in the last decade.
>
> I asked some of the Linaro GCC folks if they were using QEMU to test
> their iwMMXt codegen, or knew anybody doing that upstream, and the
> answer was "no". In fact, GCC is in the process of dropping support
> for iwMMXt entirely.
>
> We have one test case in check-tcg which purports to be checking
> iwMMXt. In fact it is doing no such thing: it runs the test without
> selecting an iwMMXt CPU, which means the iwMMXt insns are interpreted
> as FPA11 insns by the linux-user emulate_arm_fpa11() code. So the test
> prints garbage and then succeeds anyway. Modern distro toolchains
Uh...
> can't generate a binary that will run with -cpu pxa270 (because their
> crt startup code uses Thumb insns); rather than putting in a lot of
> effort trying to salvage the test case to really test a feature we've
> deprecated, I opted to just remove the test.
>
> -- PMM
>
> Peter Maydell (2):
> target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation
> tests/tcg/arm: Remove test-arm-iwmmxt test
Series:
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs
2025-01-27 17:27 ` Philippe Mathieu-Daudé
@ 2025-01-27 17:46 ` Peter Maydell
2025-01-27 21:02 ` Deprecate nwfpe emulation? Richard Henderson
0 siblings, 1 reply; 8+ messages in thread
From: Peter Maydell @ 2025-01-27 17:46 UTC (permalink / raw)
To: Philippe Mathieu-Daudé; +Cc: qemu-arm, qemu-devel
On Mon, 27 Jan 2025 at 17:27, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
> On 27/1/25 12:27, Peter Maydell wrote:
> > We have one test case in check-tcg which purports to be checking
> > iwMMXt. In fact it is doing no such thing: it runs the test without
> > selecting an iwMMXt CPU, which means the iwMMXt insns are interpreted
> > as FPA11 insns by the linux-user emulate_arm_fpa11() code. So the test
> > prints garbage and then succeeds anyway.
>
> Uh...
It had me confused for a while, because I'd convinced myself
by code inspection that we only enabled iwMMXt if you
manually asked for a pxa2xx CPU and not in the default 'max'
CPU, and then I found this test case that we were running
with the default CPU type and which was apparently passing :-)
-- PMM
^ permalink raw reply [flat|nested] 8+ messages in thread
* Deprecate nwfpe emulation?
2025-01-27 17:46 ` Peter Maydell
@ 2025-01-27 21:02 ` Richard Henderson
2025-02-11 15:44 ` Peter Maydell
0 siblings, 1 reply; 8+ messages in thread
From: Richard Henderson @ 2025-01-27 21:02 UTC (permalink / raw)
To: Peter Maydell, Philippe Mathieu-Daudé
Cc: qemu-arm, qemu-devel, linux-arm-kernel
On 1/27/25 09:46, Peter Maydell wrote:
> On Mon, 27 Jan 2025 at 17:27, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
>> On 27/1/25 12:27, Peter Maydell wrote:
>>> We have one test case in check-tcg which purports to be checking
>>> iwMMXt. In fact it is doing no such thing: it runs the test without
>>> selecting an iwMMXt CPU, which means the iwMMXt insns are interpreted
>>> as FPA11 insns by the linux-user emulate_arm_fpa11() code. So the test
>>> prints garbage and then succeeds anyway.
>>
>> Uh...
>
> It had me confused for a while, because I'd convinced myself
> by code inspection that we only enabled iwMMXt if you
> manually asked for a pxa2xx CPU and not in the default 'max'
> CPU, and then I found this test case that we were running
> with the default CPU type and which was apparently passing :-)
Any chance we can deprecate the fpa11 stuff too?
I see it's still enabled by the kernel for some boards,
but it depends on really old configury:
config FPE_NWFPE
bool "NWFPE math emulation"
depends on (!AEABI || OABI_COMPAT) && !THUMB2_KERNEL
help
Say Y to include the NWFPE floating point emulator in the kernel.
This is necessary to run most binaries. Linux does not currently
support floating point hardware so you need to say Y here even if
your machine has an FPA or floating point co-processor podule.
No thumb2, no eabi, and oabi_compat enabled.
I suspect that's a very rare configuration these days.
I'll note the help message is somewhat dated. :-)
r~
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Deprecate nwfpe emulation?
2025-01-27 21:02 ` Deprecate nwfpe emulation? Richard Henderson
@ 2025-02-11 15:44 ` Peter Maydell
0 siblings, 0 replies; 8+ messages in thread
From: Peter Maydell @ 2025-02-11 15:44 UTC (permalink / raw)
To: Richard Henderson
Cc: Philippe Mathieu-Daudé, qemu-arm, qemu-devel,
linux-arm-kernel
On Mon, 27 Jan 2025 at 21:02, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> On 1/27/25 09:46, Peter Maydell wrote:
> > On Mon, 27 Jan 2025 at 17:27, Philippe Mathieu-Daudé <philmd@linaro.org> wrote:
> >> On 27/1/25 12:27, Peter Maydell wrote:
> >>> We have one test case in check-tcg which purports to be checking
> >>> iwMMXt. In fact it is doing no such thing: it runs the test without
> >>> selecting an iwMMXt CPU, which means the iwMMXt insns are interpreted
> >>> as FPA11 insns by the linux-user emulate_arm_fpa11() code. So the test
> >>> prints garbage and then succeeds anyway.
> >>
> >> Uh...
> >
> > It had me confused for a while, because I'd convinced myself
> > by code inspection that we only enabled iwMMXt if you
> > manually asked for a pxa2xx CPU and not in the default 'max'
> > CPU, and then I found this test case that we were running
> > with the default CPU type and which was apparently passing :-)
>
> Any chance we can deprecate the fpa11 stuff too?
I had wondered about that from the QEMU side, but it's
a little trickier than the iwmmxt deprecation because
we enable the fpa11 emulation by default, so it's harder
to tell if any users are still using it. (In practice I'm
pretty sure it'll only being used if people are running
old binaries that used the ancient "floating point return
values go in an FPA register" ABI.)
-- PMM
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-02-11 15:44 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-27 11:27 [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Peter Maydell
2025-01-27 11:27 ` [PATCH 1/2] target/arm: deprecate the pxa2xx CPUs and iwMMXt emulation Peter Maydell
2025-01-27 11:27 ` [PATCH 2/2] tests/tcg/arm: Remove test-arm-iwmmxt test Peter Maydell
2025-01-27 16:13 ` [PATCH 0/2] target/arm: Deprecate iwMMXt emulation and associated CPUs Richard Henderson
2025-01-27 17:27 ` Philippe Mathieu-Daudé
2025-01-27 17:46 ` Peter Maydell
2025-01-27 21:02 ` Deprecate nwfpe emulation? Richard Henderson
2025-02-11 15:44 ` Peter Maydell
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).