Thank you! I'm using ARM11 armv6 with vfpv2 support.
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
