Commit aad16f32 authored by Barry Song's avatar Barry Song Committed by Mike Frysinger

Blackfin: fix initial stack pointer setup

During very early init, the stack pointer is given a slightly incorrect
value (&init_thread_union).  The value is later adjusted to the right one
during early init (&init_thread_union + THREAD_SIZE), but it is used a few
times in between.  While the few functions used don't actually put things
onto the stack (due to optimization), it's best if we simply use the right
value from the start.
Signed-off-by: default avatarBarry Song <barry.song@analog.com>
Signed-off-by: default avatarMike Frysinger <vapier@gentoo.org>
parent 8916a149
...@@ -144,8 +144,8 @@ ENTRY(__start) ...@@ -144,8 +144,8 @@ ENTRY(__start)
#endif #endif
/* Initialize stack pointer */ /* Initialize stack pointer */
sp.l = _init_thread_union; sp.l = _init_thread_union + THREAD_SIZE;
sp.h = _init_thread_union; sp.h = _init_thread_union + THREAD_SIZE;
fp = sp; fp = sp;
usp = sp; usp = sp;
...@@ -257,12 +257,7 @@ ENTRY(_real_start) ...@@ -257,12 +257,7 @@ ENTRY(_real_start)
R0 = R7; R0 = R7;
call _cmdline_init; call _cmdline_init;
/* Load the current thread pointer and stack */ sp += -12 + 4; /* +4 is for reti loading above */
p1 = THREAD_SIZE + 4 (z); /* +4 is for reti loading */
sp = sp + p1;
usp = sp;
fp = sp;
sp += -12;
call _init_pda call _init_pda
sp += 12; sp += 12;
jump.l _start_kernel; jump.l _start_kernel;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment