[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[avr-libc-dev] [RFC] Suggestion on how to rapidly implement support for
From: |
Björn Haase |
Subject: |
[avr-libc-dev] [RFC] Suggestion on how to rapidly implement support for atmega2560-2561 |
Date: |
Mon, 19 Sep 2005 23:29:01 +0200 |
User-agent: |
KMail/1.7.1 |
Bernd Trog wrote on Montag, 19. September 2005 17:35 :
> --- Björn Haase <address@hidden> wrote:
> > Positive side-effect would also be that with -ffunction-sections unused
> > functions that are not declared static could be removed by the linker.
>
> IIRC, you need some KEEP() statements for .vectors.
>
> See
> http://savannah.nongnu.org/patch/?func=detailitem&item_id=3593
> for details.
Considering the remarks so far concerning the large devices, I'd like to
suggest to use the following solution:
1.) Patch the binutils such that the KEEP() directives as suggested in
http://savannah.nongnu.org/patch/?func=detailitem&item_id=3593 are included.
I'd like to suggest to add immediately after the progmem data section one new
entry for a .jumpstub section.
2.) Add "bfd_mach_avr6" in the binutils/bfd directory.
3.) At the same time add support for an avr6 class to the linker and the
assembler. This probably requires only adding a AVR_ISA_M256 define symbol in
"binutils/include/opcode/avr.h" and an entry for the new controllers in
gas/config/tc-avr.c.
4.) In the compiler itself we could consider the jump stub to be a part of the
more complex function label. So we could insert it as text by modifying the
definition of the ASM_DECLARE_FUNCTION_NAME. I'd suggest to place the
function entry label in a section named .jumpstub.function_name so that the
linker could throw away unused stubs when the appropriate linker switches are
used. I'd like to make the name of the section for the jump stub *not* depend
on the -ffunction-sections switch. For the rest I'd use the approach sketched
in the patch I just had posted (i.e. change the call insn such that it always
uses the label in the upper memory region).
5.) One would finally need to change the build system for avr-libc such that
it also generates a lib for the family avr6 and that includes the header
files.
Drawback of this approach is that we would not be able to optimize away the
jump stubs in case that we are a) doing an indirect jump to a target function
that b) itself resides in the lower 128k. For this case we would not need a
jump stub at all. IMO, this would not be a catastrophe.
In case that we could agree on the procedure above, myself I'd like to offer
to implement step 4.). I'm anyway working on the prologue sequence while
switching from text prologue/epilogue to RTL and 4.) seems to be a small
addition to this change: For implementing the prologue/epilogue support, I
anyway had already included special treatments for different pc sizes. So
what I'd prepare would be a combined patch including both changes.
I don't have a copyright assignment for the binutils unfortunately, and it is
my experience that getting the FSF paperwork done takes about 4 months. In my
opinion the work to be done on the binutils is not very large. We possibly
could ask Marek to implement the necessary small changes on the side of the
binutils.
For the tedious work of preparing the header files for avr-libc I think that
it would probably be best to ask someone that really would like to work with
one of the big devices. :-)
Yours,
Bjoern
- Re: [avr-libc-dev] [task #3693][task #4102] Add new devices: mega640-1280-1281-2560-2561, (continued)
- [avr-libc-dev] [task #3693] Add new devices: mega 640-1280-1281-2560-2561, Anatoly Sokolov, 2005/09/07
- [avr-libc-dev] [task #3693] Add new devices: mega 640-1280-1281-2560-2561, Uwe Fechner, 2005/09/16
- RE: [avr-libc-dev] [task #3693] Add new devices: mega640-1280-1281-2560-2561, Darcy Watkins, 2005/09/16
- Re: [avr-libc-dev] [task #3693] Add new devices: mega640-1280-1281-2560-2561, Björn Haase, 2005/09/18
- [avr-libc-dev] [RFC] Patch adding support for atmega2560-2561, Björn Haase, 2005/09/18
- Re: [avr-libc-dev] [RFC] Patch adding support for atmega2560-2561, David Brown, 2005/09/19
- Re: [avr-libc-dev] [RFC] Patch adding support for atmega2560-2561, Björn Haase, 2005/09/19
- Re: [avr-libc-dev] [RFC] Patch adding support for atmega2560-2561, Björn Haase, 2005/09/19
- Re: [avr-libc-dev] [RFC] Patch adding support for atmega2560-2561, Bernd Trog, 2005/09/19
- [avr-libc-dev] [RFC] Suggestion on how to rapidly implement support for atmega2560-2561,
Björn Haase <=
- Re: [avr-libc-dev] [RFC] Suggestion on how to rapidly implement supportfor atmega2560-2561, Anatoly Sokolov, 2005/09/23
- [avr-libc-dev] Re: [RFC] Patch adding support for atmega2560-2561, Denis Chertykov, 2005/09/22