]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
Blackfin: fix initial stack pointer setup
authorBarry Song <barry.song@analog.com>
Tue, 5 Jan 2010 07:25:24 +0000 (07:25 +0000)
committerMike Frysinger <vapier@gentoo.org>
Tue, 9 Mar 2010 05:30:48 +0000 (00:30 -0500)
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: Barry Song <barry.song@analog.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
arch/blackfin/mach-common/head.S

index cab0a0031eee9b0ed13fc682c0186d13c578d622..cf037782c8ad8198f978b584f5f11d7cd1272d53 100644 (file)
@@ -144,8 +144,8 @@ ENTRY(__start)
 #endif
 
        /* Initialize stack pointer */
-       sp.l = _init_thread_union;
-       sp.h = _init_thread_union;
+       sp.l = _init_thread_union + THREAD_SIZE;
+       sp.h = _init_thread_union + THREAD_SIZE;
        fp = sp;
        usp = sp;
 
@@ -257,12 +257,7 @@ ENTRY(_real_start)
        R0 = R7;
        call _cmdline_init;
 
-       /* Load the current thread pointer and stack */
-       p1 = THREAD_SIZE + 4 (z);       /* +4 is for reti loading */
-       sp = sp + p1;
-       usp = sp;
-       fp = sp;
-       sp += -12;
+       sp += -12 + 4; /* +4 is for reti loading above */
        call _init_pda
        sp += 12;
        jump.l _start_kernel;