summaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/head_32.S
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2012-05-12 10:02:11 +0200
committerDavid S. Miller <davem@davemloft.net>2012-05-12 10:02:11 +0200
commit9b4c514ad218cbefaf13375f11578ef1d78701ff (patch)
tree0b4c58fbfb44a9e3544660fec9c6ee01a632f2a9 /arch/sparc/kernel/head_32.S
parentsparc32: Trivial removal of sun4c references in comments. (diff)
downloadlinux-9b4c514ad218cbefaf13375f11578ef1d78701ff.tar.xz
linux-9b4c514ad218cbefaf13375f11578ef1d78701ff.zip
sparc32: Add back early sun4/sun4c detection so we can warn properly.
We need to do the check before we try to remap the kernel using SRMMU operations. Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/kernel/head_32.S')
-rw-r--r--arch/sparc/kernel/head_32.S23
1 files changed, 23 insertions, 0 deletions
diff --git a/arch/sparc/kernel/head_32.S b/arch/sparc/kernel/head_32.S
index ea45894db0bd..0d01798bb120 100644
--- a/arch/sparc/kernel/head_32.S
+++ b/arch/sparc/kernel/head_32.S
@@ -532,6 +532,29 @@ copy_prom_done:
be go_to_highmem ! this will be a nop then
nop
+ /* Validate that we are in fact running on an
+ * SRMMU based cpu.
+ */
+ set 0x4000, %g6
+ cmp %g7, %g6
+ bne not_a_sun4
+ nop
+
+halt_sun4_or_sun4c:
+ ld [%g7 + 0x68], %o1
+ set sun4c_notsup, %o0
+ sub %o0, %l6, %o0
+ call %o1
+ nop
+ ba halt_me
+ nop
+
+not_a_sun4:
+ lda [%g0] ASI_M_MMUREGS, %g1
+ andcc %g1, 1, %g0
+ be halt_sun4_or_sun4c
+ nop
+
srmmu_remap:
/* First, check for a viking (TI) module. */
set 0x40000000, %g2