On ARM v7M, the processor will return to ARM mode when executing
a blx instruction with bit 0 of the address == 0. Always set it
to 1 to stay in thumb mode.

Signed-off-by: Matt Porter <mpor...@konsulko.com>
---
 common/cmd_boot.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/common/cmd_boot.c b/common/cmd_boot.c
index 8f2e070..20ce652 100644
--- a/common/cmd_boot.c
+++ b/common/cmd_boot.c
@@ -38,6 +38,10 @@ static int do_go(cmd_tbl_t *cmdtp, int flag, int argc, char 
* const argv[])
         * pass address parameter as argv[0] (aka command name),
         * and all remaining args
         */
+#ifdef CONFIG_CPU_V7M
+       /* For ARM V7M, set bit zero to stay in Thumb mode */
+       addr++;
+#endif
        rc = do_go_exec ((void *)addr, argc - 1, argv + 1);
        if (rc != 0) rcode = 1;
 
-- 
2.1.0

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to