JIT for arm is dependant on gcc

View: New views
4 Messages — Rating Filter:   Alert me  

JIT for arm is dependant on gcc

by Jason Rukman :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Some parts of this message have been removed. Learn more about Nabble's security policy.

I’ve noticed that there are three functions that use inline gcc assembler for compiling JIT for ARM_TRADITIONAL.  Is it possible for these to be reworked using the macro assembler so that JIT can be compiled without the gcc toolchain dependency for arm? (sp. I am using armasm from Microsoft?). 

 

Alternatively, perhaps this could be moved to an external .asm or .s file.  This looks like it has been done for PaintHooks.asm; so maybe something similar to that.

 

These are the functions that I am missing trying to build JIT:

 

CacheFlush, ctiTrampoline, ctiVMThrowTrampoline & ctiOpThrowNotCaught

 

If there is a way to compile JIT without these dependencies please let me know.

 

Thanks,

Jason.

 


_______________________________________________
webkit-dev mailing list
webkit-dev@...
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Re: JIT for arm is dependant on gcc

by Zoltan Herczeg :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

these entry/leave functions are implemented in assembly for all ports. It
is faster this way. (Previously, the jit generated these functions, but
the reviewers convinced us to do this way).

External .asm files would be a nightmare, since we have to create (and
maintain) the build rules for all ports.

Is is difficult to implement these functions for your assembler? They are
simple code fragments.

Zoltan

> I've noticed that there are three functions that use inline gcc
> assembler for compiling JIT for ARM_TRADITIONAL.  Is it possible for
> these to be reworked using the macro assembler so that JIT can be
> compiled without the gcc toolchain dependency for arm? (sp. I am using
> armasm from Microsoft?).
>
>
>
> Alternatively, perhaps this could be moved to an external .asm or .s
> file.  This looks like it has been done for PaintHooks.asm; so maybe
> something similar to that.
>
>
>
> These are the functions that I am missing trying to build JIT:
>
>
>
> CacheFlush, ctiTrampoline, ctiVMThrowTrampoline & ctiOpThrowNotCaught
>
>
>
> If there is a way to compile JIT without these dependencies please let
> me know.
>
>
>
> Thanks,
>
> Jason.
>
>
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@...
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>

_______________________________________________
webkit-dev mailing list
webkit-dev@...
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Re: JIT for arm is dependant on gcc

by Jason Rukman :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

The Microsoft ARM toolchain does not support inline assembler so I'm unable to compile any inline assembler.  I'm trying to understand how to make these functions external but it doesn't appear to be straightforward (e.g. The first problem I hit was that the asm "push" instruction is unknown, also svc must be renamed swi and probably others. Also, I'm not able to easily create the pre/post stack frame for cacheflush as I haven't used 3 parameter assembler language before although I'm sure I could do this with a couple of hours research.

Can you maybe show me how to get the jit to generate this for this toolchain?

Jason.

-----Original Message-----
From: Zoltan Herczeg [mailto:zherczeg@...]
Sent: Wednesday, October 21, 2009 9:45 AM
To: Jason Rukman
Cc: webkit-dev@...
Subject: Re: [webkit-dev] JIT for arm is dependant on gcc

Hi,

these entry/leave functions are implemented in assembly for all ports. It
is faster this way. (Previously, the jit generated these functions, but
the reviewers convinced us to do this way).

External .asm files would be a nightmare, since we have to create (and
maintain) the build rules for all ports.

Is is difficult to implement these functions for your assembler? They are
simple code fragments.

Zoltan

> I've noticed that there are three functions that use inline gcc
> assembler for compiling JIT for ARM_TRADITIONAL.  Is it possible for
> these to be reworked using the macro assembler so that JIT can be
> compiled without the gcc toolchain dependency for arm? (sp. I am using
> armasm from Microsoft?).
>
>
>
> Alternatively, perhaps this could be moved to an external .asm or .s
> file.  This looks like it has been done for PaintHooks.asm; so maybe
> something similar to that.
>
>
>
> These are the functions that I am missing trying to build JIT:
>
>
>
> CacheFlush, ctiTrampoline, ctiVMThrowTrampoline & ctiOpThrowNotCaught
>
>
>
> If there is a way to compile JIT without these dependencies please let
> me know.
>
>
>
> Thanks,
>
> Jason.
>
>
>
> _______________________________________________
> webkit-dev mailing list
> webkit-dev@...
> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>

_______________________________________________
webkit-dev mailing list
webkit-dev@...
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev

Re: JIT for arm is dependant on gcc

by Zoltan Herczeg :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Hi,

sorry, I don't know anything about ms arm tools (ok, not just their arm
tools).

"push/pop {regs}" is an alias for "stmdb/ldmia sp!, { regs }"

I presume you use ms os, which means you have to implement the
cacheflush() for your own os as well. (The current implementation is
designed for Linux) Unfortunately the neccessary mcr instruction can only
be executed on supervisor level, so there is no platform independent way
to implement this important function.

Zoltan

> The Microsoft ARM toolchain does not support inline assembler so I'm
> unable to compile any inline assembler.  I'm trying to understand how to
> make these functions external but it doesn't appear to be straightforward
> (e.g. The first problem I hit was that the asm "push" instruction is
> unknown, also svc must be renamed swi and probably others. Also, I'm not
> able to easily create the pre/post stack frame for cacheflush as I haven't
> used 3 parameter assembler language before although I'm sure I could do
> this with a couple of hours research.
>
> Can you maybe show me how to get the jit to generate this for this
> toolchain?
>
> Jason.
>
> -----Original Message-----
> From: Zoltan Herczeg [mailto:zherczeg@...]
> Sent: Wednesday, October 21, 2009 9:45 AM
> To: Jason Rukman
> Cc: webkit-dev@...
> Subject: Re: [webkit-dev] JIT for arm is dependant on gcc
>
> Hi,
>
> these entry/leave functions are implemented in assembly for all ports. It
> is faster this way. (Previously, the jit generated these functions, but
> the reviewers convinced us to do this way).
>
> External .asm files would be a nightmare, since we have to create (and
> maintain) the build rules for all ports.
>
> Is is difficult to implement these functions for your assembler? They are
> simple code fragments.
>
> Zoltan
>
>> I've noticed that there are three functions that use inline gcc
>> assembler for compiling JIT for ARM_TRADITIONAL.  Is it possible for
>> these to be reworked using the macro assembler so that JIT can be
>> compiled without the gcc toolchain dependency for arm? (sp. I am using
>> armasm from Microsoft?).
>>
>>
>>
>> Alternatively, perhaps this could be moved to an external .asm or .s
>> file.  This looks like it has been done for PaintHooks.asm; so maybe
>> something similar to that.
>>
>>
>>
>> These are the functions that I am missing trying to build JIT:
>>
>>
>>
>> CacheFlush, ctiTrampoline, ctiVMThrowTrampoline & ctiOpThrowNotCaught
>>
>>
>>
>> If there is a way to compile JIT without these dependencies please let
>> me know.
>>
>>
>>
>> Thanks,
>>
>> Jason.
>>
>>
>>
>> _______________________________________________
>> webkit-dev mailing list
>> webkit-dev@...
>> http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev
>>
>
>

_______________________________________________
webkit-dev mailing list
webkit-dev@...
http://lists.webkit.org/mailman/listinfo.cgi/webkit-dev