< 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 >