Enabling floating point operations in OAL RRS feed

  • Question

  • Hi,

    I enabled support of VFP (both hardware and software work fine) by calling the VfpOEMInit function in OEMInit. But it seems to work only after k.fpcrt.dll loaded. This dll loads at later stage. But if I use simple mathematical functions like sin, cos etc in the OAL level it crashes. For example in OEMInit:


    double test;


    VfpOemInit(g_pOemGlobal, VFP_AUTO_DETECT_FPSID);// software emulation will have the same effect

    test = cos(3.457) + sin(83.93);

    It crashes here.

    It doesn't even try to load k.fpctr.dll to support floating point operations at this stage.

    There is also one dll called bcrypt.dll, which also crashes somewhere in the beginning if I don't manually remove it. I am not sure if this crash has something to do with VFP because I don't know if this dll uses coprocessor. Is there anything that I have to enable/implement in OAL to support coprocessor beside calling VfpOEMInit?


    P.S: I am using Windows Compact 7 and ARM v7 based CPU (Cortex A9).

    BTW there is also fpctr.dll,  what is the difference between k.fpctr and fpctr dlls?

    • Edited by Jker Thursday, September 8, 2011 4:40 PM
    Thursday, September 8, 2011 4:36 PM

All replies

  • The one with k. prefix is for kernel mode.
    Do you use these transcendental functions in OEMInit?
    If so, that won't work as in this phase kernel it not fully booted so the loader is yet available to load any libraries.
    Perhaps, you need to create your private version of transcendental functions in OAL.

    Thursday, September 8, 2011 7:29 PM