< prev index next >

src/os/linux/vm/os_linux.cpp

Print this page
rev 12048 : 8166560: [s390] Basic enablement of s390 port.

@@ -289,11 +289,11 @@
   //      The linker uses the following search paths to locate required
   //      shared libraries:
   //        1: ...
   //        ...
   //        7: The default directories, normally /lib and /usr/lib.
-#if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390))
+#if defined(AMD64) || (defined(_LP64) && defined(SPARC)) || defined(PPC64) || defined(S390)
   #define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib"
 #else
   #define DEFAULT_LIBPATH "/lib:/usr/lib"
 #endif
 

@@ -1210,12 +1210,12 @@
   warning("No monotonic clock was available - timed services may " \
           "be adversely affected if the time-of-day clock changes");
 }
 
 #ifndef SYS_clock_getres
-  #if defined(IA32) || defined(AMD64)
-    #define SYS_clock_getres IA32_ONLY(266)  AMD64_ONLY(229)
+  #if defined(X86) || defined(PPC64) || defined(S390)
+    #define SYS_clock_getres AMD64_ONLY(229) IA32_ONLY(266) PPC64_ONLY(247) S390_ONLY(261)
     #define sys_clock_getres(x,y)  ::syscall(SYS_clock_getres, x, y)
   #else
     #warning "SYS_clock_getres not defined for this platform, disabling fast_thread_cpu_time"
     #define sys_clock_getres(x,y)  -1
   #endif

@@ -1729,64 +1729,64 @@
 #endif
 
   static const arch_t arch_array[]={
     {EM_386,         EM_386,     ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"},
     {EM_486,         EM_386,     ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"},
+    {EM_68K,         EM_68K,         ELFCLASS32,   ELFDATA2MSB, (char*)"M68k"},
+    {EM_AARCH64,     EM_AARCH64,     ELFCLASS64,   ELFDATA2LSB, (char*)"AARCH64"},
+    {EM_ALPHA,       EM_ALPHA,       ELFCLASS64,   ELFDATA2LSB, (char*)"Alpha"},
+    {EM_ARM,         EM_ARM,         ELFCLASS32,   ELFDATA2LSB, (char*)"ARM"},
     {EM_IA_64,       EM_IA_64,   ELFCLASS64, ELFDATA2LSB, (char*)"IA 64"},
-    {EM_X86_64,      EM_X86_64,  ELFCLASS64, ELFDATA2LSB, (char*)"AMD 64"},
-    {EM_SPARC,       EM_SPARC,   ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"},
-    {EM_SPARC32PLUS, EM_SPARC,   ELFCLASS32, ELFDATA2MSB, (char*)"Sparc 32"},
-    {EM_SPARCV9,     EM_SPARCV9, ELFCLASS64, ELFDATA2MSB, (char*)"Sparc v9 64"},
+    {EM_MIPS,        EM_MIPS,        ELFCLASS32,   ELFDATA2MSB, (char*)"MIPS"},
+    {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32,   ELFDATA2LSB, (char*)"MIPSel"},
+    {EM_PARISC,      EM_PARISC,      ELFCLASS32,   ELFDATA2MSB, (char*)"PARISC"},
     {EM_PPC,         EM_PPC,     ELFCLASS32, ELFDATA2MSB, (char*)"Power PC 32"},
 #if defined(VM_LITTLE_ENDIAN)
     {EM_PPC64,       EM_PPC64,   ELFCLASS64, ELFDATA2LSB, (char*)"Power PC 64"},
 #else
     {EM_PPC64,       EM_PPC64,   ELFCLASS64, ELFDATA2MSB, (char*)"Power PC 64 LE"},
 #endif
-    {EM_ARM,         EM_ARM,     ELFCLASS32,   ELFDATA2LSB, (char*)"ARM"},
-    {EM_S390,        EM_S390,    ELFCLASSNONE, ELFDATA2MSB, (char*)"IBM System/390"},
-    {EM_ALPHA,       EM_ALPHA,   ELFCLASS64, ELFDATA2LSB, (char*)"Alpha"},
-    {EM_MIPS_RS3_LE, EM_MIPS_RS3_LE, ELFCLASS32, ELFDATA2LSB, (char*)"MIPSel"},
-    {EM_MIPS,        EM_MIPS,    ELFCLASS32, ELFDATA2MSB, (char*)"MIPS"},
-    {EM_PARISC,      EM_PARISC,  ELFCLASS32, ELFDATA2MSB, (char*)"PARISC"},
-    {EM_68K,         EM_68K,     ELFCLASS32, ELFDATA2MSB, (char*)"M68k"},
-    {EM_AARCH64,     EM_AARCH64, ELFCLASS64, ELFDATA2LSB, (char*)"AARCH64"},
+    {EM_S390,        EM_S390,        ELFCLASS64,   ELFDATA2MSB, (char*)"S390"},
+    {EM_SPARC,       EM_SPARC,       ELFCLASS32,   ELFDATA2MSB, (char*)"Sparc 32"},
+    {EM_SPARC32PLUS, EM_SPARC,       ELFCLASS32,   ELFDATA2MSB, (char*)"Sparc 32"},
+    {EM_SPARCV9,     EM_SPARCV9,     ELFCLASS64,   ELFDATA2MSB, (char*)"Sparc v9 64"},
+    {EM_X86_64,      EM_X86_64,      ELFCLASS64,   ELFDATA2LSB, (char*)"AMD 64"},
   };
 
-#if  (defined IA32)
-  static  Elf32_Half running_arch_code=EM_386;
+#if    (defined AARCH64)
+  static  Elf32_Half running_arch_code=EM_AARCH64;
+#elif  (defined ALPHA)
+  static  Elf32_Half running_arch_code=EM_ALPHA;
+#elif  (defined ARM32)
+  static  Elf32_Half running_arch_code=EM_ARM;
 #elif   (defined AMD64)
   static  Elf32_Half running_arch_code=EM_X86_64;
+#elif  (defined IA32)
+  static  Elf32_Half running_arch_code=EM_386;
 #elif  (defined IA64)
   static  Elf32_Half running_arch_code=EM_IA_64;
-#elif  (defined __sparc) && (defined _LP64)
-  static  Elf32_Half running_arch_code=EM_SPARCV9;
-#elif  (defined __sparc) && (!defined _LP64)
-  static  Elf32_Half running_arch_code=EM_SPARC;
+#elif  (defined M68K)
+  static  Elf32_Half running_arch_code=EM_68K;
+#elif  (defined MIPS)
+  static  Elf32_Half running_arch_code=EM_MIPS;
+#elif  (defined MIPSEL)
+  static  Elf32_Half running_arch_code=EM_MIPS_RS3_LE;
+#elif  (defined PARISC)
+  static  Elf32_Half running_arch_code=EM_PARISC;
 #elif  (defined __powerpc64__)
   static  Elf32_Half running_arch_code=EM_PPC64;
 #elif  (defined __powerpc__)
   static  Elf32_Half running_arch_code=EM_PPC;
-#elif  (defined ARM)
-  static  Elf32_Half running_arch_code=EM_ARM;
 #elif  (defined S390)
   static  Elf32_Half running_arch_code=EM_S390;
-#elif  (defined ALPHA)
-  static  Elf32_Half running_arch_code=EM_ALPHA;
-#elif  (defined MIPSEL)
-  static  Elf32_Half running_arch_code=EM_MIPS_RS3_LE;
-#elif  (defined PARISC)
-  static  Elf32_Half running_arch_code=EM_PARISC;
-#elif  (defined MIPS)
-  static  Elf32_Half running_arch_code=EM_MIPS;
-#elif  (defined M68K)
-  static  Elf32_Half running_arch_code=EM_68K;
-#elif  (defined AARCH64)
-  static  Elf32_Half running_arch_code=EM_AARCH64;
+#elif  (defined __sparc) && (defined _LP64)
+  static  Elf32_Half running_arch_code=EM_SPARCV9;
+#elif  (defined __sparc) && (!defined _LP64)
+  static  Elf32_Half running_arch_code=EM_SPARC;
 #else
     #error Method os::dll_load requires that one of following is defined:\
-         IA32, AMD64, IA64, __sparc, __powerpc__, ARM, S390, ALPHA, MIPS, MIPSEL, PARISC, M68K, AARCH64
+        AARCH64, ALPHA, ARM, AMD64, IA32, IA64, MIPS, MIPSEL, M68K, PARISC, __powerpc__, __powerpc64__, S390, __sparc
 #endif
 
   // Identify compatability class for VM's architecture and library's architecture
   // Obtain string descriptions for architectures
 

@@ -2190,14 +2190,16 @@
   }
 }
 
 #if defined(AMD64) || defined(IA32) || defined(X32)
 const char* search_string = "model name";
-#elif defined(SPARC)
-const char* search_string = "cpu";
 #elif defined(PPC64)
 const char* search_string = "cpu";
+#elif defined(S390)
+const char* search_string = "processor";
+#elif defined(SPARC)
+const char* search_string = "cpu";
 #else
 const char* search_string = "Processor";
 #endif
 
 // Parses the cpuinfo file for string representing the model name.

@@ -2231,24 +2233,26 @@
     }
     fclose(fp);
   }
   // cpuinfo not found or parsing failed, just print generic string.  The entire
   // /proc/cpuinfo file will be printed later in the file (or enough of it for x86)
-#if defined(AMD64)
+#if   defined(AARCH64)
+  strncpy(cpuinfo, "AArch64", length);
+#elif defined(AMD64)
   strncpy(cpuinfo, "x86_64", length);
+#elif defined(ARM32)
+  strncpy(cpuinfo, "ARM", length);
 #elif defined(IA32)
   strncpy(cpuinfo, "x86_32", length);
 #elif defined(IA64)
   strncpy(cpuinfo, "IA64", length);
-#elif defined(SPARC)
-  strncpy(cpuinfo, "sparcv9", length);
-#elif defined(AARCH64)
-  strncpy(cpuinfo, "AArch64", length);
-#elif defined(ARM)
-  strncpy(cpuinfo, "ARM", length);
 #elif defined(PPC)
   strncpy(cpuinfo, "PPC64", length);
+#elif defined(S390)
+  strncpy(cpuinfo, "S390", length);
+#elif defined(SPARC)
+  strncpy(cpuinfo, "sparcv9", length);
 #elif defined(ZERO_LIBARCH)
   strncpy(cpuinfo, ZERO_LIBARCH, length);
 #else
   strncpy(cpuinfo, "unknown", length);
 #endif

@@ -3240,12 +3244,19 @@
   // If we can't determine the value (e.g. /proc is not mounted, or the text
   // format has been changed), we'll use the largest page size supported by
   // the processor.
 
 #ifndef ZERO
-  large_page_size = IA32_ONLY(4 * M) AMD64_ONLY(2 * M) IA64_ONLY(256 * M) SPARC_ONLY(4 * M)
-                     ARM32_ONLY(2 * M) PPC_ONLY(4 * M) AARCH64_ONLY(2 * M);
+  large_page_size =
+    AARCH64_ONLY(2 * M)
+    AMD64_ONLY(2 * M)
+    ARM32_ONLY(2 * M)
+    IA32_ONLY(4 * M)
+    IA64_ONLY(256 * M)
+    PPC_ONLY(4 * M)
+    S390_ONLY(1 * M)
+    SPARC_ONLY(4 * M);
 #endif // ZERO
 
   FILE *fp = fopen("/proc/meminfo", "r");
   if (fp) {
     while (!feof(fp)) {
< prev index next >