summaryrefslogtreecommitdiffstats
path: root/arch/arm/lib
Commit message (Collapse)AuthorAgeFilesLines
* ARM: Add PSCI supportSascha Hauer2017-02-132-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch contains the barebox implementation for the ARM "Power State Coordination Interface" (PSCI). The interface is aimed at the generalization of code in the following power management scenarios: * Core idle management. * Dynamic addition and removal of cores, and secondary core boot. * big.LITTLE migration. * System shutdown and reset. In practice, all that's currently implemented is a way to enable the secondary core one some SoCs. With PSCI the Kernel is either started in nonsecure or in Hypervisor mode and PSCI is used to apply power to the secondary cores. The start mode is passed in the global.bootm.secure_state variable. This enum can contain "secure" (Kernel is started in secure mode, means no PSCI), "nonsecure" (Kernel is started in nonsecure mode, PSCI available) or "hyp" (Kernel is started in hyp mode, meaning it can support virtualization). We currently only support putting the secure monitor code into SDRAM, which means we always steal some amount of memory from the Kernel. To keep things simple for now we simply keep the whole barebox binary in memory The PSCI support has been tested on i.MX7 only so far. The only supported operations are CPU_ON and CPU_OFF. The PSCI and secure monitor code is based on the corresponding U-Boot code. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: Fix appended device tree when CONFIG_OFTREE is enabledSascha Hauer2016-11-081-2/+10
| | | | | | | | | When CONFIG_OFTREE is enabled the appended device tree is unflattened and put into data->of_root_node, but there it is never used again. To actually use the appended device tree put it into data->oftree instead. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: Fix free_mem calculation when initrd is givenSascha Hauer2016-10-181-1/+1
| | | | | | | | | | | | | | When a initrd is given we calculate the next free memory position as: free_mem = PAGE_ALIGN(initrd_end); This is wrong when initrd_end exactly falls on a page boundary. In this case PAGE_ALIGN() does nothing and free_mem becomes initrd_end and the following bootm_load_devicetree() and thus booting fails with -ENOMEM. Fix this by correctly advancing to the next free memory position. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* of_unflatten_dtb(): Check return value with IS_ERRAndrey Smirnov2016-09-051-1/+1
| | | | | | | | Of_unflatten_dtb returns a ERR_PTR value so checking it against NULL is incorrect. Fix it in all of the places where this was happening. Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* include: Move bulk of boot.h to bootm.hSascha Hauer2016-07-261-0/+1
| | | | | | | | The majority of the stuff currently in include/boot.h is about bootm code implemented common/bootm.c. To be more consistent move it to a new file include/bootm.h. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* arm: rework lib directory to support arm64Raphael Poggi2016-07-0626-3162/+0
| | | | | | | | | | | This commit create a common directory, lib/, for arm and arm64 common code. It also create lib32/ and lib64/ for 32bit and 64bit code respectively. Signed-off-by: Raphael Poggi <poggi.raph@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: Fix compiler warningSascha Hauer2016-07-051-1/+1
| | | | | | | | fixes: arch/arm/lib/bootm.c:92:137: warning: comparison of distinct pointer types lacks a cast Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: recalculate decompression spaceStefan Müller-Klieser2016-07-041-3/+15
| | | | | | | | | | | | | | | | According to the kernel documentation it is recommended to place the compressed image between 32 MiB and 128 MiB. The DTB and initrd should be placed above 128 MiB. We will follow the recommendation as long as we have enough RAM. If this is not the case, we fall back to the scheme. This change is required because of the ARM default kernel config changes regarding RODATA layout, which lead to an increased compression factor of the kernel image. This should be regarded as an intermediate solution until there is a mechanism for the kernel image to report the decompressed layout requirements to the bootloader. Signed-off-by: Stefan Müller-Klieser <s.mueller-klieser@phytec.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* bootm: Move bootm options to common/KconfigSascha Hauer2016-05-101-2/+2
| | | | | | | | | | | | bootm has a C API, so the bootm options have to depend on the option providing the bootm code (CONFIG_BOOTM), not on the option providing the command (CONFIG_CMD_BOOTM). Fixing the dependencies makes it possible to fully use bootm from C without enabling the bootm command support. This also removes the CMD_ prefix from the options which means we have to update the defconfigs aswell. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: Bootm: FIT image handler depends on CONFIG_FITIMAGESascha Hauer2016-04-251-1/+1
| | | | | | | | CONFIG_FITIMAGE is the variable to depend on, not CONFIG_CMD_BOOTM_FITIMAGE which is only a wrapper option to let CONFIG_FITIMAGE select from the bootm Kconfig menu. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: Move mem_free calculation into get_kernel_addresses()Sascha Hauer2016-04-201-11/+10
| | | | | | | | | The callers of get_kernel_addresses() are not interested in the spacing after the kernel image, they are interested in the place where they can put device tree and initrd, so pass a pointer to mem_free to get_kernel_addresses(). Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: Let get_kernel_addresses() determine SDRAM region itselfSascha Hauer2016-04-201-14/+20
| | | | | | | Move the call to sdram_start_and_size() into get_kernel_addresses() and remove the now unnecessary parameter mem_start. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: Rework vector table setupSascha Hauer2016-04-011-0/+1
| | | | | | | | | | | | | | | | | | | The current vector table setup has some shortcomings. First of all currently the case when the high vectors are inside SDRAM (that is, SDRAM reaches the end of the address space) is not supported. In this case we create a secondary page table for the section containing the vectors which gets overwritten by the general SDRAM secondary page table entries creation afterwards. On ARMv7 and later the exception table setup can be improved: Here the vector table address is configurable in the VBAR register. We can use this register to skip remapping the vector table. With this patch we first try to use the VBAR register before doing something else. Also, when we have to use the high vectors we first try a request_sdram_region to test if the vector table memory is already mapped. While at it sprinkle some comments into the code. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* arm: bootm: be more clever about kernel spacingLucas Stach2016-03-011-0/+8
| | | | | | | | | | When the kernel load address is chosen by the user/image we need to check if the kernel needs to relocate itself before decompression. If that's the case the spacing behind the kernel must allow for this relocation without overwriting anything placed behind the kernel. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* arm: bootm: unify kernel load address calculationLucas Stach2016-03-011-37/+37
| | | | | | | | | Instead of having the same logic for uImage and zImage types duplicated in the code, split it out into a separate function. This does not change the behavior of the calculation. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* bootm: add initial FIT supportJan Luebbe2016-01-261-0/+8
| | | | | | | | | | | | | | | This implementation is inspired by U-Boot's FIT support. Instead of using libfdt (which does not exist in barebox), configuration signatures are verified by using a simplified DT parser based on barebox's own code. Currently, only signed configurations with hashed images are supported, as the other variants are less useful for verified boot. Compatible FIT images can be created using U-Boot's mkimage tool. Signed-off-by: Jan Luebbe <jlu@pengutronix.de> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* bootm: move initrd code togetherSascha Hauer2016-01-261-3/+5
| | | | | | | The initrd code is distributed in several places in the bootm code. Move it all together in bootm_load_initrd(). Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* bootm: Push dryrun to handlersSascha Hauer2016-01-261-0/+3
| | | | | | | We can make the dryrun option more useful by calling into the handlers. With this we can detect more cases that can go wrong during boot. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: Use kernel handler to start barebox imageSascha Hauer2016-01-221-29/+1
| | | | | | | | barebox can be called with the kernel calling convention, so we can reuse the handler instead of creating a barebox specific handler. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* bootm: introduce bootm_get_os_sizeSascha Hauer2016-01-221-1/+1
| | | | | | | | ARM do_bootm_linux is not only called with uImages but also with raw images, so we can't use uimage_get_size() here. Introduce bootm_get_os_size() which handles the different image types. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: zImage: add missing free() in appended device tree codeSascha Hauer2016-01-221-0/+1
| | | | | | oftree must be freed when the tree is successfully unflattened. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: Remove kernel booting call for thumb2 modeTrent Piepho2015-12-041-12/+0
| | | | | | | | | | | | | | | | | | | | | | | The asm code to do the actual call into the kernel (or another barebox) when compiled in thumb2 mode isn't necessary. gcc generates a perfectly good calling sequence from a normal function pointer call. If it didn't, the code in bootstrap_boot() that uses a function pointer to jump to the 2nd stage barebox from an xloader wouldn't work. It appears to be allowed that the call to kernel() could return, as neither start_linux() nor kernel() are marked noreturn, and there is code after calls to start_linux(). The asm code has a bug in this case, as it uses bx and not blx, and thus doesn't set the link register. Since it's a tail call, this would be okay, but only if the LR value from the start of start_linux() (and the callee-saved registers) are restored beforehand, which isn't done. The gcc generated call sequence will do this. Signed-off-by: Trent Piepho <tpiepho@kymetacorp.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: don't let the unwinder depend on exception handlingUwe Kleine-König2015-11-091-0/+5
| | | | | | | | | | To be able to use dump_stack() without support exception handling the definition of dump_stack has to move to a file that is actually compiled without ARM_EXCEPTIONS. Fixes: d332597c7c16 ("ARM: make exception handling optional") Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: Add support for semihostingAndrey Smirnov2015-10-303-0/+256
| | | | | | | | | | Add semihosting API implementation and implement a filesystem driver to access debugging host filesystem using it. Tested on Freescale SabreSD board (i.MX6Q) using OpenOCD Signed-off-by: Andrey Smirnov <andrew.smirnov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* restart: replace reset_cpu with registered restart handlersSascha Hauer2015-08-271-3/+4
| | | | | | | | | | | | | | | | | | | | | | This replaces the reset_cpu() function which every SoC or board must provide with registered handlers. This makes it possible to have multiple reset functions for boards which have multiple ways to reset the machine. Also boards which have no way at all to reset the machine no longer have to provide a dummy reset_cpu() function. The problem this solves is that some machines have external PMICs or similar to reset the system which have to be preferred over the internal SoC reset, because the PMIC can reset not only the SoC but also the external devices. To pick the right way to reset a machine each handler has a priority. The default priority is 100 and all currently existing restart handlers are registered with this priority. of_get_restart_priority() allows to retrieve the priority from the device tree which makes it possible for boards to give certain restart handlers a higher priority in order to use this one instead of the default one. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* exitcall: Add exitcall infrastructureHerve Codina2015-07-131-0/+4
| | | | | | | | exitcall infrastructure is based on initcall infrastructure. It allows to have and use exit call hooks on barebox shutdown. Signed-off-by: Herve Codina <Herve.CODINA@celad.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/misc'Sascha Hauer2015-01-093-3/+3
|\
| * sizes.h: move include/sizes.h to include/linux/sizes.hMasahiro Yamada2015-01-083-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This file originates in Linux. Linux has it under include/linux/ directory since commit dccd2304cc90. Let's move it to the same place as well in barebox. This commit was generated by the following commands: find -name '*.[chS]' | xargs sed -i -e 's:<sizes.h>:<linux/sizes.h>:' git mv include/sizes.h include/linux/ Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | kbuild: move asm-offsets.h rule to ./KbuildMasahiro Yamada2015-01-081-0/+16
|/ | | | | | | | | | | | | | | Currently, MIPS is the only architecture that needs include/generated/asm-offsets.h, but we have got ./Kbuild file now. It is a good reason to move asm-offsets.h rule from arch/mips/Makefile to ./Kbuild and add dummy asm-offsets.c for the other architectures. asm-offsets.h would be useful for all the architectures. This commit does not implement include/generated/bounds.h, but if necessary, it is easy to implement it. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/metadata'Sascha Hauer2014-08-073-0/+5
|\ | | | | | | | | | | | | Conflicts: arch/arm/dts/Makefile common/Makefile lib/Makefile
| * Add support for metadata in barebox imagesSascha Hauer2014-08-072-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It's often useful to get some information about a barebox image before starting or flashing it. This patch introduces barebox Image MetaData (IMD). When enabled a barebox image will contain a list of tags containing the desired information. We have tags for: - the barebox release (2014.07.0-00160-g035de50-dirty) - the build timestamp (#741 Mon Jul 28 15:08:54 CEST 2014) - the board model the image is intended for - the device tree toplevel compatible property Also there is an additional generic key-value store which stores parameters for which no dedicated tag exists. In this patch it is used for the memory size an image supports. Since there is no fixed offset in a barebox image which can be used for storing the information, the metadata is stored somewhere in the image and found by iterating over the image. This works for most image types, but obviously not for SoC images which are encoded or encrypted in some way. There is a 'imd' tool compiled from the same sources for barebox, for the compile host and for the target, so the metadata information is available whereever needed. For device tree boards the model and of_compatible tags are automatically generated. Example output of the imd tool for a Phytec phyFLEX image: build: #889 Wed Jul 30 16:08:54 CEST 2014 release: 2014.07.0-00167-g6b2070d-dirty parameter: memsize=1024 of_compatible: phytec,imx6x-pbab01 phytec,imx6dl-pfla02 fsl,imx6dl model: Phytec phyFLEX-i.MX6 Duallite Carrier-Board Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
| * move file helper functions to separate fileSascha Hauer2014-08-071-0/+1
| | | | | | | | | | | | | | | | | | | | We have our file helper functions in several places. Move them all to lib/libfile.c. With this we no longer have file helpers in fs/fs.c which contains the core fs functions and no functions in lib/libbb.c which are not from busybox. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | Merge branch 'for-next/arm'Sascha Hauer2014-08-071-2/+16
|\ \ | |/ |/|
| * ARM: Android image boot: automatically assign space for kernelSascha Hauer2014-07-211-2/+16
| | | | | | | | | | | | | | | | | | | | | | | | The Android image format makes the same mistake as the U-Boot uImage format: It makes the load address mandatory. In a way it is even worse since the 'fastboot' host tool thinks that 0x10000000 is a good default when no address has been specified on the command line. Instead of only relying on the Kernel load address in the image try to automatically find a good base address when requesting the addresses from the image failed. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | arch/arm/lib/bootm: fix length check of kernel imagebasti@linux-source.de2014-07-221-1/+1
|/ | | | | Signed-off-by: Sebastian Block <basti@linux-source.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* treewide: remove address of the Free Software FoundationAntony Pavlov2014-06-111-5/+0
| | | | | | | | | | | | | | | | | | The FSF address has changed; The FSF site says that address is Free Software Foundation 51 Franklin Street, Fifth Floor Boston, MA 02110-1301 USA (see http://www.fsf.org/about/contact/) Instead of updating it each time the address changes, just drop it completely treewide. Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* bootm: beautify outputHolger Schurig2014-06-021-1/+1
| | | | | | | | | * fix indentation of options in 'help bootm' * add missing help for -m * put some output into debug/verbose mode Signed-off-by: Holger Schurig <holgerschurig@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* misc: upper-case some abbreviationsHolger Schurig2014-06-021-2/+2
| | | | | Signed-off-by: Holger Schurig <holgerschurig@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* of: Drop devicetree merge supportSascha Hauer2014-05-221-1/+1
| | | | | | | | | | | | I assume I am the only person knowing that barebox is able to merge devicetrees. This feature seems broken for a while now since trying to merge devicetress results in: unflatten: too many end nodes Remove this feature to save the complexity. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* commands: harmonize in-barebox documentationHolger Schurig2014-05-142-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch does probably too much, but it's hard (and very cumbersome/time consuming) to break it out. What is does is this: * each command has one short description, e.g. "list MUX configuration" * made sure the short descriptions start lowercase * each command has one usage. That string contains just the options, e.g. "[-npn]". It's not part of the long help text. * that is, it doesn't say "[OPTIONS]" anymore, every usable option is listed by character in this (short) option string (the long description is in the long help text, as before) * help texts have been reworked, to make them - sometimes smaller - sometimes describe the options better - more often present themselves in a nicer format * all long help texts are now created with BUSYBOX_CMD_HELP_ macros, no more 'static const __maybe_unused char cmd_foobar_help[]' * made sure the long help texts starts uppercase * because cmdtp->name and cmdtp->opts together provide the new usage, all "Usage: foobar" texts have been removed from the long help texts * BUSYBOX_CMD_HELP_TEXT() provides the trailing newline by itself, this is nicer in the source code * BUSYBOX_CMD_HELP_OPT() provides the trailing newline by itself * made sure no line gets longer than 77 characters * delibertely renamed cmdtp->usage, so that we can get compile-time errors (e.g. in out-of-tree modules that use register_command() * the 'help' command can now always emit the usage, even without compiled long help texts * 'help -v' gives a list of commands with their short description, this is similar like the old "help" command before my patchset * 'help -a' gives out help of all commands Signed-off-by: Holger Schurig <holgerschurig@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* commands: group 'help' outputHolger Schurig2014-05-142-0/+2
| | | | | | | | | | | | | | | | | | | The old output of "help" was just producing a long list, that usually scrolled of the screen (even on a X11 terminal). This list is more compact, and also sorted by groups. The old output format (plus grouping) is now available with 'help -v'. Example: Information commands: ?, devinfo, help, iomem, meminfo, version Boot commands: boot, bootm, go, loadb, loads, loadx, loady, saves, uimage ... Signed-off-by: Holger Schurig <holgerschurig@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: fix default uImage placementLucas Stach2014-05-051-7/+10
| | | | | | | | | | | | | For small systems we would put the zImage at 32KiB after the start of memory, and put the DT a bit after the uImage. The kernel will always try to relocate itself and overwrite the DT. Try to be more clever at uImage placement to avoid triggering the kernel relocation. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* ARM: bootm: be more clever while deciding where to put zImageLucas Stach2014-05-051-28/+29
| | | | | | | | | | | | | | For small systems we would put the zImage at 8MiB after the start of memory, and put the DT a bit after the zImage. When we encounter an image which is bigger than 8MiB uncompressed, the kernel would try to relocate itself and overwrite the DT. Try to be more clever at zImage placement to avoid triggering the kernel relocation. Signed-off-by: Lucas Stach <l.stach@pengutronix.de> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Load PBL into SRAMDavid Vincent2014-02-091-0/+1
| | | | | | | | | | This allows to load all the lowlevel init code, including the uncompressor, inside SRAM and not just the bare init part. This is useful when pbl is used as a first-stage bootloader but is loaded by an external firmware. Signed-off-by: David Vincent <freesilicon@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* Merge branch 'for-next/imx'Sascha Hauer2014-02-031-8/+9
|\ | | | | | | | | Conflicts: arch/arm/boards/dmo-mx6-realq7/lowlevel.c
| * ARM: Fix image size calculation for CONFIG_PBL_RELOCATABLESascha Hauer2014-01-231-8/+9
| | | | | | | | | | | | TEXT_BASE - SZ_2M is only used for non relocable pbl images. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | ARM: bootm: pass free memory to __do_bootm_linuxSascha Hauer2014-01-221-17/+41
| | | | | | | | | | | | | | | | | | | | | | | | | | This improves the initrd/devicetree placement in the bootm code. We used to put the initrd at the start of the kernel + 8MiB. This of course fails once the kernel gets bigger than 8MiB. Also the place for the devicetree was allocated using malloc(). This can lead to the problem that the devicetree is outside of the kernels lowmem and thus not reachable for the kernel. With this patch __do_bootm_linux gets a pointer to free space where the devicetree and the initrd can be safely put. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | ARM: bootm: locate zImage higher into RAMSascha Hauer2014-01-221-8/+64
| | | | | | | | | | | | | | | | | | | | The zImage should be placed where it won't be overwritten by the uncompressed image, otherwise the kernel decompressing code has to relocate the zImage before decompression. As Kernels tend to become bigger put it into 32MiB into RAM if we have enough RAM available. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | bootm: introduce bootm_load_initrd helperSascha Hauer2014-01-141-11/+5
| | | | | | | | | | | | | | Make the bootm handlers simpler by factoring out an initrd load function. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
* | ARM: bootm: move os loading to do_bootm_linuxSascha Hauer2014-01-101-18/+19
| | | | | | | | | | | | | | | | | | | | __do_bootm_linux is called from the uImage, zImage and raw handlers. In case of the zImage handler the kernel will already be loaded and the kernel load code in __do_bootm_linux will do nothing. Move the loading code to do_bootm_linux so that __do_bootm_linux will always be called with the kernel already loaded. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>