[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] avr-gcc 4.2.2 atmega 2561 issues
From: |
Simon Eatough |
Subject: |
Re: [avr-gcc-list] avr-gcc 4.2.2 atmega 2561 issues |
Date: |
Tue, 23 Dec 2008 09:54:04 +1300 |
User-agent: |
KMail/1.9.10 |
Ok
So after some reading it appears that the problem is due to avr-gcc's use of
16 bit function pointers, and means that calls to glibc that are over the
128k boundary are broken.
Simon
On Tue, 16 Dec 2008 15:49:34 Simon Eatough wrote:
> Hi folks
> I've got a project where the code has just crossed the dreaded 128k
> boundary. Specifically glibc straddles the boundary.
> I've got problems with the code crashing, due i think to call of
> si_to_float in libgcc which sets up the Z register for the eijmp in
> __prolog_saves__ ,but does not set EIND . causing the eijmp instruction to
> jump to the wrong address.
>
> disassembly below.
>
> si_to_float (SItype arg_a)
> {
> 1fee4: a8 e0 ldi r26, 0x08 ; 8
> 1fee6: b0 e0 ldi r27, 0x00 ; 0
> 1fee8: e8 e7 ldi r30, 0x78 ; 120
> 1feea: ff ef ldi r31, 0xFF ; 255
> 1feec: 0d 94 7f 04 jmp 0x208fe ; 0x208fe <__prologue_saves__+0x12>
> 1fef0: 9b 01 movw r18, r22
> 1fef2: ac 01 movw r20, r24
> fp_number_type in;
>
> /snip
>
>
> 000208ec <__prologue_saves__>:
> 208ec: 2f 92 push r2
> 208ee: 3f 92 push r3
> 208f0: 4f 92 push r4
> 208f2: 5f 92 push r5
> 208f4: 6f 92 push r6
> 208f6: 7f 92 push r7
> 208f8: 8f 92 push r8
> 208fa: 9f 92 push r9
> 208fc: af 92 push r10
> 208fe: bf 92 push r11
> 20900: cf 92 push r12
> 20902: df 92 push r13
> 20904: ef 92 push r14
> 20906: ff 92 push r15
> 20908: 0f 93 push r16
> 2090a: 1f 93 push r17
> 2090c: cf 93 push r28
> 2090e: df 93 push r29
> 20910: cd b7 in r28, 0x3d ; 61
> 20912: de b7 in r29, 0x3e ; 62
> 20914: ca 1b sub r28, r26
> 20916: db 0b sbc r29, r27
> 20918: 0f b6 in r0, 0x3f ; 63
> 2091a: f8 94 cli
> 2091c: de bf out 0x3e, r29 ; 62
> 2091e: 0f be out 0x3f, r0 ; 63
> 20920: cd bf out 0x3d, r28 ; 61
> 20922: 19 94 eijmp
>
>
> Wonder if there is a workaround for this ?
>
> Cheers
> Simon
>
>
> --
> Simon Eatough
> Development Engineer
> Pertronic Industries
> Wellington NZ
>
>
> _______________________________________________
> AVR-GCC-list mailing list
> address@hidden
> http://lists.nongnu.org/mailman/listinfo/avr-gcc-list
--
Simon Eatough
Development Engineer
Pertronic Industries
Wellington NZ
tel +4445673229x808