[pypy-commit] extradoc extradoc: update the blog post about the ARM merge a bit
bivab
noreply at buildbot.pypy.org
Wed Nov 14 11:43:39 CET 2012
Author: David Schneider <david.schneider at picle.org>
Branch: extradoc
Changeset: r4915:8ed51efe3f4f
Date: 2012-11-14 11:41 +0100
http://bitbucket.org/pypy/extradoc/changeset/8ed51efe3f4f/
Log: update the blog post about the ARM merge a bit
diff --git a/blog/draft/arm-status-update.rst b/blog/draft/arm-status-update.rst
--- a/blog/draft/arm-status-update.rst
+++ b/blog/draft/arm-status-update.rst
@@ -1,12 +1,17 @@
ARM Backend News Update
=======================
-Starting with the good news, we finally merged the ``arm-backend-2`` branch
-into PyPy's main development line. As described in previous_ posts_ the main
-goal of this branch was to add support for ARM processors to PyPY's JIT. As a
-general byproduct PyPy should now do a better job supporting non-x86
+As announced in the previous release notes for the PyPy 2.0 beta the ARM JIT
+compiler backend branch ``arm-backend-2`` has been merged into the main
+development line and is going to be part of the upcomming release.
+As a general byproduct PyPy should now do a better job supporting non-x86
architectures such as ARM and the in-progress support for PPC64.
+In this post I want to describe a bit more in detail the current state of
+PyPy's ARM support. Currently we provide two versions of PyPy for ARM, one
+with and one without the JIT compiler. Currently both target the ARM
+soft-float ABI. And in this post I'm going to focus on the JIT version.
+
On ARM, the JIT requires an ARMv7 processor or newer with a VFP unit targeting
the ARM application profile. Although this sounds like a strong restriction,
most of the ARM processors used in mobile devices and development boards are
@@ -30,10 +35,12 @@
as *softfp*, *soft-float* and *hard-float*. The first two use the core
registers to pass floating point arguments and do not make any assumptions
about a floating point unit. The first uses a software based
-float-implementation, while the second can use a floating point unit. The
-latter and incompatible one requires a floating point unit and uses the
-coprocessor registers to pass floating arguments to calls. A detailed
-comparison can be found `here`_.
+float-implementation, while the second can use a floating point unit to
+actually perform the floating point operations while still copying the
+arguments to and from core registers to perform calls. The latter and
+incompatible one requires a floating point unit and uses the coprocessor
+registers to pass floating arguments to calls. A detailed comparison can be
+found `here`_.
At the time we started implementing the float support in the ARM backend of the
JIT, the soft-float calling conventions were the most commonly supported ones
@@ -62,7 +69,7 @@
We also have some hardware to run the subset of the PyPy test-suite relevant to
the ARM-JIT backend and to run the tests suite that tests the translated ARM
binaries. The nightly tests are run on a Beagleboard-xM_ and an i.MX53_
-versatile board (kindly provided by Michael Foord), both boards run the ARM port `Ubuntu
+versatile board (kindly provided by Michael Foord), both boards run the ARM port of `Ubuntu
12.04 Precise Pangolin`_. The current results for the different builders can be
seen on the `PyPy buildbot`_. As can be seen there are still some issues to be
fixed, but we are getting there.
@@ -94,8 +101,9 @@
a regular basis. A fully emulated approach using QEMU might still be worth trying.*
* Improve the tools, i.e. integrate with jitviewer_.
-Long term on open topics/projects for ARM:
+Long term or open topics/projects for ARM:
+* Fully support the hard-float calling convention and have nightly builds and tests.
* Review of the generated machine code the JIT generates on ARM to see if the
instruction selection makes sense for ARM.
* Build a version that runs on Android.
More information about the pypy-commit
mailing list