This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: some questions of gcc-4.1.0/glibc-2.4 toolchain


--- Bridge Wu <mingqiao.wu@gmail.com> wrote:

> I take a look at the URL you pointed. A question abou "system call
> interface" section.
> 
> "One area affected by alignment/struct packing is the few system calls
> that pass structures or 64-bit types. To solve this problem a new
> kernel syscall interface has been introduced. EABI kernels have an
> option to support the old syscall interface (including old structure
> layout rules) for running non-EABI binaries. However some features
> (eg. ALSA) do not have the necessary kernel shims, so will only work
> correctly from EABI binaries.
> 
> Some third party EABI toolchains (eg. CodeSourcery 2005q3) use the old
> kernel interface via userspace shims in glibc. This is now obsolete
> and no longer supported by glibc. "
> 
> I suppose this show the following combination should be fine since
> both kernel and alsa use EABI.
> 
>    gcc-4.1.0/glibc-2.4 toolchain
>    kerenl-2.6.16 built with -mabi=aapcs-linux
>    busybox-1.01 rootfs
>    alsa lib and application built with -mabi=aapcs-linux
> 
> But the result is disappointing. When we run alsa aplay application,
> below error appears. But If we use codesourcery 2005q3-2 toolchain to
> built the kernel, the result is ok.
> 
>    ALSA lib pcm_params.c:2154:(snd_pcm_hw_refine_slave) Slave PCM not usable
>    aplay: set_params: 860: Broken configuration for this PCM: no
> configurations available
> 
> Does anyone have met such problems? Possible reason?
> 
> Another question is why we need use -mabi=aapcs-linux to build kernel
> and application.
> What's the difference of -mabi=aapcs and -mabi=aapcs-linux. There does
> has difference in building kernel with these two options, but I
> haven't got it.
> 
Main difference is with enum sizes.  aapcs defines them to be a varible sized
type, while with aapcs they are always ints (4 bytes).  I haven't looked into
what else it changes but this did bite me when I was cross-compiling a native
compiler with my arm-iwmmxt-linux-gnueabi patch.

> On 4/27/06, Martin Guy <martinwguy@gmail.com> wrote:
> > Hi again
> > You will find a lot of answers to your questions in
> > http://wiki.debian.org/ArmEabiPort
> >
> > > 1. How to support multiple abi?
> > There is an option in the kernel config
To be able to run both ABIs you'll need the OABI kernel option, an FPE, and a
compatible userspace, or just use statically linked binaries..

> >
> > > 2. Which floating point is used?
> > EABI uses IEEE954 (754? 758? i forget) not FPA, as far as i understand.
The two standard FP units for the ARM are the FPA (older ARMs and was indeed
the original floating point co-processor for the ARM, the FPE emulates an FPA,
it is mostly legacy stuff from the Acorn days) and the VFP.  VFP is IEEE754
compatible.  AAPCS/EABI uses the IEEE754 standard.

I used to do a lot of ARM assembler programming back in late 80's early '90s on
my ARM2! :)  FP code didn't run quick back then...


Steve

Send instant messages to your online friends http://uk.messenger.yahoo.com 

--
For unsubscribe information see http://sourceware.org/lists.html#faq


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]