On Sat, Jan 19, 2013 at 08:33:25PM +0100, [email protected] wrote:
> Adds support for x86_64 x32-ABI and fixes inline assembly.
>
> configure:
> - add x86_64_x32 and x86_64_x64 subarch for 32-bit and 64-bit ABI respectively
> - x86_64 remains enabled for both
> - pass x32 option to yasm (yasm not working yet, --disable-yasm is required)
Why is that option not working yet?
> libavutil/x86/asm.h:
> - REG* macros retain their meaning from x86_32.
> Roughly 99.5% of all usage of GPRs is used directly or indirectly to refer
> to memory. This ensures only very few changes are necessary in this area.
> - new macro REG_8 - refers to r8 (x64) or r8d (x32)
> - new macro REG_PTR_MOD - as argument modifier to specify pointer-sized
> arguments
> ("q" for x64, "k" for x32 and x86_32)
> - new macros REGra, REGrb, REGrc, REGrd, REGrD, REGrS, REGrBP
> - refer to 64bit GRPs on all 64-bit arches, or 32bit GRP otherwise
> (64bit registers required for push/pop, cpuid on x32)
>
> x86_reg remains int64_t on all 64-bit arches.
> Usage that refers to memory has been converted to intptr_t
> (186 out of 188 occurences).
>
> Indirect jmps/calls need special attention since they require 64bit operands.
> Suitable casts have been added.
Hmmm, this is a big patch about a slightly controversial new ABI :)
Could you split it into several pieces please? That will make reviewing
and getting it merged much simpler. For example, the intptr_t changes
can likely go in soon, the rest may need more thorough discussion.
Diego
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel