add_definitions(-D_TARGET_X86_=1)
add_definitions(-DDBG_TARGET_32BIT=1)
add_definitions(-DDBG_TARGET_X86=1)
+elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
+ if (CLR_CMAKE_PLATFORM_UNIX)
+ add_definitions(-DDBG_TARGET_RISCV64_UNIX)
+ endif()
+ add_definitions(-D_TARGET_RISCV64_=1)
+ add_definitions(-D_TARGET_64BIT_=1)
+ add_definitions(-DDBG_TARGET_64BIT=1)
+ add_definitions(-DDBG_TARGET_RISCV64=1)
+ add_definitions(-DDBG_TARGET_WIN64=1)
+ add_definitions(-DFEATURE_MULTIREG_RETURN)
else ()
clr_unknown_arch()
endif (CLR_CMAKE_TARGET_ARCH_AMD64)
set(CLR_CMAKE_PLATFORM_UNIX_ARM64 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL i686)
set(CLR_CMAKE_PLATFORM_UNIX_X86 1)
+ elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL riscv64)
+ set(CLR_CMAKE_PLATFORM_UNIX_RISCV64 1)
else()
clr_unknown_arch()
endif()
elseif(CLR_CMAKE_PLATFORM_UNIX_X86)
set(CLR_CMAKE_PLATFORM_ARCH_I386 1)
set(CLR_CMAKE_HOST_ARCH "x86")
+elseif(CLR_CMAKE_PLATFORM_UNIX_RISCV64)
+ set(CLR_CMAKE_PLATFORM_ARCH_RISCV64 1)
+ set(CLR_CMAKE_HOST_ARCH "riscv64")
elseif(WIN32)
# CLR_CMAKE_HOST_ARCH is passed in as param to cmake
if (CLR_CMAKE_HOST_ARCH STREQUAL x64)
set(CLR_CMAKE_TARGET_ARCH_ARM64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm)
set(CLR_CMAKE_TARGET_ARCH_ARM 1)
+ elseif(CLR_CMAKE_TARGET_ARCH STREQUAL riscv64)
+ set(CLR_CMAKE_TARGET_ARCH_RISCV64 1)
else()
clr_unknown_arch()
endif()
add_definitions(-DBIT64=1) # CoreClr <= 3.x
add_definitions(-DHOST_64BIT=1) # CoreClr > 3.x
add_definitions(-DHOST_ARM64)
+elseif (CLR_CMAKE_PLATFORM_ARCH_RISCV64)
+ add_definitions(-D_RISCV64_)
+ add_definitions(-DRISCV64)
+ add_definitions(-D_WIN64)
+ add_definitions(-DBIT64=1) # CoreClr <= 3.x
+ add_definitions(-DHOST_64BIT=1) # CoreClr > 3.x
+ add_definitions(-DHOST_RISCV64)
else ()
clr_unknown_arch()
endif ()
elseif(CLR_CMAKE_PLATFORM_UNIX_X86)
message("Detected Linux i686")
add_definitions(-DLINUX32)
+ elseif(CLR_CMAKE_PLATFORM_UNIX_RISCV64)
+ message("Detected Linux RiscV64")
+ add_definitions(-DLINUX64)
else()
clr_unknown_arch()
endif()
set(ARCH_SOURCES_DIR arm)
elseif (CLR_CMAKE_TARGET_ARCH_I386)
set(ARCH_SOURCES_DIR i386)
+elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
+ set(ARCH_SOURCES_DIR riscv64)
else ()
clr_unknown_arch()
endif ()
message(FATAL_ERROR "Interop debugging feature not implemented for this OS.")
endif()
+ if (CLR_CMAKE_PLATFORM_UNIX_RISCV64)
+ message(FATAL_ERROR "Interop debugging feature not implemented for RISCV64.")
+ endif()
+
add_definitions(-DINTEROP_DEBUGGING)
if (CLR_CMAKE_PLATFORM_UNIX_AMD64)
return (std::uintptr_t)context->Pc;
#elif defined(_TARGET_ARM64_)
return (std::uintptr_t)context->Pc;
+#elif defined(_TARGET_RISCV64_)
+ return (std::uintptr_t)context->Pc;
#else
#error "Unsupported platform"
#endif
return (std::uintptr_t)context->Sp;
#elif defined(_TARGET_ARM64_)
return (std::uintptr_t)context->Sp;
+#elif defined(_TARGET_RISCV64_)
+ return (std::uintptr_t)context->Sp;
#else
#error "Unsupported platform"
#endif
return (std::uintptr_t)context->R11;
#elif defined(_TARGET_ARM64_)
return (std::uintptr_t)context->Fp;
+#elif defined(_TARGET_RISCV64_)
+ return (std::uintptr_t)context->Fp;
#else
#error "Unsupported platform"
#endif
context->R11 = value;
#elif defined(_TARGET_ARM64_)
context->Fp = value;
+#elif defined(_TARGET_RISCV64_)
+ context->Fp = value;
#else
#error "Unsupported platform"
#endif