ioctl ABI considerations for 64b ARM?
arnd at arndb.de
Mon Sep 19 17:36:27 UTC 2011
On Monday 19 September 2011 10:43:00 Rob Clark wrote:
> On Mon, Sep 19, 2011 at 10:39 AM, Will Deacon <will.deacon at arm.com> wrote:
> > Arnd,
> > On Mon, Sep 19, 2011 at 08:15:45AM +0100, Arnd Bergmann wrote:
> >> Assuming that we can prevent any funny stuff from going into such an ABI,
> >> we only need to worry about the warts of the current ABI for ARM specific
> >> considerations. The one thing that I've noticed before is that structs
> >> on ARM (at least on one of the ABIs, forgot which) are padded to 32 bits,
> >> even if all members inside are smaller.
> > This is only the case for the old ABI. EABI lays out structures so that they
> > are aligned to their most aligned member and padded to be the smallest
> > possible multiple of that alignment which can contain all of their aligned
> > members.
> Hmm, so then since you can build the kernel w/ OABI compatibility, it
> seems like structs should always have padding fields to force them to
> be a multiple of 32bits...
It depends on whether you want those structures to be compatible with
any other structure. To give a different example, qemu-user supports
converting ioctl data structures to the host data structure for
any commands it knows. When you want to run an arm-oabi binary for
instance on an x86-32 host, you need to conver the data structures
that have this layout, but not when running the same program built
In either case however, you will have to convert the data structures
that contain pointers running qemu-user on x86-64.
More information about the linaro-dev