Skip to content
  • 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