Merge pull request #2802 from BrzVlad/feature-evacuation-opt2
[mono.git] / mono / utils / mono-hwcap-sparc.c
1 /*
2  * mono-hwcap-sparc.c: SPARC hardware feature detection
3  *
4  * Authors:
5  *    Alex Rønne Petersen (alexrp@xamarin.com)
6  *    Elijah Taylor (elijahtaylor@google.com)
7  *    Miguel de Icaza (miguel@xamarin.com)
8  *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
9  *    Paolo Molaro (lupus@xamarin.com)
10  *    Rodrigo Kumpera (kumpera@gmail.com)
11  *    Sebastien Pouliot (sebastien@xamarin.com)
12  *    Zoltan Varga (vargaz@xamarin.com)
13  *
14  * Copyright 2003 Ximian, Inc.
15  * Copyright 2003-2011 Novell, Inc
16  * Copyright 2006 Broadcom
17  * Copyright 2007-2008 Andreas Faerber
18  * Copyright 2011-2013 Xamarin Inc
19  * Licensed under the MIT license. See LICENSE file in the project root for full license information.
20  */
21
22 #include "mono/utils/mono-hwcap-sparc.h"
23
24 #include <string.h>
25
26 #if !defined(__linux__)
27 #include <sys/systeminfo.h>
28 #else
29 #include <unistd.h>
30 #endif
31
32 gboolean mono_hwcap_sparc_is_v9 = FALSE;
33
34 void
35 mono_hwcap_arch_init (void)
36 {
37         char buf [1024];
38
39 #if !defined(__linux__)
40         if (!sysinfo (SI_ISALIST, buf, 1024))
41                 g_assert_not_reached ();
42 #else
43         /* If the page size is 8192, we're on a 64-bit SPARC, which
44          * in turn means a v9 or better.
45          */
46         if (getpagesize () == 8192)
47                 strcpy (buf, "sparcv9");
48         else
49                 strcpy (buf, "sparcv8");
50 #endif
51
52         mono_hwcap_sparc_is_v9 = strstr (buf, "sparcv9");
53 }
54
55 void
56 mono_hwcap_print (FILE *f)
57 {
58         g_fprintf (f, "mono_hwcap_sparc_is_v9 = %i\n", mono_hwcap_sparc_is_v9);
59 }