ARC: Support syscall ABI v4
commit3e40f9669279f005f7154892539166f5081fbcb2
authorVineet Gupta <Vineet.Gupta1@synopsys.com>
Tue, 16 Aug 2016 22:04:27 +0000 (16 15:04 -0700)
committerWaldemar Brodkorb <wbx@uclibc-ng.org>
Wed, 17 Aug 2016 19:29:57 +0000 (17 21:29 +0200)
tree46d8c53c35da4d60fbfc97e435810e3454b507a4
parent9725c0b6e4fda2db5c5aac0888d64dc97c69a332
ARC: Support syscall ABI v4

The syscall ABI includes the gcc functional calling ABI since a syscall
implies userland caller and kernel callee.

The current gcc ABI (v3) for ARCv2 ISA required 64-bit data be passed in
even-odd register pairs, (potentially punching reg holes when passing such
values as args). This was partly driven by the fact that the double-word
LDD/STD instructions in ARCv2 expect the register alignment and thus gcc
forcing this avoids extra MOV at the cost of a few unused register (which we
have plenty anyways).

This however was rejected as part of upstreaming gcc port to HS. So the new
ABI v4 doesn't enforce the even-odd reg restriction.

Do note that for ARCompact ISA builds v3 and v4 are practically the same in
terms of gcc code generation.

This change is dormant for now (gcc 4.8.x based tools) and will only kick
in with switch to gcc 6.x based tools.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
libc/sysdeps/linux/arc/bits/uClibc_arch_features.h