ioctl ABI considerations for 64b ARM?

Arnd Bergmann 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
for arm-eabi.

In either case however, you will have to convert the data structures
that contain pointers running qemu-user on x86-64.

	Arnd



More information about the linaro-dev mailing list