Module Name: src Committed By: palle Date: Tue May 13 19:14:05 UTC 2014
Modified Files: src/sys/arch/sparc64/sparc64: machdep.c Log Message: get_vis() now handles sun4v (VIS 1 and VIS 2) To generate a diff of this commit: cvs rdiff -u -r1.275 -r1.276 src/sys/arch/sparc64/sparc64/machdep.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/sparc64/sparc64/machdep.c diff -u src/sys/arch/sparc64/sparc64/machdep.c:1.275 src/sys/arch/sparc64/sparc64/machdep.c:1.276 --- src/sys/arch/sparc64/sparc64/machdep.c:1.275 Sat Jan 25 19:42:25 2014 +++ src/sys/arch/sparc64/sparc64/machdep.c Tue May 13 19:14:05 2014 @@ -1,4 +1,4 @@ -/* $NetBSD: machdep.c,v 1.275 2014/01/25 19:42:25 christos Exp $ */ +/* $NetBSD: machdep.c,v 1.276 2014/05/13 19:14:05 palle Exp $ */ /*- * Copyright (c) 1996, 1997, 1998 The NetBSD Foundation, Inc. @@ -71,7 +71,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.275 2014/01/25 19:42:25 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.276 2014/05/13 19:14:05 palle Exp $"); #include "opt_ddb.h" #include "opt_multiprocessor.h" @@ -401,19 +401,29 @@ get_vis(void) { int vis = 0; - if (GETVER_CPU_MANUF() == MANUF_FUJITSU) { - /* as far as I can tell SPARC64-III and up have VIS 1.0 */ - if (GETVER_CPU_IMPL() >= IMPL_SPARC64_III) { - vis = 1; - } - /* XXX - which, if any, SPARC64 support VIS 2.0? */ - } else { - /* this better be Sun */ - vis = 1; /* all UltraSPARCs support at least VIS 1.0 */ - if (CPU_IS_USIII_UP()) { - vis = 2; + if ( CPU_ISSUN4V ) { + /* + * UA2005 and UA2007 supports VIS 1 and VIS 2. + * Oracle SPARC Architecture 2011 supports VIS 3. + * + * XXX Settle with VIS 2 until we can determite the + * actual sun4v implementation. + */ + vis = 2; + } else { + if (GETVER_CPU_MANUF() == MANUF_FUJITSU) { + /* as far as I can tell SPARC64-III and up have VIS 1.0 */ + if (GETVER_CPU_IMPL() >= IMPL_SPARC64_III) { + vis = 1; + } + /* XXX - which, if any, SPARC64 support VIS 2.0? */ + } else { + /* this better be Sun */ + vis = 1; /* all UltraSPARCs support at least VIS 1.0 */ + if (CPU_IS_USIII_UP()) { + vis = 2; + } } - /* UltraSPARC T4 supports VIS 3.0 */ } return vis; } @@ -448,10 +458,11 @@ SYSCTL_SETUP(sysctl_machdep_setup, "sysc NULL, 9, NULL, 0, CTL_MACHDEP, CPU_ARCH, CTL_EOL); sysctl_createv(clog, 0, NULL, NULL, - CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE, - CTLTYPE_INT, "vis", NULL, - NULL, get_vis(), NULL, 0, - CTL_MACHDEP, CPU_VIS, CTL_EOL); + CTLFLAG_PERMANENT|CTLFLAG_IMMEDIATE, + CTLTYPE_INT, "vis", + "Supported version of VIS instruction set", + NULL, get_vis(), NULL, 0, + CTL_MACHDEP, CPU_VIS, CTL_EOL); } void *