Hi All,
thanks to hard work by Tim Rowledge and Lars Wasserman we now have a functional JIT for the ARM in the simulator. We're still probably some weeks away from a functional ARM JIT VM; issues like instruction cache flushing on real hardware can be tricky to solve. But we're at least ready to start trying to compile the JIT VM for ARM. Doug, see that I added a build directory for build.linux32ARM/squeak.cog.spur. Hopefully a fast VM for Raspberry Pi and Android is only a few weeks away. -- best,
Eliot |
> On Apr 22, 2015, at 11:42, Eliot Miranda <[hidden email]> wrote:
> > Hi All, > > thanks to hard work by Tim Rowledge and Lars Wasserman we now have a functional JIT for the ARM in the simulator. We're still probably some weeks away from a functional ARM JIT VM; issues like instruction cache flushing on real hardware can be tricky to solve. But we're at least ready to start trying to compile the JIT VM for ARM. Doug, see that I added a build directory for build.linux32ARM/squeak.cog.spur. Hopefully a fast VM for Raspberry Pi and Android is only a few weeks away. > -- > best, > Eliot +1000 This is terrific news! Thanks to you, Tim, and Lars! Doug |
In reply to this post by Eliot Miranda-2
Hi Holger,
On Wed, Apr 22, 2015 at 11:52 AM, Holger Freyther <[hidden email]> wrote:
that's good news. It wasn't always that easy. When we got the ARM JIT working for VisualWorks we had to use hand-rolled code to flush the cache as linux didn't provide a reliable function at that time. So perhaps we're closer than we think. But it's always wise to lengthen time estimates, not shorten them :-) holger best,
Eliot |
In reply to this post by Eliot Miranda-2
And this code (pulled from the Pi forum, written by ???) demonstrates -
#include <stdio.h> #include <sys/mman.h> #include <stdint.h> #include <stdlib.h> int inc(int x){ //increments x uint32_t *ret = mmap(NULL, 2 * sizeof(uint32_t), // Space for 16 instructions. (More than enough.) PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1,0); if (ret == MAP_FAILED) { printf("Could not mmap a memory buffer with the proper permissions.\n"); return -1; } *(ret + 0) = 0xE2800001; //add r0 r0 #1 := r0 += 1 *(ret + 1) = 0xE12FFF1E; //bx lr := jump back to inc() __clear_cache((char*) ret, (char*) (ret+2)); int(*f)(int) = (int (*)(int)) ret; return (*f)(x); } int main(){ printf("%d\n",inc(6)); //expect '7' to be printed exit(0);} tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim Strange OpCodes: YVR: Branch to Vancouver |
In reply to this post by Eliot Miranda-2
This is awesome. Karl On Wed, Apr 22, 2015 at 8:42 PM, Eliot Miranda <[hidden email]> wrote:
|
In reply to this post by Eliot Miranda-2
> thanks to hard work by Tim Rowledge and Lars Wasserman we now have a > functional JIT for the ARM in the simulator... Hopefully a fast VM > for Raspberry Pi and Android is only a few weeks away. Congratulations! -C -- Craig Latta netjam.org +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS) |
In reply to this post by Eliot Miranda-2
On Thu, Apr 23, 2015 at 2:42 AM, Eliot Miranda <[hidden email]> wrote:
Really cool news to hear. I think this will prompt me to buy a RasPi. cheers -ben |
In reply to this post by Eliot Miranda-2
Holy cow! That's so cool! And *timely.*
--C > On Apr 22, 2015, at 11:42 AM, Eliot Miranda <[hidden email]> wrote: > > Hi All, > > thanks to hard work by Tim Rowledge and Lars Wasserman we now have a functional JIT for the ARM in the simulator. We're still probably some weeks away from a functional ARM JIT VM; issues like instruction cache flushing on real hardware can be tricky to solve. But we're at least ready to start trying to compile the JIT VM for ARM. Doug, see that I added a build directory for build.linux32ARM/squeak.cog.spur. Hopefully a fast VM for Raspberry Pi and Android is only a few weeks away. > -- > best, > Eliot > |
Free forum by Nabble | Edit this page |