72 lines
2.8 KiB
Diff
72 lines
2.8 KiB
Diff
diff --git a/openjdk/common/autoconf/platform.m4 b/openjdk/common/autoconf/platform.m4
|
|
index 0dbf74cbe..dcf3f747b 100644
|
|
--- a/openjdk/common/autoconf/platform.m4
|
|
+++ b/openjdk/common/autoconf/platform.m4
|
|
@@ -96,6 +96,18 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
|
|
VAR_CPU_BITS=64
|
|
VAR_CPU_ENDIAN=big
|
|
;;
|
|
+ riscv32)
|
|
+ VAR_CPU=riscv32
|
|
+ VAR_CPU_ARCH=riscv
|
|
+ VAR_CPU_BITS=32
|
|
+ VAR_CPU_ENDIAN=little
|
|
+ ;;
|
|
+ riscv64)
|
|
+ VAR_CPU=riscv64
|
|
+ VAR_CPU_ARCH=riscv
|
|
+ VAR_CPU_BITS=64
|
|
+ VAR_CPU_ENDIAN=little
|
|
+ ;;
|
|
*)
|
|
AC_MSG_ERROR([unsupported cpu $1])
|
|
;;
|
|
diff --git a/openjdk/hotspot/src/os/linux/vm/os_linux.cpp b/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
|
|
index bcce508e0..6e2659d12 100644
|
|
--- a/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
|
|
+++ b/openjdk/hotspot/src/os/linux/vm/os_linux.cpp
|
|
@@ -1743,6 +1743,9 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) {
|
|
#ifndef EM_AARCH64
|
|
#define EM_AARCH64 183 /* ARM AARCH64 */
|
|
#endif
|
|
+#ifndef EM_RISCV
|
|
+ #define EM_RISCV 243 /* RISC-V */
|
|
+#endif
|
|
|
|
static const arch_t arch_array[]={
|
|
{EM_386, EM_386, ELFCLASS32, ELFDATA2LSB, (char*)"IA 32"},
|
|
@@ -1766,6 +1769,7 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) {
|
|
{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_RISCV, EM_RISCV, ELFCLASSNONE, ELFDATA2MSB, (char*)"RISC-V"},
|
|
};
|
|
|
|
#if (defined IA32)
|
|
@@ -1798,9 +1802,11 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) {
|
|
static Elf32_Half running_arch_code=EM_MIPS;
|
|
#elif (defined M68K)
|
|
static Elf32_Half running_arch_code=EM_68K;
|
|
+#elif (defined __riscv)
|
|
+ static Elf32_Half running_arch_code=EM_RISCV;
|
|
#else
|
|
#error Method os::dll_load requires that one of following is defined:\
|
|
- AARCH64, ALPHA, ARM, AMD64, IA32, IA64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, S390, __sparc
|
|
+ AARCH64, ALPHA, ARM, AMD64, IA32, IA64, M68K, MIPS, MIPSEL, PARISC, __powerpc__, __powerpc64__, S390, __sparc, __riscv
|
|
#endif
|
|
|
|
// Identify compatability class for VM's architecture and library's architecture
|
|
@@ -1833,10 +1839,12 @@ void * os::dll_load(const char *filename, char *ebuf, int ebuflen) {
|
|
}
|
|
|
|
#ifndef S390
|
|
+#ifndef __riscv
|
|
if (lib_arch.elf_class != arch_array[running_arch_index].elf_class) {
|
|
::snprintf(diag_msg_buf, diag_msg_max_length-1," (Possible cause: architecture word width mismatch)");
|
|
return NULL;
|
|
}
|
|
+#endif // !__riscv
|
|
#endif // !S390
|
|
|
|
if (lib_arch.compat_class != arch_array[running_arch_index].compat_class) {
|