Go to previous topic
Go to next topic
Last Post 13 Sep 2007 12:46 PM by  spannring
Exception with Lolo - fpu
 1 Replies
Author Messages
info@algotronic.ch
New Member
New Member
Posts:


--
13 Sep 2007 09:39 AM
    I am currently using the the GNU toolchain provided by YAGARTO (win arm gcc 4.1.1) for imx31 target. Find below the exception I recieved when the program was loaded with LoLo (load and run).
    This problem was encontered when using fpu (-mfpu=vfp -mfloat-abi=softfp). Any ideas on this?

    Unhandled Exception:
    exception mode: undef
    r00: 00000000 r01: 800543d8 r02: 000059f8 r03: 00005088
    r04: 8005cd34 r05: 00000000 r06: 8005cd34 r07: 00000000
    r08: 800349ac r09: 00000000 r10: 8005c854 r11: 8005c844
    r12: 8005c830 sp: 8005c82c lr: 8000c6ac pc: 80100004
    spsr:00000153 cpsr:000001db
    bt: sp: 8005c778 (stack: 80058cbc - 8005ccbc)
    0: fp:8005c7a0 + 40 80000804() called from: 800034f8
    1: fp:8005c7b8 + 20 800034b4() called from: 80000b0c
    2: fp:8005c7cc + 16 80000964() called from: 8000156c
    3: fp:8005c7e0 + 16 8000154c() called from: 800006fc
    4: fp:8005c844 + 96 8000c618() called from: 800061fc
    5: fp:8005c8c4 + 124 80005f18() called from: 80007060
    6: fp:8005c900 + 56 80006f64() called from: 80005974
    7: fp:8005c924 + 32 80005944() called from: 8002d9d8
    8: fp:8005cc5c + 820 8002d5d4() called from: 80005bd4
    9: fp:8005cc84 + 36 80005a18() called from: 80005e60
    10: fp:8005cca0 + 24 80005d14() called from: 80003d8c
    11: fp:8005ccb8 + 20 80003d60() called from: 80003d60
    (fp:8005ccb8->8005c760, sp:8005ccbc)

    -- disassebled code --
    int main (void)
    {
    80004000: e52de004 str lr, [sp, #-4]!
    80004004: ed2d8b05 fstmdbx sp!, {d8-d9}
    80004008: ed9f8b0c fldd d8, [pc, #48]
    8000400c: ed9f9b0d fldd d9, [pc, #52]
    double P1;
    double P2;
    P1=12323123.213;
    while(1)
    {
    led_on(LED1);
    80004010: e3a00080 mov r0, #128 ; 0x80
    80004014: eb000013 bl 80004068 <led_on>
    P2=sqrt(P1);
    80004018: eeb17bc8 fsqrtd d7, d8
    8000401c: ec510b18 fmrrd r0, r1, d8
    P1=P1+10.123;
    80004020: ee388b09 faddd d8, d8, d9
    80004024: eeb47b47 fcmpd d7, d7
    80004028: eef1fa10 fmstat
    8000402c: 0a000000 beq 80004034 <main+0x34>
    80004030: eb00003c bl 80004128 <sqrt>
    led_off(LED1);
    80004034: e3a00080 mov r0, #128 ; 0x80
    80004038: eb000004 bl 80004050 <led_off>
    8000403c: eafffff3 b 80004010 <main+0x10>
    80004040: 66d0e560 ldrvsb lr, [r0], r0, ror #10
    80004044: 41678126 cmnmi r7, r6, lsr #2
    80004048: db22d0e5 blle 808b83e4 <_edata+0x8b3140>
    8000404c: 40243ef9 strmid r3, [r4], -r9
    spannring
    New Member
    New Member
    Posts:


    --
    13 Sep 2007 12:46 PM
    It almost sounds like you or LOLO have set the EN bit in the FPEXC register to 0.

    What's the instruction at 8000c6a8?


    ---