Commit 750c2d53ee for qemu.org
commit 750c2d53ee48f1e5af197ebc4a5a666c73964918
Author: Peter Maydell <peter.maydell@linaro.org>
Date: Mon Apr 13 11:37:54 2026 +0100
docs: Deprecate Arm OABI and NWFPE support
Linux for 32-bit Arm has had two major ABIs: the original OABI and
the more modern EABI. OABI support was marked as obsolete in GCC 4.7
and dropped in GCC 4.8. In the Linux kernel, compatibility handling
for OABI (OABI_COMPAT) is not generally enabled by default and is not
compatible with building a Thumb2 kernel. Distros dropped OABI
support fifteen years or more ago.
NWFPE floating-point emulation handles the ancient FPA11 coprocessor,
which is only needed/supported with OABI. Our implementation is old,
untested and not thread-safe.
Mark OABI and NWFPE support as deprecated so we can remove it in a
future release. Our main motivation here is to be able to drop the
2500+ lines of NWFPE emulation code.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Mohamed Mediouni <mohamed@unpredictable.fr>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20260413103754.45745-1-peter.maydell@linaro.org
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index a6d6a71326..10de10dc23 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -452,6 +452,31 @@ It was implemented as a no-op instruction in TCG up to QEMU 9.0, but
only with ``-cpu max`` (which does not guarantee migration compatibility
across versions).
+linux-user mode CPUs
+--------------------
+
+OABI and NWFPE support for Arm CPUs
+'''''''''''''''''''''''''''''''''''
+
+Linux for 32-bit Arm has had two major ABIs: the original OABI and the
+more modern EABI. OABI support was marked as obsolete in GCC 4.7 and
+dropped in GCC 4.8 (released in 2013). In the Linux kernel,
+compatibility handling for OABI (OABI_COMPAT) is not generally enabled
+by default and is not compatible with building a Thumb2
+kernel. Distros dropped OABI support fifteen years or more ago.
+
+The original floating-point coprocessor for 32-bit Arm was the
+FPA11. This was not present in many CPUs but did get baked into the
+OABI for how to pass floating point arguments, and so the Linux kernel
+has support for emulating it via the config option FPE_NWFPE; QEMU
+follows that. FPA11 support was also removed from GCC in GCC 4.8.
+
+QEMU's NWFPE code is old and untested and not thread-safe; the OABI
+ABI is long-obsolete. We are therefore deprecating both OABI support
+and NWFPE emulation, and they will be removed in a future QEMU
+release.
+
+
Backwards compatibility
-----------------------