mirror of
https://github.com/u-boot/u-boot.git
synced 2025-01-10 21:03:49 +08:00
arm: Fix setjmp (again)
Commit e677724
(arm: Fix setjmp) added code to fix compilation of the setjmp
code path with thumv1. Unfortunately it missed a constraint that the adr
instruction can only refer to 4 byte aligned offsets.
So this patch adds the required alignment hooks to make compilation
work again even when setjmp doesn't happen to be 4 byte aligned.
Signed-off-by: Alexander Graf <agraf@suse.de>
Tested-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
parent
59d07ee08e
commit
0de02de768
@ -43,6 +43,7 @@ static inline int setjmp(jmp_buf jmp)
|
|||||||
#else
|
#else
|
||||||
asm volatile(
|
asm volatile(
|
||||||
#ifdef CONFIG_SYS_THUMB_BUILD
|
#ifdef CONFIG_SYS_THUMB_BUILD
|
||||||
|
".align 2\n"
|
||||||
"adr r0, jmp_target\n"
|
"adr r0, jmp_target\n"
|
||||||
"add r0, r0, $1\n"
|
"add r0, r0, $1\n"
|
||||||
#else
|
#else
|
||||||
@ -52,7 +53,8 @@ static inline int setjmp(jmp_buf jmp)
|
|||||||
"mov r2, sp\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"
|
"b 2f\n"
|
||||||
"jmp_target: "
|
".align 2\n"
|
||||||
|
"jmp_target: \n"
|
||||||
"mov %0, #1\n"
|
"mov %0, #1\n"
|
||||||
"2:\n"
|
"2:\n"
|
||||||
: "+l" (r)
|
: "+l" (r)
|
||||||
|
Loading…
Reference in New Issue
Block a user