sunxi: Use BROM stored boot_media value to determine our boot-source
[oweals/u-boot.git] / arch / arm / include / asm / setjmp.h
index b8b85b79dd41f2673dc744c740be950f9a6c5142..f7b97efc59d6284281a5ecc2ff19489817395757 100644 (file)
@@ -43,15 +43,18 @@ static inline int setjmp(jmp_buf jmp)
 #else
        asm volatile(
 #ifdef CONFIG_SYS_THUMB_BUILD
-               "adr r0, jmp_target + 1\n"
+               ".align 2\n"
+               "adr r0, jmp_target\n"
+               "add r0, r0, $1\n"
 #else
                "adr r0, jmp_target\n"
 #endif
                "mov r1, %1\n"
                "mov r2, sp\n"
-               "stm r1, {r0, r2, r4, r5, r6, r7}\n"
+               "stm r1!, {r0, r2, r4, r5, r6, r7}\n"
                "b 2f\n"
-               "jmp_target: "
+               ".align 2\n"
+               "jmp_target: \n"
                "mov %0, #1\n"
                "2:\n"
                : "+l" (r)
@@ -61,8 +64,6 @@ static inline int setjmp(jmp_buf jmp)
                  "cc", "memory");
 #endif
 
-printf("%s:%d target=%#lx\n", __func__, __LINE__, jmp->target);
-
        return r;
 }
 
@@ -84,7 +85,7 @@ static inline __noreturn void longjmp(jmp_buf jmp)
 #else
        asm volatile(
                "mov r1, %0\n"
-               "ldm r1, {r0, r2, r4, r5, r6, r7}\n"
+               "ldm r1!, {r0, r2, r4, r5, r6, r7}\n"
                "mov sp, r2\n"
                "bx r0\n"
                :