2010/3/5 vlad burlik <[email protected]>:
> Thank you!
> I'm using ARM11 armv6 with vfpv2 support.

The VFP support in V8 is called VFP3, but as far as I know we don't
use any instructions that weren't already in VFP2.  You probably want
to activate the EABI support and the VFP2 support.  If you know what
hardware you are using you should use the macros (or patch the VM) to
activate VFP and ARMv6 regardless of autodetection.

>
>
> On Mar 5, 10:30 am, Erik Corry <[email protected]> wrote:
>> 2010/3/5 vlad burlik <[email protected]>:
>>
>>
>>
>>
>>
>> > Hi,
>> > I have a problem with FPU generated code for ARM. Compiled script
>> > calls the function
>> > static double mul_two_doubles(double x, double y) {
>> >  return x * y;
>> > }
>>
>> > which in asm looks like this:
>>
>> > 0x7aa4d648 <v8::internal::mul_two_doubles>:   fmuld d0,d0,d1
>> > 0x7aa4d64c <v8::internal::mul_two_doubles+4>: mrrc  p11,0x1,r0,r1,cr0
>> > 0x7aa4d650 <v8::internal::mul_two_doubles+8>: bx
>> > lr                     -----> 0x04e1ca7c
>>
>> > then it returns back to the script compiled code:
>>
>> > 0x04e1ca7c ldr           r4,[sp],#4
>> > 0x04e1ca80 cmp           r4,#0x0
>> > 0x04e1ca84 ldreq         r4,[sp],#4
>> > 0x04e1ca88 sub           r5,r4,#0x1
>> > 0x04e1ca8c stfd          f0,[r5,#4]  <----------------------------
>> > crash....
>>
>> > Everything works fine until stfd f0,[r5,#4]
>>
>> > stfd supposed to just store the result to the memory address in R5+4,
>> > which is valid memory block...
>>
>> > Any idea why this could happen? Which function generates: STFD
>> > instruction( op code for it: ED858101 )?
>>
>> This is around line 5669 in codegen-arm.cc.  It is an stc (store
>> coprocessor register) instruction in the nomenclature of the V8 ARM
>> assembler.  This is for the old math coprocessor instruction set,
>> which is emulated on ARM operating systems that are running the old
>> (non-EABI) ABI.  If you are using a new CPU with the EABI then you
>> need to set the ARM_EABI macro and perhaps the
>> CAN_USE_ARMV7_INSTRUCTIONS macro.  See arm-constants.h.
>>
>> The experimental/partial_snapshots branch also has the macro
>> CAN_USE_VFP_INSTRUCTIONS which hasn't been ported to trunk or bleeding
>> edge yet.  Without that flag V8 tries to runtime-detect VFP
>> instructions using the /proc filesystem on Linux.
>>
>>
>>
>>
>>
>> > Thanks
>> > Vlad
>>
>> > --
>> > v8-dev mailing list
>> > [email protected]
>> >http://groups.google.com/group/v8-dev
>
> --
> v8-dev mailing list
> [email protected]
> http://groups.google.com/group/v8-dev
>

-- 
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev

Reply via email to