Add prom_set_sun4v_api_version().
authorkettenis <kettenis@openbsd.org>
Sat, 9 Aug 2008 21:06:05 +0000 (21:06 +0000)
committerkettenis <kettenis@openbsd.org>
Sat, 9 Aug 2008 21:06:05 +0000 (21:06 +0000)
sys/arch/sparc64/include/sparc64.h
sys/arch/sparc64/sparc64/ofw_machdep.c

index fcfced0..591808a 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: sparc64.h,v 1.11 2008/07/10 08:57:05 kettenis Exp $   */
+/*     $OpenBSD: sparc64.h,v 1.12 2008/08/09 21:06:05 kettenis Exp $   */
 /*     $NetBSD: sparc64.h,v 1.3 2000/10/20 05:47:03 mrg Exp $  */
 
 /*
@@ -56,6 +56,7 @@ void prom_start_cpu(int cpu, void *func, long arg);
 void prom_start_cpu_by_cpuid(int cpu, void *func, long arg);
 const char *prom_serengeti_set_console_input(const char *);
 time_t prom_opl_get_tod(void);
+uint64_t prom_set_sun4v_api_version(uint64_t, uint64_t, uint64_t, uint64_t *);
 
 /*
  * Debug
index 47a88e5..201890f 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: ofw_machdep.c,v 1.28 2008/07/10 08:57:05 kettenis Exp $       */
+/*     $OpenBSD: ofw_machdep.c,v 1.29 2008/08/09 21:06:05 kettenis Exp $       */
 /*     $NetBSD: ofw_machdep.c,v 1.16 2001/07/20 00:07:14 eeh Exp $     */
 
 /*
@@ -783,6 +783,36 @@ prom_opl_get_tod(void)
        return (time_t)args.time;
 }
 
+uint64_t
+prom_set_sun4v_api_version(uint64_t api_group, uint64_t major,
+    uint64_t minor, uint64_t *supported_minor)
+{
+       static struct {
+               cell_t  name;
+               cell_t  nargs;
+               cell_t  nreturns;
+               cell_t  api_group;
+               cell_t  major;
+               cell_t  minor;
+               cell_t  status;
+               cell_t  supported_minor;
+       } args;
+
+       args.name = ADR2CELL("SUNW,set-sun4v-api-version");
+       args.nargs = 3;
+       args.nreturns = 2;
+       args.api_group = api_group;
+       args.major = major;
+       args.minor = minor;
+       args.status = -1;
+       args.supported_minor = -1;
+
+       openfirmware(&args);
+
+       *supported_minor = args.supported_minor;
+       return (uint64_t)args.status;
+}
+
 #ifdef DEBUG
 int ofmapintrdebug = 0;
 #define        DPRINTF(x)      do { if (ofmapintrdebug) printf x; } while (0)