Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

David T Lewis
 

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

  • __ARMCC_VERSION
  • __TARGET_ARCH_ARM

There is also https://sourceforge.net/p/predef/wiki/Architectures/


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/OpenSmalltalk/opensmalltalk-vm","title":"OpenSmalltalk/opensmalltalk-vm","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/OpenSmalltalk/opensmalltalk-vm"}},"updates":{"snippets":[{"icon":"PERSON","message":"@nicolas-cellier-aka-nice on f954a91: The removal of __arm__ seems to cause grief (Issue #333 and Issue #334)\r\n\r\nThe other defined symbols on gcc (used on travis) are: http://infocenter.arm.com/help/topic/com.arm.doc.dui0491i/BABJFEFG.html\r\n\r\n- __ARMCC_VERSION\r\n- __TARGET_ARCH_ARM\r\n\r\nThere is also https://sourceforge.net/p/predef/wiki/Architectures/"}],"action":{"name":"View Commit","url":"https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/f954a914716e28b929ef173f2f3eae12652d86ef#commitcomment-31818156"}}}</script> <script type="application/ld+json">[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/f954a914716e28b929ef173f2f3eae12652d86ef#commitcomment-31818156", "url": "https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/f954a914716e28b929ef173f2f3eae12652d86ef#commitcomment-31818156", "name": "View Commit" }, "description": "View this Commit on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]</script>
Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

David T Lewis
 

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)...


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/OpenSmalltalk/opensmalltalk-vm","title":"OpenSmalltalk/opensmalltalk-vm","subtitle":"GitHub repository","main_image_url":"https://github.githubassets.com/images/email/message_cards/header.png","avatar_image_url":"https://github.githubassets.com/images/email/message_cards/avatar.png","action":{"name":"Open in GitHub","url":"https://github.com/OpenSmalltalk/opensmalltalk-vm"}},"updates":{"snippets":[{"icon":"PERSON","message":"@nicolas-cellier-aka-nice on f954a91: But `__ARM_ARCH_V8__` can run in 32 bits mode (aarch32) right?\r\nSo maybe we want to compile for V8, but not for 64bits (aarch64)...\r\n"}],"action":{"name":"View Commit","url":"https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/f954a914716e28b929ef173f2f3eae12652d86ef#commitcomment-31818224"}}}</script> <script type="application/ld+json">[ { "@context": "http://schema.org", "@type": "EmailMessage", "potentialAction": { "@type": "ViewAction", "target": "https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/f954a914716e28b929ef173f2f3eae12652d86ef#commitcomment-31818224", "url": "https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/f954a914716e28b929ef173f2f3eae12652d86ef#commitcomment-31818224", "name": "View Commit" }, "description": "View this Commit on GitHub", "publisher": { "@type": "Organization", "name": "GitHub", "url": "https://github.com" } } ]</script>
Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

timrowledge
 


> 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.


Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

Eliot Miranda-2
 
Hi Tim, Hi Ken, Hi Doug,

On Wed, Jan 2, 2019 at 11:12 AM tim Rowledge <[hidden email]> wrote:

> 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.

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.

Doug added a few tests when getting ThreadedFFIARMPlugin working.  This source hans'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 :-)

_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

KenDickey
 
..
> > 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
Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

Eliot Miranda-2
 
Hi Ken,

On Sun, Jan 6, 2019 at 1:57 PM Ken.Dickey <[hidden email]> wrote:
..
> > 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.

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
 [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:

"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
> 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.

That should be fine.  Pi3 is no slouch.

_,,,^..^,,,_
best, Eliot
Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

KenDickey
 
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
Reply | Threaded
Open this post in threaded view
|

Re: [OpenSmalltalk/opensmalltalk-vm] CogVM source as per VMMaker.oscog-eem.2502 (f954a91)

Eliot Miranda-2
 
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
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


--
_,,,^..^,,,_
best, Eliot