summaryrefslogtreecommitdiffstats
path: root/include/configs/sunxi-common.h
diff options
context:
space:
mode:
authorSiarhei Siamashka <siarhei.siamashka@gmail.com>2016-05-14 04:13:26 +0300
committerHans de Goede <hdegoede@redhat.com>2016-05-25 17:52:39 +0200
commitb19236fd1c1ef289bab9e243ee5b50d658fcac3f (patch)
tree5857c12cfe8024b57b5b026f799a1ca1a645ee1a /include/configs/sunxi-common.h
parent795857df413aea278af95305d4b6ffc48089d6e8 (diff)
downloadblackbird-obmc-uboot-b19236fd1c1ef289bab9e243ee5b50d658fcac3f.tar.gz
blackbird-obmc-uboot-b19236fd1c1ef289bab9e243ee5b50d658fcac3f.zip
sunxi: Increase SPL header size to 64 bytes to avoid code corruption
The current SPL header, created by the 'mksunxiboot' tool, has size 32 bytes. But the code in the boot ROM stores the information about the boot media at the offset 0x28 before passing control to the SPL. For example, when booting from the SD card, the magic number written by the boot ROM is 0. And when booting from the SPI flash, the magic number is 3. NAND and eMMC probably have their own special magic numbers too. Currently the corrupted byte is a part of one of the instructions in the reset vectors table: b reset ldr pc, _undefined_instruction ldr pc, _software_interrupt <- Corruption happens here ldr pc, _prefetch_abort ldr pc, _data_abort ldr pc, _not_used ldr pc, _irq ldr pc, _fiq In practice this does not cause any visible problems, but it's still better to fix it. As a bonus, the reported boot media type can be later used in the 'spl_boot_device' function, but this is out of the scope of this patch. Signed-off-by: Siarhei Siamashka <siarhei.siamashka@gmail.com> Reviewed-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Diffstat (limited to 'include/configs/sunxi-common.h')
-rw-r--r--include/configs/sunxi-common.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
index ac2d93114b..12b39589d6 100644
--- a/include/configs/sunxi-common.h
+++ b/include/configs/sunxi-common.h
@@ -189,14 +189,14 @@
#define CONFIG_SPL_BOARD_LOAD_IMAGE
#if defined(CONFIG_MACH_SUN9I)
-#define CONFIG_SPL_TEXT_BASE 0x10020 /* sram start+header */
-#define CONFIG_SPL_MAX_SIZE 0x5fe0 /* ? KiB on sun9i */
+#define CONFIG_SPL_TEXT_BASE 0x10040 /* sram start+header */
+#define CONFIG_SPL_MAX_SIZE 0x5fc0 /* ? KiB on sun9i */
#elif defined(CONFIG_MACH_SUN50I)
-#define CONFIG_SPL_TEXT_BASE 0x10020 /* sram start+header */
-#define CONFIG_SPL_MAX_SIZE 0x7fe0 /* 32 KiB on sun50i */
+#define CONFIG_SPL_TEXT_BASE 0x10040 /* sram start+header */
+#define CONFIG_SPL_MAX_SIZE 0x7fc0 /* 32 KiB on sun50i */
#else
-#define CONFIG_SPL_TEXT_BASE 0x20 /* sram start+header */
-#define CONFIG_SPL_MAX_SIZE 0x5fe0 /* 24KB on sun4i/sun7i */
+#define CONFIG_SPL_TEXT_BASE 0x40 /* sram start+header */
+#define CONFIG_SPL_MAX_SIZE 0x5fc0 /* 24KB on sun4i/sun7i */
#endif
#define CONFIG_SPL_LIBDISK_SUPPORT
OpenPOWER on IntegriCloud