Skip to content
Snippets Groups Projects
  1. May 18, 2011
  2. Apr 29, 2011
    • Scott Wood's avatar
      Handle most LDSCRIPT setting centrally · 83b7e2a7
      Scott Wood authored
      
      Currently, some linker scripts are found by common code in config.mk.
      Some are found using CONFIG_SYS_LDSCRIPT, but the code for that is
      sometimes in arch config.mk and sometimes in board config.mk.  Some
      are found using an arch-specific rule for looking in CPUDIR, etc.
      
      Further, the powerpc config.mk rule relied on CONFIG_NAND_SPL
      when it really wanted CONFIG_NAND_U_BOOT -- which covered up the fact
      that not all NAND_U_BOOT builds actually wanted CPUDIR/u-boot-nand.lds.
      
      Replace all of this -- except for a handful of boards that are actually
      selecting a linker script in a unique way -- with centralized ldscript
      finding.
      
      If board code specifies LDSCRIPT, that will be used.
      Otherwise, if CONFIG_SYS_LDSCRIPT is specified, that will be used.
      
      If neither of these are specified, then the central config.mk will
      check for the existence of the following, in order:
      
      $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds (only if CONFIG_NAND_U_BOOT)
      $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds (only if CONFIG_NAND_U_BOOT)
      $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
      $(TOPDIR)/$(CPUDIR)/u-boot.lds
      
      Some boards (sc3, cm5200, munices) provided their own u-boot.lds that
      were dead code, because they were overridden by a CPUDIR u-boot.lds under
      the old powerpc rules.  These boards' own u-boot.lds have bitrotted and
      no longer work -- these lds files have been removed.
      
      Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
      Tested-by: default avatarGraeme Russ <graeme.russ@gmail.com>
      83b7e2a7
  3. Mar 27, 2011
  4. Nov 17, 2010
    • Sebastien Carlier's avatar
      Switch from archive libraries to partial linking · 6d8962e8
      Sebastien Carlier authored
      
      Before this commit, weak symbols were not overridden by non-weak symbols
      found in archive libraries when linking with recent versions of
      binutils.  As stated in the System V ABI, "the link editor does not
      extract archive members to resolve undefined weak symbols".
      
      This commit changes all Makefiles to use partial linking (ld -r) instead
      of creating library archives, which forces all symbols to participate in
      linking, allowing non-weak symbols to override weak symbols as intended.
      This approach is also used by Linux, from which the gmake function
      cmd_link_o_target (defined in config.mk and used in all Makefiles) is
      inspired.
      
      The name of each former library archive is preserved except for
      extensions which change from ".a" to ".o".  This commit updates
      references accordingly where needed, in particular in some linker
      scripts.
      
      This commit reveals board configurations that exclude some features but
      include source files that depend these disabled features in the build,
      resulting in undefined symbols.  Known such cases include:
      - disabling CMD_NET but not CMD_NFS;
      - enabling CONFIG_OF_LIBFDT but not CONFIG_QE.
      
      Signed-off-by: default avatarSebastien Carlier <sebastien.carlier@gmail.com>
      6d8962e8
  5. Oct 18, 2010
    • Wolfgang Denk's avatar
      Rename TEXT_BASE into CONFIG_SYS_TEXT_BASE · 14d0a02a
      Wolfgang Denk authored
      
      The change is currently needed to be able to remove the board
      configuration scripting from the top level Makefile and replace it by
      a simple, table driven script.
      
      Moving this configuration setting into the "CONFIG_*" name space is
      also desirable because it is needed if we ever should move forward to
      a Kconfig driven configuration system.
      
      Signed-off-by: default avatarWolfgang Denk <wd@denx.de>
      14d0a02a
  6. Sep 03, 2010
    • Haavard Skinnemoen's avatar
      avr32: Add simple paging support · 1f36f73f
      Haavard Skinnemoen authored
      
      Use the MMU hardware to set up 1:1 mappings between physical and virtual
      addresses. This allows us to bypass the cache when accessing the flash
      without having to do any physical-to-virtual address mapping in the CFI
      driver.
      
      The virtual memory mappings are defined at compile time through a sorted
      array of virtual memory range objects. When a TLB miss exception
      happens, the exception handler does a binary search through the array
      until it finds a matching entry and loads it into the TLB. The u-boot
      image itself is covered by a fixed TLB entry which is never replaced.
      
      This makes the 'saveenv' command work again on ATNGW100 and other boards
      using the CFI driver, hopefully without breaking any rules.
      
      Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      1f36f73f
    • Haavard Skinnemoen's avatar
      avr32: Use uncached() macro to get an address for SDRAM init · 9cec2fc2
      Haavard Skinnemoen authored
      
      The paging system which is required to set up caching properties has not
      yet been initialized when the SDRAM is initialized. So when the
      map_physmem() function is converted to return the physical address
      unchanged, the SDRAM initialization will break on some boards.
      
      The avr32-specific uncached() macro will return an address which will
      always cause uncached accessed to be made. Since this happens in the
      board code, using avr32-specific features should be ok, and will allow
      the SDRAM initialization to keep working.
      
      Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      9cec2fc2
  7. Jun 29, 2010
  8. Mar 20, 2009
    • Trent Piepho's avatar
      Fix all linker script to handle all rodata sections · f62fb999
      Trent Piepho authored
      
      A recent gcc added a new unaligned rodata section called '.rodata.str1.1',
      which needs to be added the the linker script.  Instead of just adding this
      one section, we use a wildcard ".rodata*" to get all rodata linker section
      gcc has now and might add in the future.
      
      However, '*(.rodata*)' by itself will result in sub-optimal section
      ordering.  The sections will be sorted by object file, which causes extra
      padding between the unaligned rodata.str.1.1 of one object file and the
      aligned rodata of the next object file.  This is easy to fix by using the
      SORT_BY_ALIGNMENT command.
      
      This patch has not be tested one most of the boards modified.  Some boards
      have a linker script that looks something like this:
      
      *(.text)
      . = ALIGN(16);
      *(.rodata)
      *(.rodata.str1.4)
      *(.eh_frame)
      
      I change this to:
      
      *(.text)
      . = ALIGN(16);
      *(.eh_frame)
      *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*)))
      
      This means the start of rodata will no longer be 16 bytes aligned.
      However, the boundary between text and rodata/eh_frame is still aligned to
      16 bytes, which is what I think the real purpose of the ALIGN call is.
      
      Signed-off-by: default avatarTrent Piepho <xyzzy@speakeasy.org>
      f62fb999
  9. Feb 23, 2009
  10. Oct 18, 2008
  11. Sep 03, 2008
  12. Sep 01, 2008
    • Haavard Skinnemoen's avatar
      avr32: use board_early_init_r instead of board_init_info · 25e6854d
      Haavard Skinnemoen authored
      
      Replace the avr32-specific board_init_info hook by the standard
      board_early_init_r hook and make it optional.
      
      board_early_init_r() runs somewhat earlier than board_init_info used to
      do, but this isn't a problem for any of the in-tree boards.
      
      Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      25e6854d
    • Haavard Skinnemoen's avatar
      avr32: refactor the portmux/gpio code · ab0df36f
      Haavard Skinnemoen authored
      
        - Separate the portmux configuration functionality from the GPIO pin
          control API.
        - Separate the controller-specific code from the chip-specific code.
        - Allow "ganged" port configuration (multiple pins at once).
        - Add more flexibility to the "canned" peripheral select functions:
            - Allow using more than 23 address bits, more chip selects, as
      	well as NAND- and CF-specific pins.
            - Make the MACB SPEED pin optional, and choose between MII/RMII
      	using a parameter instead of an #ifdef.
            - Make it possible to use other MMC slots than slot 0, and support
      	different MMC/SDCard data bus widths.
        - Use more reasonable pull-up defaults; floating pins may consume a
          lot of power.
        - Get rid of some custom portmux code from the mimc200 board code. The
          old gpio/portmux API couldn't really handle its requirements, but
          the new one can.
        - Add documentation.
      
      The end result is slightly smaller code for all boards. Which isn't
      really the point, but at least it isn't any larger.
      
      This has been verified on ATSTK1002 and ATNGW100. I'd appreciate if
      the board maintainers could help me test this on their boards. In
      particular, the mimc200 port has lost a lot of code, so I'm hoping Mark
      can help me out.
      
      Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
      Cc: Hans-Christian Egtvedt <hans-christian.egtvedt@atmel.com>
      Cc: Mark Jackson <mpfj@mimc.co.uk>
      Cc: Alex Raimondi <alex.raimondi@miromico.ch>
      Cc: Julien May <julien.may@miromico.ch>
      
      Changes since v1:
        * Enable pullup on NWAIT
        * Add missing include to portmux-pio.h
        * Rename CONFIG_PIO2 -> CONFIG_PORTMUX_PIO to match docs
      ab0df36f
  13. Aug 20, 2008
  14. Aug 06, 2008
Loading