diff options
author | Ralf Baechle <ralf@linux-mips.org> | 1997-09-12 01:29:55 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 1997-09-12 01:29:55 +0000 |
commit | 545f435ebcfd94a1e7c20b46efe81b4d6ac4e698 (patch) | |
tree | e9ce4bc598d06374bda906f18365984bf22a526a /arch/sparc64/kernel/head.S | |
parent | 4291a610eef89d0d5c69d9a10ee6560e1aa36c74 (diff) |
Merge with Linux 2.1.55. More bugfixes and goodies from my private
CVS archive.
Diffstat (limited to 'arch/sparc64/kernel/head.S')
-rw-r--r-- | arch/sparc64/kernel/head.S | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/arch/sparc64/kernel/head.S b/arch/sparc64/kernel/head.S index 0ed975aff..43f950b25 100644 --- a/arch/sparc64/kernel/head.S +++ b/arch/sparc64/kernel/head.S @@ -1,4 +1,4 @@ -/* $Id: head.S,v 1.43 1997/07/07 03:05:25 davem Exp $ +/* $Id: head.S,v 1.46 1997/08/08 08:33:30 jj Exp $ * head.S: Initial boot code for the Sparc64 port of Linux. * * Copyright (C) 1996,1997 David S. Miller (davem@caip.rutgers.edu) @@ -21,6 +21,7 @@ #include <asm/processor.h> #include <asm/lsu.h> #include <asm/head.h> +#include <asm/ttable.h> /* This section from from _start to sparc64_boot_end should fit into * 0x0000.0000.0040.4000 to 0x0000.0000.0040.8000 and will be sharing space @@ -89,6 +90,28 @@ sparc64_boot: */ wrpr %g0, (PSTATE_PRIV|PSTATE_PEF|PSTATE_IE), %pstate +#ifdef __SMP__ + /* Ugly but necessary... */ + sethi %hi(KERNBASE), %g7 + sethi %hi(sparc64_cpu_startup), %g5 + or %g5, %lo(sparc64_cpu_startup), %g5 + sub %g5, %g7, %g5 + sethi %hi(sparc64_cpu_startup_end), %g6 + or %g6, %lo(sparc64_cpu_startup_end), %g6 + sub %g6, %g7, %g6 + sethi %hi(smp_trampoline), %g3 + or %g3, %lo(smp_trampoline), %g3 + sub %g3, %g7, %g3 +1: ldx [%g5], %g1 + stx %g1, [%g3] + membar #StoreStore + flush %g3 + add %g5, 8, %g5 + cmp %g5, %g6 + blu,pt %xcc, 1b + add %g3, 8, %g3 +#endif + create_mappings: /* %g5 holds the tlb data */ sethi %uhi(_PAGE_VALID | _PAGE_SZ4MB), %g5 @@ -340,7 +363,7 @@ setup_tba: mov 0x40, %g2 /* INTR data 0 register */ /* Ok, we're done setting up all the state our trap mechanims needs, - * now get back into normal globals and let the PROM know what it up. + * now get back into normal globals and let the PROM know what is up. */ wrpr %g0, %g0, %wstate wrpr %o1, PSTATE_IE, %pstate @@ -374,6 +397,7 @@ bootup_kernel_stack: ! 0x0000000000408000 #include "ttable.S" +#include "systbls.S" #include "etrap.S" #include "rtrap.S" #include "winfixup.S" |