musl/arch
Rich Felker 29237f7f5c rework arm atomic/tp backends to be thumb-compatible and fdpic-ready
three problems are addressed:

- use of pc arithmetic, which was difficult if not impossible to make
  correct in thumb mode on all models, so that relative rather than
  absolute pointers to the backends could be used. this was designed
  back when there was no coherent model for the early stages of the
  dynamic linker before relocations, and is no longer necessary.

- assumption that data (the relative pointers to the backends) can be
  accessed at a constant displacement from the code. this will not be
  possible on future fdpic subarchs (for cortex-m), so move
  responsibility for loading the backend code address to the caller.

- hard-coded arm opcodes using the .word directive. instead, use the
  .arch directive to work around the assembler's refusal to assemble
  instructions not available (or in some cases, available but just
  considered deprecated) in the target isa level. the obscure v6t2
  arch is used for v6 code so as to (1) allow generation of thumb2
  output if -mthumb is active, and (2) avoid warnings/errors for mcr
  barriers that clang would produce if we just set arch to v7-a.

in addition, the __aeabi_read_tp function is moved out of the inner
workings and implemented as an asm wrapper around a C function, so
that asm code does not need to read global data. the asm wrapper
serves to satisfy the ABI calling convention requirements for this
function.
2016-12-19 21:21:08 -05:00
..
aarch64 add bits/hwcap.h and include it in sys/auxv.h 2016-10-20 01:28:25 -04:00
arm rework arm atomic/tp backends to be thumb-compatible and fdpic-ready 2016-12-19 21:21:08 -05:00
generic/bits remove legacy i386 fallback stdarg implementation and framework 2016-12-15 12:18:24 -05:00
i386 remove legacy i386 fallback stdarg implementation and framework 2016-12-15 12:18:24 -05:00
microblaze microblaze: add syscall numbers from linux v4.7 2016-08-30 15:58:28 -04:00
mips add bits/hwcap.h and include it in sys/auxv.h 2016-10-20 01:28:25 -04:00
mips64 add bits/hwcap.h and include it in sys/auxv.h 2016-10-20 01:28:25 -04:00
mipsn32 add bits/hwcap.h and include it in sys/auxv.h 2016-10-20 01:28:25 -04:00
or1k remove or1k version of sem.h 2016-07-06 00:21:19 -04:00
powerpc add bits/hwcap.h and include it in sys/auxv.h 2016-10-20 01:28:25 -04:00
powerpc64 add bits/hwcap.h and include it in sys/auxv.h 2016-10-20 01:28:25 -04:00
s390x fix use of incomplete struct type in s390x user.h 2016-12-16 22:36:22 -05:00
sh add bits/hwcap.h and include it in sys/auxv.h 2016-10-20 01:28:25 -04:00
x32 work around gdb issues recognizing sigreturn trampoline on x86_64 2016-11-12 19:54:43 -05:00
x86_64 work around gdb issues recognizing sigreturn trampoline on x86_64 2016-11-12 19:54:43 -05:00