• Status Closed
  • Percent Complete
  • Task Type Patches
  • Category Infrastructure → Build environment
  • Assigned To No-one
  • Operating System All players
  • Severity Low
  • Priority Very Low
  • Reported Version Version 3.3
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by Unhelpful - 2009-07-11
Last edited by funman - 2010-06-16

FS#10430 - EABI toolchain for ARM targets.

Updates to build gcc-4.3.3 and binutils-2.19.51 for ARM, allowing targets which can’t map all functions within short-call range of each other to use short calls everywhere, which will be pointed at stubs that jump to the proper target if it is out of range for a short call. This saves about 45KB on e200, as well as making calls between functions in different source files faster, provided that caller and callee are within short-call range.

The down side is that targets that don’t need this appear to get a bit larger, and that EABI has different structure packing specifications, so that structures that are written to disk will no longer be compatible, and asm that relies on C struct size or packing may need rewritten. Core JPEG is fixed with regard to these new rules, but nothing else has been yet. despite that, I haven’t yet found anything in core that doesn’t work. Codecs i’ve tested (vorbis, mp3) are broken, probably due to structure packing changes.

To use this patch, you’ll need to store the gcc diff in your rbdev-dl directory before running, since the script will try to download it otherwise.

Closed by  funman
2010-06-16 18:47
Reason for closing:  Out of Date

Add a new ASMDEFS mechanism. Special C files are compiled, but not assembled, and the result processed to create defines for compile-time values which the assembler can’t calculate. Name a file *_asmdefs.c, add it to ASMDEFS_SRC in a makefile, and include it (relative to the source root) as <dir>/<name>_asmdefs.h. Define a global int value with the name AD_<label> in the .c file to generate a #define <label> <value> in the .h file. These can be used to export structure size, packing, or member offset data to assembly files so that they may access arrays or members of structures without hard-coded numeric values for sizes or offsets. Converted jpeg_idct_arm.S as proof-of-concept, also removing #ifdef HAVE_LCD from it.


Available keyboard shortcuts


Task Details

Task Editing