Skip to content
Snippets Groups Projects
  1. Mar 07, 2013
    • Jonathan Austin's avatar
      ARM: 7666/1: decompressor: add -mno-single-pic-base for building the decompressor · b8083f86
      Jonathan Austin authored
      
      Before jumping to (position independent) C-code from the decompressor's
      assembler world we set-up the C environment. This setup currently does not
      set r9, which for arm-none-uclinux-uclibceabi toolchains is by default
      expected to be the PIC offset base register (IE should point to the
      beginning of the GOT).
      
      Currently, therefore, in order to build working kernels that use the
      decompressor it is necessary to use an arm-linux-gnueabi toolchain, or
      similar. uClinux toolchains cause a prefetch abort to occur at the beginning
      of the decompress_kernel function.
      
      This patch allows uClinux toolchains to build bootable zImages by forcing
      the -mno-single-pic-base option, which ensures that the location of the GOT
      is re-derived each time it is required, and r9 becomes free for use as a
      general purpose register.
      
      This has a small (4% in instruction terms) advantage over the alternative of
      setting r9 to point to the GOT before calling into the C-world.
      
      Signed-off-by: default avatarJonathan Austin <jonathan.austin@arm.com>
      Acked-by: default avatarNicolas Pitre <nico@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      b8083f86
  2. Nov 21, 2012
  3. Oct 15, 2012
  4. Sep 19, 2012
    • Dave Martin's avatar
      ARM: zImage/virt: hyp mode entry support for the zImage loader · 424e5994
      Dave Martin authored
      
      The zImage loader needs to turn on the MMU in order to take
      advantage of caching while decompressing the zImage.  Running this
      in hyp mode would require the LPAE pagetable format to be
      supported; to avoid this complexity, this patch switches out of hyp
      mode, and returns back to hyp mode just before booting the kernel.
      
      This implementation assumes that the Hyp mode view of memory and the
      PL1 view of memory are coherent, providing that the MMU and caches
      are off in both, as required by the boot protocol.  The zImage
      decompression code must drain the write buffer on completion anyway, and
      entry into Hyp mode should flush any prefetch buffer, avoiding hazards
      associated with local write buffers and the pipeline.
      
      Signed-off-by: default avatarDave Martin <dave.martin@linaro.org>
      Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
      424e5994
  5. Mar 24, 2012
  6. Jan 03, 2012
  7. Oct 17, 2011
  8. Sep 14, 2011
  9. Jun 29, 2011
  10. May 07, 2011
  11. Mar 17, 2011
  12. Mar 09, 2011
  13. Feb 26, 2011
    • Nicolas Pitre's avatar
      ARM: 6746/1: remove the 4x expansion presumption while decompressing the kernel · d239b1dc
      Nicolas Pitre authored
      
      We currently presume a 4x expansion to guess the decompressed kernel size
      in order to determine if the decompressed kernel is in conflict with
      the location where zImage is loaded.  This guess may cause many issues
      by overestimating the final kernel image size:
      
      - This may force a needless relocation if the location of zImage was
        fine, wasting some precious microseconds of boot time.
      
      - The relocation may be located way too far, possibly overwriting the
        initrd image in RAM.
      
      - If the kernel image includes a large already-compressed initramfs image
        then the problem is even more exacerbated.
      
      And if by some strange means the 4x guess is too low then we may overwrite
      ourselves with the decompressed image.
      
      So let's use the exact decompressed kernel image size instead.  For that
      we need to rely on the stat command, but this is hardly a new build
      dependency as the kernel already depends on many external commands
      to be built provided by the coreutils package where stat is found.
      
      Signed-off-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      d239b1dc
  14. Jan 25, 2011
    • Alexey Charkov's avatar
      ARM: 6597/1: Add basic architecture support for VIA/WonderMedia 85xx SoC's · 21f47fbc
      Alexey Charkov authored
      
      This adds support for the family of Systems-on-Chip produced initially
      by VIA and now its subsidiary WonderMedia that have recently become
      widespread in lower-end Chinese ARM-based tablets and netbooks.
      
      Support is included for both VT8500 and WM8505, selectable by a
      configuration switch at kernel build time.
      
      Included are basic machine initialization files, register and
      interrupt definitions, support for the on-chip interrupt controller,
      high-precision OS timer, GPIO lines, necessary macros for early debug,
      pulse-width-modulated outputs control, as well as platform device
      configurations for the specific drivers implemented elsewhere.
      
      Signed-off-by: default avatarAlexey Charkov <alchark@gmail.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      21f47fbc
    • Simon Horman's avatar
      ARM: 6617/1: mmc, Add zboot from MMC support for SuperH Mobile ARM · f45b1149
      Simon Horman authored
      
      This allows a ROM-able zImage to be written to MMC and
      for SuperH Mobile ARM to boot directly from the MMCIF
      hardware block.
      
      This is achieved by the MaskROM loading the first portion
      of the image into MERAM and then jumping to it. This portion
      contains loader code which copies the entire image to SDRAM
      and jumps to it. From there the zImage boot code proceeds
      as normal, uncompressing the image into its final location
      and then jumping to it.
      
      Cc: Magnus Damm <magnus.damm@gmail.com>
      
      Russell, please consider merging this for 2.6.38.
      
      This patch depends on:
      * "mmc, sh: Move MMCIF_PROGRESS_* into sh_mmcif.h"
        which will be merged though Paul Mundt's rmobile sh-2.6.
        The absence of this patch will break the build if
        the (new) CONFIG_ZBOOT_ROM_MMCIF option is set.
        There are no subtle side-effects.
      
      v2:
      Addressed comments by Magnus Damm
      * Fix copyright in vrl4.c
      * Fix use of #define CONFIG_ZBOOT_ROM_MMCIF in mmcif-sh7372.c
      * Initialise LED GPIO lines in head-ap4evb.txt instead of mmcif-sh7372.c
        as this is considered board-specific.
      
      v3:
      Addressed comments made in person by Magnus Damm
      * Move mmcif_loader to be earlier in the image and
        reduce the number of blocks of boot program loaded by the MaskRom
        from 40 to 8 accordingly.
      * Move LED GPIO initialisation into mmcif_progress_init
        - This leaves the partner jet script unbloated
      Other
      * inline mmcif_update_progress so it is a static inline in a header file
      
      v4:
      * Use htole16() and htole32() in v4rl.c to ensure
        that the output is little endian
      
      v5:
      Addressed comments by Russell King
      * Simplify assembly code
      * Jump to code rather than an address <- bug fix
      * Use (void __iomem *) as appropriate
      Roll in mackerel support
      * This was previously a separate patch, only because of the order
        in which this code was developed
      Signed-off-by: default avatarSimon Horman <horms@verge.net.au>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      f45b1149
  15. Dec 05, 2010
  16. Sep 19, 2010
  17. Sep 09, 2010
  18. Aug 05, 2010
  19. Jul 29, 2010
  20. Jul 12, 2010
    • Eric Miao's avatar
      ARM: Auto calculate ZRELADDR and provide option for exceptions · e69edc79
      Eric Miao authored
      
      As long as the zImage is placed within the 128MB range from the start of
      memory, ZRELADDR (Address where the decompressed kernel will be placed,
      usually == PHYS_OFFSET + TEXT_OFFSET) can be determined at run-time by
      masking PC with 0xf80000000.
      
      Running through all the Makefile.boot, all those zreladdr-y
      addresses == 0x[0-f][08]00_0000 + TEXT_OFFSET can be determined at
      run-time.
      
      Option CONFIG_AUTO_ZRELADDR and CONFIG_ZRELADDR are introduced,
      CONFIG_ZRELADDR _must_ be explicitly specified if:
      
      - ((zreladdr-y - TEXT_OFFSET) & ~0xf8000000) != 0, which means
        masking PC with 0xf8000000 will result in an incorrect address.
        Currently this is only a problem on u300.
      
      - or the assumption of the zImage being loaded by the bootloader within
        the first 128MB of RAM is incorrect
      
      - or when ZBOOT_ROM is used, where the above assumption is usually wrong.
      
      [ukleinek: changed mask from 0xf0000000 to 0xf8000000 for mx1 and shark
      + some review fixes from the mailing list]
      
      Original-Idea-and-Signed-off-by: default avatarNicolas Pitre <nicolas.pitre@linaro.org>
      Signed-off-by: default avatarEric Miao <eric.miao@canonical.com>
      Signed-off-by: default avatarUwe Kleine-König <u.kleine-koenig@pengutronix.de>
      e69edc79
  21. Jul 07, 2010
  22. Jun 24, 2010
  23. Apr 14, 2010
  24. Feb 25, 2010
    • Russell King's avatar
      ARM: Eliminate decompressor -Dstatic= PIC hack · 5de813b6
      Russell King authored
      
      We used to build decompressors with -Dstatic= to avoid any local data
      being generated.  The problem is that local data generates GOTOFF
      relocations, which means we can't relocate the data relative to the
      text segment.
      
      Global data, on the other hand, goes through the GOT, and can be
      relocated anywhere.
      
      Unfortunately, with the new decompressors, this presents a problem
      since they declare static data within functions, and this leads to
      stack overflow.
      
      Fix this by separating out the decompressor code into a separate file,
      and removing 'static' from BSS data in misc.c.
      
      Also, discard the .data section - this means that should we end up
      with read/write initialized data, the decompressor will fail to link
      and the problem will be obvious.
      
      Acked-by: default avatarNicolas Pitre <nico@fluxnic.net>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      5de813b6
  25. Jan 11, 2010
  26. May 30, 2009
    • Catalin Marinas's avatar
      Add core support for ARMv6/v7 big-endian · 26584853
      Catalin Marinas authored
      
      Starting with ARMv6, the CPUs support the BE-8 variant of big-endian
      (byte-invariant). This patch adds the core support:
      
      - setting of the BE-8 mode via the CPSR.E register for both kernel and
        user threads
      - big-endian page table walking
      - REV used to rotate instructions read from memory during fault
        processing as they are still little-endian format
      - Kconfig and Makefile support for BE-8. The --be8 option must be passed
        to the final linking stage to convert the instructions to
        little-endian
      
      Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
      26584853
  27. Nov 27, 2008
  28. Oct 20, 2008
  29. Sep 09, 2008
  30. Aug 02, 2008
  31. Jun 02, 2008
  32. Jan 26, 2008
Loading