Age | Commit message (Collapse) | Author |
|
Poschwatta
|
|
The attached patch adds support for compiling arm uClibc as pure Thumb code.
This is needed because some recent ARM codes do not implement traditional ARM
mode. Specifically:
* Cortex-M1 - An extremely minimal FPGA based core that only implements
Thumb-1 (aka ARMv6-M).
* Cortex-M3 - A Thumb-2 only ARMv7-M core.
Most of uClibc already builds in Thumb mode, all that is left are a handful of
assembly bits.
Tested on arm-uclinuxeabi.
|
|
a problem where the linker was trying to use the wrong symbol name for the
init function.
Define SYMBOL_PREFIX as _ in Rules.mak for h8300, bfin, i960,
microblaze, and v850. Add -D__UCLIBC_UNDERSCORES__ in CFLAGS for targets
which define SYMBOL_PREFIX as _. Remove defines and undefs from
uClibc_arch_features.h of each target.
Add $(SYMBOL_PREFIX) to __uClibc_init when passed by ld option -init.
|
|
doing double negatives
|
|
|
|
common directory where SHMLBA = __getpagesize()
This patch fixes the issue.
Khem Raj
MontaVista Software Inc.
|
|
http://www.opengroup.org/onlinepubs/009695399/functions/posix_fadvise.html
states it returns error code instead of setting errno.
|
|
Linux kernel versions as reported by Joseph S. Myers on the mailing list. More information available at <http://www.uclibc.org/lists/uclibc/2007-May/017971.html> .
|
|
|
|
|
|
|
|
says "virtual memory exhausted" trying to build hello world.)
|
|
|
|
Import INTERNAL_SYSCALL macro for i386 from glibc.
Use above macro in posix_fadvise implementation if an arch defines it.
|
|
|
|
|
|
The patch below tweaks the ARM nommu startup code so that doubleword stack
alignment is preserved. This is required on EABI targets.
|
|
applications stop using _syscall#() and use syscall() instead. Cleanup
internal handling of syscall includes to use the correct header file.
|
|
minor include file issues
|
|
Put the call_via_rx code into each executable - call_via_ip cannot
possibly work if called through the PLT! ldso requires this code
too as it is not linked with the crt stuff and thumb ldso does
make calls via a register.
The patch puts the code into crti.S so that it is linked into
every normally built application (if thumb or interworking is
selected). This is only 30 extra bytes and it works - the previous
code did not because nothing both implemented and exported the
APIs (they were in libgcc, but not in the version script).
crti.S and crtn.S is also brought up to date with GCC 3.4.4 - this
is essential for thumb support because the .init and .fini sections
must use arm or thumb code to match the compilation of the libraries.
Note that code which pushes stuff into .init or .fini must be
compiled with or without -mthumb to match the uclibc compilation -
and gcc itself (which does do this) must therefore be compiled to
match.
|
|
|
|
INTERNAL_SYSCALL macro which saves r7 before making the call and pops it back after return.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
based profiling I nuked ages ago since tools like oprofile are non invasive
and work so much better.
|
|
Paul Brook <paul@codesourcery.com>.
|
|
I had clearly run search/replace on that were cluttering things up.
|
|
|
|
|
|
|
|
most of global data relocations are back
|
|
|
|
the archs fail
|
|
This patch fixes some of the ARM EABI code to be interworking-safe, using
bx where appropriate. (This code went in around the same time as the
Thumb patches, hence not being fixed by those patches.)
|
|
to be weaks
|
|
|
|
|
|
The patch fixes up the .align directives to '2' (i.e. a multiple
of 4) not '4' (a multiple of 16 - apparently an error since it seems
to be unnecessary, there is no advantage here in cache line alignment).
this is an arm "feature" ... the value given to .align is not in bytes:
.align 4 in arm means .align 2 ^ 4
|
|
This is a work round for a fairly serious GCC compiler bug - when
the syscall assembler overwrites r7 (required on thumb) the
compiler fails to protect the register when it is using it as a
frame pointer.
|
|
This patch changes all cases where the ARM assembler mov pc,rx
instructions are used to ensure that the thumb/arm interwork change of
process more works - in essence mov pc,rx needs to become bx rc.
The ldr pc or ldm rx, {pc} instructions are not changed - this is
fine on ARM >=v5 but will fail to restore thumb mode on ARM v4T,
i.e. this code will not provide support for thumb on ARM v4T.
One mov pc is left in resolve.S, this is fixed in a different patch -
thumb-resolve.patch
The changes are protected by __THUMB_INTERWORK__ - the original
mov instruction will work on newer architectures and is required on
arch v4 (not v4t) and earlier - those which did not support thumb -
so this is safe. See gcc lib1asmfuncs for a more exact test.
|
|
|