< prev index next >

src/os/linux/vm/os_linux.cpp

Print this page

        

*** 1416,1427 **** "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) #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 --- 1416,1427 ---- "be adversely affected if the time-of-day clock changes"); } #ifndef SYS_clock_getres ! #if defined(IA32) || defined(AMD64) || defined(AARCH64) ! #define SYS_clock_getres IA32_ONLY(266) AMD64_ONLY(229) AARCH64_ONLY(114) #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
*** 1949,1958 **** --- 1949,1962 ---- #ifndef EM_486 #define EM_486 6 /* Intel 80486 */ #endif + #ifndef EM_AARCH64 + #define EM_AARCH64 183 + #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_IA_64, EM_IA_64, ELFCLASS64, ELFDATA2LSB, (char*)"IA 64"}, {EM_X86_64, EM_X86_64, ELFCLASS64, ELFDATA2LSB, (char*)"AMD 64"},
*** 1969,1979 **** {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"} }; #if (defined IA32) static Elf32_Half running_arch_code=EM_386; #elif (defined AMD64) --- 1973,1984 ---- {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"}, }; #if (defined IA32) static Elf32_Half running_arch_code=EM_386; #elif (defined AMD64)
*** 2000,2012 **** 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; #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 #endif // Identify compatability class for VM's architecture and library's architecture // Obtain string descriptions for architectures --- 2005,2019 ---- 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; #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 #endif // Identify compatability class for VM's architecture and library's architecture // Obtain string descriptions for architectures
*** 2941,2965 **** int os::Linux::sched_getcpu_syscall(void) { unsigned int cpu = 0; int retval = -1; ! #if defined(IA32) ! # ifndef SYS_getcpu ! # define SYS_getcpu 318 ! # endif ! retval = syscall(SYS_getcpu, &cpu, NULL, NULL); ! #elif defined(AMD64) // Unfortunately we have to bring all these macros here from vsyscall.h // to be able to compile on old linuxes. # define __NR_vgetcpu 2 # define VSYSCALL_START (-10UL << 20) # define VSYSCALL_SIZE 1024 # define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr)) typedef long (*vgetcpu_t)(unsigned int *cpu, unsigned int *node, unsigned long *tcache); vgetcpu_t vgetcpu = (vgetcpu_t)VSYSCALL_ADDR(__NR_vgetcpu); retval = vgetcpu(&cpu, NULL, NULL); #endif return (retval == -1) ? retval : cpu; } --- 2948,2972 ---- int os::Linux::sched_getcpu_syscall(void) { unsigned int cpu = 0; int retval = -1; ! #if defined(AMD64) // Unfortunately we have to bring all these macros here from vsyscall.h // to be able to compile on old linuxes. # define __NR_vgetcpu 2 # define VSYSCALL_START (-10UL << 20) # define VSYSCALL_SIZE 1024 # define VSYSCALL_ADDR(vsyscall_nr) (VSYSCALL_START+VSYSCALL_SIZE*(vsyscall_nr)) typedef long (*vgetcpu_t)(unsigned int *cpu, unsigned int *node, unsigned long *tcache); vgetcpu_t vgetcpu = (vgetcpu_t)VSYSCALL_ADDR(__NR_vgetcpu); retval = vgetcpu(&cpu, NULL, NULL); + #elif defined(IA32) || defined(AARCH64) + # ifndef SYS_getcpu + # define SYS_getcpu AARCH64_ONLY(168) NOT_AARCH64(318) + # endif + retval = syscall(SYS_getcpu, &cpu, NULL, NULL); #endif return (retval == -1) ? retval : cpu; }
*** 3509,3519 **** // 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) ! ARM_ONLY(2 * M) PPC_ONLY(4 * M); #endif // ZERO FILE *fp = fopen("/proc/meminfo", "r"); if (fp) { while (!feof(fp)) { --- 3516,3526 ---- // 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) ! ARM_ONLY(2 * M) PPC_ONLY(4 * M) AARCH64_ONLY(2 * M); #endif // ZERO FILE *fp = fopen("/proc/meminfo", "r"); if (fp) { while (!feof(fp)) {
< prev index next >