X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=arch%2Farm%2Finclude%2Fasm%2Fsetjmp.h;h=f7b97efc59d6284281a5ecc2ff19489817395757;hb=ef36d9ae1646e5aee7c1425ee507d275699a072e;hp=b8b85b79dd41f2673dc744c740be950f9a6c5142;hpb=97d44b1f5c328af97d3c381c77858c8dd32c8e20;p=oweals%2Fu-boot.git diff --git a/arch/arm/include/asm/setjmp.h b/arch/arm/include/asm/setjmp.h index b8b85b79dd..f7b97efc59 100644 --- a/arch/arm/include/asm/setjmp.h +++ b/arch/arm/include/asm/setjmp.h @@ -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" :