@samitouri / QOSamiQemu / commits / 750c2d53ee

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

Peter Maydell committed Apr 13, 2026 at 11:37 UTC 750c2d53ee48f1e5af197ebc4a5a666c73964918
1 file changed +25
docs/about/deprecated.rst
+25
@@ -452,6 +452,31 @@ It was implemented as a no-op instruction in TCG up to QEMU 9.0, but
452 only with ``-cpu max`` (which does not guarantee migration compatibility
453 across versions).
454
455 +linux-user mode CPUs
456 +--------------------
457 +
458 +OABI and NWFPE support for Arm CPUs
459 +'''''''''''''''''''''''''''''''''''
460 +
461 +Linux for 32-bit Arm has had two major ABIs: the original OABI and the
462 +more modern EABI. OABI support was marked as obsolete in GCC 4.7 and
463 +dropped in GCC 4.8 (released in 2013). In the Linux kernel,
464 +compatibility handling for OABI (OABI_COMPAT) is not generally enabled
465 +by default and is not compatible with building a Thumb2
466 +kernel. Distros dropped OABI support fifteen years or more ago.
467 +
468 +The original floating-point coprocessor for 32-bit Arm was the
469 +FPA11. This was not present in many CPUs but did get baked into the
470 +OABI for how to pass floating point arguments, and so the Linux kernel
471 +has support for emulating it via the config option FPE_NWFPE; QEMU
472 +follows that. FPA11 support was also removed from GCC in GCC 4.8.
473 +
474 +QEMU's NWFPE code is old and untested and not thread-safe; the OABI
475 +ABI is long-obsolete. We are therefore deprecating both OABI support
476 +and NWFPE emulation, and they will be removed in a future QEMU
477 +release.
478 +
479 +
480 Backwards compatibility
481 -----------------------
482