The removal of arm seems to cause grief (Issue #333 and Issue #334) The other defined symbols on gcc (used on travis) are: http://infocenter.arm.com/help/topic/com.arm.doc.dui0491i/BABJFEFG.html
There is also https://sourceforge.net/p/predef/wiki/Architectures/ — |
But — |
> On 2019-01-02, at 3:50 AM, Nicolas Cellier <[hidden email]> wrote: > > But __ARM_ARCH_V8__ can run in 32 bits mode (aarch32) right? > So maybe we want to compile for V8, but not for 64bits (aarch64)... v8 is a completely different instruction set and you can't (to the best of my knowledge!) swap between v7 & v8. We don't (yet) have a cog for v8 (trying to work on that). The stack VM does appear to work ok on v8 systems like chromebooks. We'll need to handle both v7 & v8 just as x86 & x64. tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim Make it right before you make it faster. |
Hi Tim, Hi Ken, Hi Doug, On Wed, Jan 2, 2019 at 11:12 AM tim Rowledge <[hidden email]> wrote:
Currently the FFI tests don't test callbacks. According to Ken's code for the ThreadedFFIARM64Plugin the ARMv8 C ABI uses 8 integer register parameters whereas ARMv7/6/5/4 uses 4. So that changes the signature for thunkEntry on ARMv8. We won't see the effects of this unless we have a callback test with more than 4 arguments. We really need two tests that call callbacks with no arguments, a few integer, float or double arguments, large numbers of integer, float or double argument, and then calls with alternating integer, float and double arguments. _,,,^..^,,,_ best, Eliot |
.. > > v8 is a completely different instruction set and you can't (to the best of > > my knowledge!) swap between v7 & v8. .. > > The stack VM does appear to work ok on v8 systems like chromebooks. We'll > > need to handle both v7 & v8 just as x86 & x64. I am running 64bit Spur stack VM on aarch64 Chromebook Plus, AML-S905X/LePotato, and backtesting on RasPi3, none of which have 32bit libs installed. There are a fair number of differences between v7 and v8. E.g. in v8 no thumb, can't access SP or PC directly, different register sets, .. > Currently the FFI tests don't test callbacks. According to Ken's code for > the ThreadedFFIARM64Plugin the ARMv8 C ABI uses 8 integer register > parameters whereas ARMv7/6/5/4 uses 4. So that changes the signature for > thunkEntry on ARMv8. We won't see the effects of this unless we have a > callback test with more than 4 arguments. We really need two tests that > call callbacks with no arguments, a few integer, float or double arguments, > large numbers of integer, float or double argument, and then calls with > alternating integer, float and double arguments. FYI, I am still in confusion w.r.t. getting VMMaker generated FFI code to do the proper thing on ARMv8/aarch64. Basically, I am in a cycle of writing some ST code in ThreadedARM64FFIPlugin, running FFI unit tests (typically in Cuis -- seem basically same as Squeak), and checking outputs and stepping through with gdb. A slow slog for me. At this point I feel I need to take a step back and get a better/fuller understanding of ThreadedFFICalloutState usage (ThreadedFFIPlugin>>ffiCallOutTo:SpecOnStack:in) marshaling and interaction with type/representation access via IA32ABIPlugin. Also FYI, I have been running [VMMaker generateSqueakSpurStack64VM] valueSupplyingAnswer: false. VMMaker generateVMPlugins. In the several attempts I have made, I have been unable to determine the proper usage of VMMakerTool to get a working VM corresponding with the above. The list of plugins available does not seem to match internal/external plugin lists; 64bit gets unchecked during builds, etc. I have not spent much time with this and don't know if this is expected to work for ARM codegen. > Doug added a few tests when getting ThreadedFFIARMPlugin working. This > source hasn't made it back into sqFFITestFuncs.c. This code could really > do with some love. Someone willing to add a few tests, including some > callback tests. I'm happy to write tip a description of the FFI > architecture if someone will volunteer to write those tests :-) As with other things, I am not really the best person to do this, but will certainly need more tests for the aarch64 FFI. Note also, that I do not run Windows or MacOS [just Linux], so my test environment is limited. I can run RasPi3 in 33bit mode (Raspian/Linix) but am basically running aarch64/Linux. FYI, -KenD
-KenD
|
Hi Ken, On Sun, Jan 6, 2019 at 1:57 PM Ken.Dickey <[hidden email]> wrote: .. I have promised to write this up and will do so once I have some time. But I'm curious. What reference documentation are you using for the v8 ABI? Can you post a link please? Also FYI, I have been running For the FFI plugin is is quicker to open a VMMakerTool, set up its fields correctly, drag the relevant plugin from the left-hand list to the right-hand list and use "generate plugin" from the menu in the right-hand list. This is at the end of the Source Generation Workspace: "To generate plugins open a VMMakerTool, drag and drop the plugins you want to build across to the External Plugins list, select each plugin and choose 'generate plugin' from the pop-up menu." VMMakerTool openInWorld In the several attempts I have made, I have been unable to determine the proper usage of VMMakerTool to get a working VM corresponding with the above. The list of plugins available does not seem to match internal/external plugin lists; 64bit gets unchecked during builds, etc. I have not spent much time with this and don't know if this is expected to work for ARM codegen. The generated plugins.int/plugins.ext are just noise. Use hand-edited ones in the build directory. Ignore the generated ones. They're a historical accident. > Doug added a few tests when getting ThreadedFFIARMPlugin working. This That should be fine. Pi3 is no slouch. _,,,^..^,,,_ best, Eliot |
On Sun, 6 Jan 2019 14:19:47 -0800 Eliot Miranda <[hidden email]> wrote: > I have promised to write this up and will do so once I have some time. But > I'm curious. What reference documentation are you using for the v8 ABI? > Can you post a link please? Procedure Call Standard for the ARM 64-bit Architecture (AArch64) http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf ARM Architecture Reference Manual: ARMv8, for ARMv8-A architecture profile https://static.docs.arm.com/ddi0487/da/DDI0487D_a_armv8_arm.pdf Programmer's Guide for ARMv8-A http://infocenter.arm.com/help/topic/com.arm.doc.den0024a/DEN0024A_v8_architecture_PG.pdf AArch64 QuickRef: https://courses.cs.washington.edu/courses/cse469/18wi/Materials/arm64.pdf ======= > > Also FYI, I have been running > > [VMMaker generateSqueakSpurStack64VM] valueSupplyingAnswer: false. > > VMMaker generateVMPlugins. > > > > For the FFI plugin is is quicker to open a VMMakerTool, set up its fields > correctly, drag the relevant plugin from the left-hand list to the > right-hand list and use "generate plugin" from the menu in the right-hand > list. This is at the end of the Source Generation Workspace: Thanks. Will try this. -- -KenD
-KenD
|
Hi Ken, I just committed Name: VMMaker.oscog-eem.2508 Author: eem Time: 6 January 2019, 5:37:32.239005 pm UUID: 0562ff91-dad2-41f0-980e-87e9f5bd7eda Ancestors: VMMaker.oscog-eem.2507 ThreadedFFIPlugin Provide a ffiCalloutTo:SpecOnStack:in: for ARMv8 that passes all 8 integer register parameters. Provide an overview of the implementation architecture in the class comment of ThreadedFFIPlugin. Please LMK of any confusing or erroneous info in the class comment. Feel free to extend the information, e.g. with pointers to suitable ABI documentation that I realize I could have provided. On Sun, Jan 6, 2019 at 3:32 PM Ken.Dickey <[hidden email]> wrote: On Sun, 6 Jan 2019 14:19:47 -0800 _,,,^..^,,,_ best, Eliot |
Free forum by Nabble | Edit this page |