diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2007-07-24 18:17:33 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-07-24 18:17:33 -0400 |
commit | 1966287dfa07b2aa125009587a5d2b8375775c53 (patch) | |
tree | 16103b9f77c78a49d36a691ac50ab96310cf8d43 | |
parent | f61698e6489f229f9fcfe29e68f228389a772993 (diff) |
[SPARC64]: Mark most of initial bootup asm as .text.init.ref_ok
We can't mark the whole thing init because there are dependencies
in bootloaders that assume that _start, or whatever the image
entry value, is 2 instructions before the "HdrS" signature.
In fact, TILO assumes this entry is always at 0x4000, yikes!
Also, right after the bootloader info area there are OBP strings and
values that get used later in the boot process, and those are not all
provably .init yet.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | arch/sparc64/kernel/head.S | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S index 35feacb6b8ec..9dbd833d79d6 100644 --- a/arch/sparc64/kernel/head.S +++ b/arch/sparc64/kernel/head.S | |||
@@ -1,15 +1,15 @@ | |||
1 | /* $Id: head.S,v 1.87 2002/02/09 19:49:31 davem Exp $ | 1 | /* head.S: Initial boot code for the Sparc64 port of Linux. |
2 | * head.S: Initial boot code for the Sparc64 port of Linux. | ||
3 | * | 2 | * |
4 | * Copyright (C) 1996,1997 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1996, 1997, 2007 David S. Miller (davem@davemloft.net) |
5 | * Copyright (C) 1996 David Sitsky (David.Sitsky@anu.edu.au) | 4 | * Copyright (C) 1996 David Sitsky (David.Sitsky@anu.edu.au) |
6 | * Copyright (C) 1997,1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) | 5 | * Copyright (C) 1997, 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) |
7 | * Copyright (C) 1997 Miguel de Icaza (miguel@nuclecu.unam.mx) | 6 | * Copyright (C) 1997 Miguel de Icaza (miguel@nuclecu.unam.mx) |
8 | */ | 7 | */ |
9 | 8 | ||
10 | #include <linux/version.h> | 9 | #include <linux/version.h> |
11 | #include <linux/errno.h> | 10 | #include <linux/errno.h> |
12 | #include <linux/threads.h> | 11 | #include <linux/threads.h> |
12 | #include <linux/init.h> | ||
13 | #include <asm/thread_info.h> | 13 | #include <asm/thread_info.h> |
14 | #include <asm/asi.h> | 14 | #include <asm/asi.h> |
15 | #include <asm/pstate.h> | 15 | #include <asm/pstate.h> |
@@ -374,6 +374,7 @@ jump_to_sun4u_init: | |||
374 | jmpl %g2 + %g0, %g0 | 374 | jmpl %g2 + %g0, %g0 |
375 | nop | 375 | nop |
376 | 376 | ||
377 | .section .text.init.refok | ||
377 | sun4u_init: | 378 | sun4u_init: |
378 | BRANCH_IF_SUN4V(g1, sun4v_init) | 379 | BRANCH_IF_SUN4V(g1, sun4v_init) |
379 | 380 | ||
@@ -529,6 +530,8 @@ tlb_fixup_done: | |||
529 | nop | 530 | nop |
530 | /* Not reached... */ | 531 | /* Not reached... */ |
531 | 532 | ||
533 | .previous | ||
534 | |||
532 | /* This is meant to allow the sharing of this code between | 535 | /* This is meant to allow the sharing of this code between |
533 | * boot processor invocation (via setup_tba() below) and | 536 | * boot processor invocation (via setup_tba() below) and |
534 | * secondary processor startup (via trampoline.S). The | 537 | * secondary processor startup (via trampoline.S). The |