[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-arm
Subject:    Mailing List FAQ
From:       Russell King - ARM Linux <linux () arm ! linux ! org ! uk>
Date:       2005-12-28 7:00:09
Message-ID: E1ErVI9-0003YP-Rv () flint ! arm ! linux ! org ! uk
[Download RAW message or body]

This message is sent to this mailing list once a week.

This can also be found (with html links) at:
   http://www.arm.linux.org.uk/mailinglists/faq.php

   Lists
    1. How do I compile a kernel for ARM?
    2. Can I use Intel IXP425 AccessLibrary with 2.6 kernels?
    3. What are the available solutions for floating point support?
    4. Can  I  use  the  both  hard & soft float at the same time or only
       choose one of them?
    5. When  I compile my 2.6.x kernel for ARM I get a compiler/assembler
       error. Any idea ?
    6. When  I trace kernel in head.S I found problems that may be caused
       by __turn_mmu_on. Any idea ?
    7. I'm  working  on  a  bootloader, where can I find ARM Linux kernel
       booting requirements ?
    8. How can I access /dev/mem ? - How can I map memory in user space ?
    9. I  see  '$a',  '$d'  and  '$t'  symbols  in the backtrace/ksymoops
       output/System.map/linker error messages. What are they and how can
       I get rid of them ?
   10. Where can I find -rmk -pxa -* patches for the 2.6 kernel ?

   1. How do I compile a kernel for ARM?
          [rmk]
          Please see the kernel compilation instructions.

   2. I am trying to run a Linux kernel 2.6 on my Intel IXP42x. I am
          using the kernel 2.6.x. This kernel does not include support
          for the integrated ethernet controllers of the IXP425. I have
          downloaded the AccessLibrary 1.x from Intel, but i have seen it
          only supports kernel 2.4. Is there any news about a new version
          of the AccessLibrary for 2.6 kernel?
          [19 March 2004 - ds]
          Unfortunately,  the  only people who can help you are Intel b/c
          they  need  to port the access library to 2.6 since the code is
          under a closed license and even if someone outside Intel ported
          it  to 2.6, they could not share the code due to the propietary
          license.
          [14 December 2004 - rmk]
          When  we  say  "the  only people who can help you are Intel" we
          mean  it.  Please  do  not post questions about this to the ARM
          Linux  mailing  lists  on the off chance. It just winds certain
          people  up.  We can't help you. We can't even suggest where you
          might  get  help  from, other than Intel directly. Talk to your
          Intel  representative,  or  if you don't know who that is, your
          manager.  The  best  information  we  have  is in the above FAQ
          entry.

          The  linux-arm*  lists  are for supporting Open Source only and
          not for random proprietary closed source products.

   3. I feel really confused about what's the difference with gcc
          soft-float support and the kernel NWFPE/FastFPE support?
          [31 January 2004 - np]
          Scenario 1 (hard-float): The compiler emits opcodes designed to
          be  used  with a hardware floating point coprocessor (FPU). The
          FPU  usually  has a set of extra registers for its use, and the
          compiler  may as well pass floating point argument to functions
          through  those registers. This is of course the best performing
          solution when a real hardware FPU is used.

          Scenario  2  (soft-float): the compiler converts floating point
          operations into function calls and a special library is used to
          provide  all  functions performing the required operations, all
          in software with no FPU instructions at all. There is obviously
          no  extra  floating  point  registers  available  in this case,
          therefore  all  FP  arguments  to  functions  have to be passed
          through  standard  registers or on the stack. This is of course
          the best performing solution when no hardware FPU is available,
          given  that  the  library  implementing  the  FP  operations is
          optimally coded.

          Now,  unfortunately, the default on ARM Linux has traditionally
          been set to have the compiler use hard-float, even if ARM Linux
          never  ran  on any ARM CPU with a real hardware FPU. The CPU is
          therefore  raising  the invalid instruction exception each time
          some  FPU  opcode  is  encountered.  Then the kernel traps that
          exception,  looks  at the given FPU instruction and emulates it
          in  software.  But here not only the kernel must perform the FP
          operation,  it  must  emulates  the whole hardware FPU as well.
          That's  what  NWFPE or FastFPE are doing. This is obviously the
          worst  performing  arrangement that can be due to the exception
          trap and emulation overhead

   4. Can I use the both hard & soft float at the same time or only
          choose one of them?
          [31 January 2004 - np]
          Depends. You can use both at the same time, but not in the same
          application.  The problem as to do with the ABI incompatibility
          between soft-float and hard-float due to the different floating
          point argument passing conventions. So, if you decide to switch
          to  using  soft-float  for some application, you MUST recompile
          ALL  the  libraries that application is going to use, including
          system  libraries  like  the  C library. If those libraries are
          dynamically  linked libraries, you then must also recompile all
          the applications that share those same libraries. And then your
          application  will run correctly only on systems with soft-float
          environments,  unless  you  link it statically in which case it
          will run anywhere (even on a kernel with NWFPE configured in --
          it  will  simply  not  be  invoked). That's the main reason why
          mainstream  ARM  distributions are still reluctant to switch to
          soft-float because of the associated compatibility pain.

   5. When I compile my 2.6.x kernel for ARM I get a compiler/assembler
          error. Any idea ?
          [2 April 2004 - rmk]
          When reporting these problems, always show the full build line.
          This  can be obtained by re-running the make with an additional
          argument: V=1

   6. When I trace kernel in head.S I found problems that may be caused
          by __turn_mmu_on. Any idea ?
          [5 April 2004 - rmk]
          Please read the comment in head.S:

/*
 * Enable the MMU.  This completely changes the structure of the visible
 * memory space.  You will not be able to trace execution through this.
 * If you have an enquiry about this, *please* check the linux-arm-kernel
 * mailing list archives BEFORE sending another post to the list.
 */

          It's  been  asked soo many times that it really is a frequently
          asked  question.  The  above  comment  is  supposed to head off
          further questions, but alas... Hopefully this FAQ entry will do
          the job.
          [11 January 2002 - rmk]
          The  number  1  problem is that people just do not realise what
          "enabling   the   MMU"  means.  It  means  that  _all_  of  the
          addressable  memory  _will_  change,  and  this  normally means
          various  regions  you'd  like  to write to no longer exist - in
          other  words,  if  you have debugging code present that doesn't
          cater  for a complete change in the memory structure, then your
          debugging code is buggy.

          (Side  note:  I've  even had people insist that their debugging
          code  is  perfect,  even  after  mentioning the above, and then
          we've gone through several mails, ended up having the debugging
          code  posted, and it turns out to buggy, assuming that the LEDs
          at some random address are still accessible.)

          The  best  advice  is  if you're using your own debugging code,
          remove  it.  Use  the  debugging  printascii()  stuff  for your
          platform    in    arch/arm/kernel/debug-armv.S    (enabled   by
          CONFIG_DEBUG_LL)   and   drop   a  printascii()  into  printk()
          (kernel/printk.c)  just  after the vsprintf() call, and monitor
          the relevant serial port.

   7.I'm working on a bootloader, where can I find ARM Linux kernel
          booting requirements ?
          [7 June 2004 - rmk]
          First  of  all,  we  don't  need another boot loader. If you're
          planning  on writing one from scratch, please don't. Use one of
          the existing boot loaders, such as blob or uboot.

          For kernel booting requirements, please see the website:

          + 2.4.18-rmk6 and 2.5.17 and later booting requirements
          + Setting  R2 correctly for booting the kernel (explaination of
            booting requirements).

   8.How can I access /dev/mem ? - How can I map memory in user space ?
          [10 July 2004 - rmk]
          No  need  to  reinvent  the  wheel,  you  will  find  a  sample
          implementation   of   this   type  of  thing  in  devmem2.  See
          http://www.lart.tudelft.nl/lartware/port/devmem2.c    for   the
          source.

   9.I see '$a', '$d' and '$t' symbols in the backtrace/ksymoops
          output/System.map/linker error messages. What are they and how
          can I get rid of them ?
          [12 July 2004 - rmk]
          These  are  "mapping symbols", which are used in the generation
          of  some binary formats, added by binutils 2.15. Unfortunately,
          they leak into the symbol table, and as such interfere with the
          linkers  ability to find the correct symbol to report for error
          messages.  They  also  appear  in  the  objdump  --syms  and nm
          outputs,  and  affect the operation of the kernel backtrace and
          ksymoops outputs.

          In  order  to  work  around this problem, I recommend not using
          binutils  2.15  for  the  time  being.  Please  use  an earlier
          binutils version like 2.14 instead. However, please ensure that
          you have applied this fix.

   10.Where can I find -rmk -pxa -* patches for the 2.6 kernel ?
          [21 December 2005 - eb]
          Since  2.6,  all  the  ARM  support  is  directly pushed in the
          mainstream  kernel,  so  you shouldn't need any patch. Just get
          the official 2.6.x stable kernel from http://www.kernel.org/ or
          the   latest   development   version   from  the  git  tree  at
          http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.
          6.git;a=summary.  Russell King's development git tree is synced
          every two days with Linus' tree so you only need to keep synced
          with  Linus'  one.  As  usual,  you  will find patches awaiting
          review     in     Russell    King's    patch    system    here:
          http://www.arm.linux.org.uk/developer/patches/
     _________________________________________________________________

   People listed above:
     * ds - Deepak Saxena
     * eb - Eric Benard
     * erikm - Erik Mouw
     * np - Nicolas Pitre
     * rfs - Ralph Siemsen
     * rmk - Russell King

   Special thanks to Eric Bénard for volunteering to look after this FAQ.


   Last modified: December 14, 2004



-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ:        http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette:  http://www.arm.linux.org.uk/mailinglists/etiquette.php
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic