Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions eng/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
usage()
{
echo "Common settings:"
echo " --arch (-a) Target platform: x86, x64, arm, armv6, armel, arm64, loongarch64, s390x, ppc64le or wasm."
echo " --arch (-a) Target platform: x86, x64, arm, armv6, armel, arm64, loongarch64, riscv64, s390x, ppc64le or wasm."
echo " [Default: Your machine's architecture.]"
echo " --binaryLog (-bl) Output binary log."
echo " --cross Optional argument to signify cross compilation."
Expand Down Expand Up @@ -206,12 +206,12 @@ while [[ $# > 0 ]]; do
fi
passedArch="$(echo "$2" | tr "[:upper:]" "[:lower:]")"
case "$passedArch" in
x64|x86|arm|armv6|armel|arm64|loongarch64|s390x|ppc64le|wasm)
x64|x86|arm|armv6|armel|arm64|loongarch64|riscv64|s390x|ppc64le|wasm)
arch=$passedArch
;;
*)
echo "Unsupported target architecture '$2'."
echo "The allowed values are x86, x64, arm, armv6, armel, arm64, loongarch64, s390x, ppc64le and wasm."
echo "The allowed values are x86, x64, arm, armv6, armel, arm64, loongarch64, riscv64, s390x, ppc64le and wasm."
exit 1
;;
esac
Expand Down
6 changes: 5 additions & 1 deletion eng/native/build-commons.sh
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ usage()
echo ""
echo "Common Options:"
echo ""
echo "BuildArch can be: -arm, -armv6, -armel, -arm64, -loongarch64, -s390x, -ppc64le, x64, x86, -wasm"
echo "BuildArch can be: -arm, -armv6, -armel, -arm64, -loongarch64, -riscv64, -s390x, -ppc64le, x64, x86, -wasm"
echo "BuildType can be: -debug, -checked, -release"
echo "-os: target OS (defaults to running OS)"
echo "-bindir: output directory (defaults to $__ProjectRoot/artifacts)"
Expand Down Expand Up @@ -384,6 +384,10 @@ while :; do
__TargetArch=loongarch64
;;

riscv64|-riscv64)
__TargetArch=riscv64
;;

s390x|-s390x)
__TargetArch=s390x
;;
Expand Down
20 changes: 15 additions & 5 deletions eng/native/configurecompiler.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,9 @@ elseif (CLR_CMAKE_HOST_ARCH_ARM64)
elseif (CLR_CMAKE_HOST_ARCH_LOONGARCH64)
set(ARCH_HOST_NAME loongarch64)
add_definitions(-DHOST_LOONGARCH64 -DHOST_64BIT)
elseif (CLR_CMAKE_HOST_ARCH_RISCV64)
set(ARCH_HOST_NAME riscv64)
add_definitions(-DHOST_RISCV64 -DHOST_64BIT)
elseif (CLR_CMAKE_HOST_ARCH_S390X)
set(ARCH_HOST_NAME s390x)
add_definitions(-DHOST_S390X -DHOST_64BIT -DBIGENDIAN)
Expand All @@ -238,7 +241,7 @@ elseif (CLR_CMAKE_HOST_ARCH_MIPS64)
add_definitions(-DHOST_MIPS64 -DHOST_64BIT=1)
elseif (CLR_CMAKE_HOST_ARCH_POWERPC64)
set(ARCH_HOST_NAME ppc64le)
add_definitions(-DHOST_POWERPC64 -DHOST_64BIT)
add_definitions(-DHOST_POWERPC64 -DHOST_64BIT)
else ()
clr_unknown_arch()
endif ()
Expand All @@ -248,13 +251,15 @@ if (CLR_CMAKE_HOST_UNIX)
if(CLR_CMAKE_HOST_UNIX_AMD64)
message("Detected Linux x86_64")
elseif(CLR_CMAKE_HOST_UNIX_ARM)
message("Detected Linux ARM")
message("Detected Linux arm")
elseif(CLR_CMAKE_HOST_UNIX_ARMV6)
message("Detected Linux ARMv6")
message("Detected Linux armv6")
elseif(CLR_CMAKE_HOST_UNIX_ARM64)
message("Detected Linux ARM64")
message("Detected Linux arm64")
elseif(CLR_CMAKE_HOST_UNIX_LOONGARCH64)
message("Detected Linux LOONGARCH64")
message("Detected Linux loongarch64")
elseif(CLR_CMAKE_HOST_UNIX_RISCV64)
message("Detected Linux riscv64")
elseif(CLR_CMAKE_HOST_UNIX_X86)
message("Detected Linux i686")
elseif(CLR_CMAKE_HOST_UNIX_S390X)
Expand Down Expand Up @@ -332,6 +337,11 @@ elseif (CLR_CMAKE_TARGET_ARCH_LOONGARCH64)
set(ARCH_SOURCES_DIR loongarch64)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_LOONGARCH64>)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_64BIT>)
elseif (CLR_CMAKE_TARGET_ARCH_RISCV64)
set(ARCH_TARGET_NAME riscv64)
set(ARCH_SOURCES_DIR riscv64)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_RISCV64>)
add_compile_definitions($<$<NOT:$<BOOL:$<TARGET_PROPERTY:IGNORE_DEFAULT_TARGET_ARCH>>>:TARGET_64BIT>)
elseif (CLR_CMAKE_TARGET_ARCH_S390X)
set(ARCH_TARGET_NAME s390x)
set(ARCH_SOURCES_DIR s390x)
Expand Down
33 changes: 21 additions & 12 deletions eng/native/configureplatform.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,10 @@ if(CLR_CMAKE_HOST_OS STREQUAL Linux)
set(CLR_CMAKE_HOST_UNIX_ARMV6 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL arm64)
set(CLR_CMAKE_HOST_UNIX_ARM64 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL loongarch64 OR CMAKE_SYSTEM_PROCESSOR STREQUAL loongarch64)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL loongarch64)
set(CLR_CMAKE_HOST_UNIX_LOONGARCH64 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL riscv64)
set(CLR_CMAKE_HOST_UNIX_RISCV64 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL i686 OR CMAKE_SYSTEM_PROCESSOR STREQUAL x86)
set(CLR_CMAKE_HOST_UNIX_X86 1)
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL s390x)
Expand Down Expand Up @@ -243,6 +245,9 @@ elseif(CLR_CMAKE_HOST_UNIX_ARM64)
elseif(CLR_CMAKE_HOST_UNIX_LOONGARCH64)
set(CLR_CMAKE_HOST_ARCH_LOONGARCH64 1)
set(CLR_CMAKE_HOST_ARCH "loongarch64")
elseif(CLR_CMAKE_HOST_UNIX_RISCV64)
set(CLR_CMAKE_HOST_ARCH_RISCV64 1)
set(CLR_CMAKE_HOST_ARCH "riscv64")
elseif(CLR_CMAKE_HOST_UNIX_AMD64)
set(CLR_CMAKE_HOST_ARCH_AMD64 1)
set(CLR_CMAKE_HOST_ARCH "x64")
Expand Down Expand Up @@ -292,29 +297,31 @@ endif()
# Set target architecture variables
if (CLR_CMAKE_TARGET_ARCH STREQUAL x64)
set(CLR_CMAKE_TARGET_ARCH_AMD64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
set(CLR_CMAKE_TARGET_ARCH_I386 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm64)
set(CLR_CMAKE_TARGET_ARCH_ARM64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL loongarch64)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL loongarch64)
set(CLR_CMAKE_TARGET_ARCH_LOONGARCH64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL riscv64)
set(CLR_CMAKE_TARGET_ARCH_RISCV64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL arm)
set(CLR_CMAKE_TARGET_ARCH_ARM 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armv6)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armv6)
set(CLR_CMAKE_TARGET_ARCH_ARMV6 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armel)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL armel)
set(CLR_CMAKE_TARGET_ARCH_ARM 1)
set(CLR_CMAKE_TARGET_ARCH_ARMV7L 1)
set(ARM_SOFTFP 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL s390x)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL s390x)
set(CLR_CMAKE_TARGET_ARCH_S390X 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL ppc64le)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL ppc64le)
set(CLR_CMAKE_TARGET_ARCH_POWERPC64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL wasm)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL wasm)
set(CLR_CMAKE_TARGET_ARCH_WASM 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL mips64)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL mips64)
set(CLR_CMAKE_TARGET_ARCH_MIPS64 1)
else()
else()
clr_unknown_arch()
endif()

Expand Down Expand Up @@ -416,6 +423,8 @@ if(CLR_CMAKE_TARGET_UNIX)
set(CLR_CMAKE_TARGET_UNIX_ARM64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL loongarch64)
set(CLR_CMAKE_TARGET_UNIX_LOONGARCH64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL riscv64)
set(CLR_CMAKE_TARGET_UNIX_RISCV64 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL x86)
set(CLR_CMAKE_TARGET_UNIX_X86 1)
elseif(CLR_CMAKE_TARGET_ARCH STREQUAL s390x)
Expand Down
6 changes: 5 additions & 1 deletion eng/native/functions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ function(clr_unknown_arch)
elseif(CLR_CROSS_COMPONENTS_BUILD)
message(FATAL_ERROR "Only AMD64, I386 host are supported for linux cross-architecture component. Found: ${CMAKE_SYSTEM_PROCESSOR}")
else()
message(FATAL_ERROR "Only AMD64, ARMV6, ARM64, LOONGARCH64 and ARM are supported. Found: ${CMAKE_SYSTEM_PROCESSOR}")
message(FATAL_ERROR "'${CMAKE_SYSTEM_PROCESSOR}' is an unsupported architecture.")
endif()
endfunction()

Expand Down Expand Up @@ -167,6 +167,10 @@ function(find_unwind_libs UnwindLibs)
find_library(UNWIND_ARCH NAMES unwind-loongarch64)
endif()

if(CLR_CMAKE_HOST_ARCH_RISCV64)
find_library(UNWIND_ARCH NAMES unwind-riscv64)
endif()

if(CLR_CMAKE_HOST_ARCH_AMD64)
find_library(UNWIND_ARCH NAMES unwind-x86_64)
endif()
Expand Down
4 changes: 4 additions & 0 deletions eng/native/init-os-and-arch.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ case "$CPUName" in
arch=loongarch64
;;

riscv64)
arch=riscv64
;;

amd64|x86_64)
arch=x64
;;
Expand Down
4 changes: 2 additions & 2 deletions eng/native/tryrun.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ if(DARWIN)
else()
message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only arm64 or x64 is supported for OSX cross build!")
endif()
elseif(TARGET_ARCH_NAME MATCHES "^(armel|arm|armv6|arm64|loongarch64|s390x|ppc64le|x86)$" OR FREEBSD OR ILLUMOS)
elseif(TARGET_ARCH_NAME MATCHES "^(armel|arm|armv6|arm64|loongarch64|riscv64|s390x|ppc64le|x86)$" OR FREEBSD OR ILLUMOS)
set_cache_value(FILE_OPS_CHECK_FERROR_OF_PREVIOUS_CALL_EXITCODE 1)
set_cache_value(GETPWUID_R_SETS_ERRNO_EXITCODE 0)
set_cache_value(HAS_POSIX_SEMAPHORES_EXITCODE 0)
Expand Down Expand Up @@ -149,6 +149,6 @@ else()
message(FATAL_ERROR "Arch is ${TARGET_ARCH_NAME}. Only armel, arm, armv6, arm64, loongarch64, s390x, ppc64le and x86 are supported!")
endif()

if(TARGET_ARCH_NAME STREQUAL "x86" OR TARGET_ARCH_NAME STREQUAL "s390x" OR TARGET_ARCH_NAME STREQUAL "armv6" OR TARGET_ARCH_NAME STREQUAL "loongarch64" OR TARGET_ARCH_NAME STREQUAL "ppc64le")
if(TARGET_ARCH_NAME MATCHES "^(x86|s390x|armv6|loongarch64|riscv64|ppc64le)$")
set_cache_value(HAVE_FUNCTIONAL_PTHREAD_ROBUST_MUTEXES_EXITCODE 0)
endif()
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,10 @@
<PlatformTarget>AnyCPU</PlatformTarget>
<DefineConstants>$(DefineConstants);TARGET_LOONGARCH64</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition="'$(Platform)' == 'riscv64'">
<PlatformTarget>AnyCPU</PlatformTarget>
<DefineConstants>$(DefineConstants);TARGET_RISCV64</DefineConstants>
</PropertyGroup>

<!-- Configuration specific properties -->
<PropertyGroup Condition="'$(Configuration)' == 'Debug' or '$(Configuration)' == 'Checked'">
Expand Down
9 changes: 6 additions & 3 deletions src/coreclr/jit/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,7 @@ elseif(CLR_CMAKE_TARGET_ARCH_POWERPC64)
elseif(CLR_CMAKE_TARGET_ARCH_LOONGARCH64)
set(JIT_ARCH_SOURCES ${JIT_LOONGARCH64_SOURCES})
set(JIT_ARCH_HEADERS ${JIT_LOONGARCH64_HEADERS})
elseif(CLR_CMAKE_TARGET_ARCH_RISCV64)
else()
clr_unknown_arch()
endif()
Expand Down Expand Up @@ -589,8 +590,10 @@ else()
set(TARGET_OS_NAME win)
endif()

create_standalone_jit(TARGET clrjit OS ${TARGET_OS_NAME} ARCH ${ARCH_TARGET_NAME} DESTINATIONS . sharedFramework)
install_clr(TARGETS clrjit DESTINATIONS . sharedFramework COMPONENT jit)
if (NOT CLR_CMAKE_TARGET_ARCH_RISCV64)
create_standalone_jit(TARGET clrjit OS ${TARGET_OS_NAME} ARCH ${ARCH_TARGET_NAME} DESTINATIONS . sharedFramework)
install_clr(TARGETS clrjit DESTINATIONS . sharedFramework COMPONENT jit)
endif()

# Enable profile guided optimization
add_pgo(clrjit)
Expand All @@ -613,7 +616,7 @@ if (CLR_CMAKE_TARGET_ARCH_I386 AND CLR_CMAKE_TARGET_UNIX)
create_standalone_jit(TARGET clrjit_unix_x86_${ARCH_HOST_NAME} OS unix ARCH x86 DESTINATIONS .)
endif (CLR_CMAKE_TARGET_ARCH_I386 AND CLR_CMAKE_TARGET_UNIX)

if (CLR_CMAKE_TARGET_UNIX)
if (CLR_CMAKE_TARGET_UNIX AND NOT CLR_CMAKE_TARGET_ARCH_RISCV64)
if (NOT ARCH_TARGET_NAME STREQUAL s390x AND NOT ARCH_TARGET_NAME STREQUAL armv6 AND NOT ARCH_TARGET_NAME STREQUAL ppc64le)
if(CLR_CMAKE_TARGET_ARCH_ARM OR CLR_CMAKE_TARGET_ARCH_ARM64)
install_clr(TARGETS clrjit_universal_${ARCH_TARGET_NAME}_${ARCH_HOST_NAME} DESTINATIONS . COMPONENT jit)
Expand Down
2 changes: 2 additions & 0 deletions src/coreclr/pal/src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ elseif(CLR_CMAKE_HOST_ARCH_ARM64)
set(PAL_ARCH_SOURCES_DIR arm64)
elseif(CLR_CMAKE_HOST_ARCH_LOONGARCH64)
set(PAL_ARCH_SOURCES_DIR loongarch64)
elseif(CLR_CMAKE_HOST_ARCH_RISCV64)
set(PAL_ARCH_SOURCES_DIR riscv64)
elseif(CLR_CMAKE_HOST_ARCH_I386)
set(PAL_ARCH_SOURCES_DIR i386)
elseif(CLR_CMAKE_HOST_ARCH_S390X)
Expand Down
7 changes: 7 additions & 0 deletions src/coreclr/pal/src/arch/riscv64/activationhandlerwrapper.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#include "unixasmmacros.inc"
#include "asmconstants.h"

#error "TODO-RISCV64: missing implementation"
104 changes: 104 additions & 0 deletions src/coreclr/pal/src/arch/riscv64/asmconstants.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#ifndef __PAL_RISCV64_ASMCONSTANTS_H__
#define __PAL_RISCV64_ASMCONSTANTS_H__

// https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/3f81fae0412bb9ad4002a4ade508be7aa5e1599b/riscv-dwarf.adoc
// https://github.com/riscv-non-isa/riscv-elf-psabi-doc/blob/442ae19a2846bca37c6416f2d347fe74bb0b0dba/riscv-cc.adoc

#error "TODO-RISCV64: review this when other files are ported in this directory"

#define CONTEXT_RISCV64 0x04000000L

#define CONTEXT_CONTROL_BIT (0)
#define CONTEXT_INTEGER_BIT (1)
#define CONTEXT_FLOATING_POINT_BIT (2)
#define CONTEXT_DEBUG_REGISTERS_BIT (3)

#define CONTEXT_CONTROL (CONTEXT_RISCV64 | (1L << CONTEXT_CONTROL_BIT))
#define CONTEXT_INTEGER (CONTEXT_RISCV64 | (1 << CONTEXT_INTEGER_BIT))
#define CONTEXT_FLOATING_POINT (CONTEXT_RISCV64 | (1 << CONTEXT_FLOATING_POINT_BIT))
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_RISCV64 | (1 << CONTEXT_DEBUG_REGISTERS_BIT))

#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)

#define SIZEOF_RISCV64_INTR 8
#define SIZEOF_RISCV64_FPR 8

#define CONTEXT_X0 0 // hardwired zero
#define CONTEXT_X1 CONTEXT_X0 + SIZEOF_RISCV64_INTR
#define CONTEXT_X2 CONTEXT_X1 + SIZEOF_RISCV64_INTR
#define CONTEXT_X3 CONTEXT_X2 + SIZEOF_RISCV64_INTR
#define CONTEXT_X4 CONTEXT_X3 + SIZEOF_RISCV64_INTR
#define CONTEXT_X5 CONTEXT_X4 + SIZEOF_RISCV64_INTR
#define CONTEXT_X6 CONTEXT_X5 + SIZEOF_RISCV64_INTR
#define CONTEXT_X7 CONTEXT_X6 + SIZEOF_RISCV64_INTR
#define CONTEXT_X8 CONTEXT_X7 + SIZEOF_RISCV64_INTR
#define CONTEXT_X9 CONTEXT_X8 + SIZEOF_RISCV64_INTR
#define CONTEXT_X10 CONTEXT_X9 + SIZEOF_RISCV64_INTR
#define CONTEXT_X11 CONTEXT_X10 + SIZEOF_RISCV64_INTR
#define CONTEXT_X12 CONTEXT_X11 + SIZEOF_RISCV64_INTR
#define CONTEXT_X13 CONTEXT_X12 + SIZEOF_RISCV64_INTR
#define CONTEXT_X14 CONTEXT_X13 + SIZEOF_RISCV64_INTR
#define CONTEXT_X15 CONTEXT_X14 + SIZEOF_RISCV64_INTR
#define CONTEXT_X16 CONTEXT_X15 + SIZEOF_RISCV64_INTR
#define CONTEXT_X17 CONTEXT_X16 + SIZEOF_RISCV64_INTR
#define CONTEXT_X18 CONTEXT_X17 + SIZEOF_RISCV64_INTR
#define CONTEXT_X19 CONTEXT_X18 + SIZEOF_RISCV64_INTR
#define CONTEXT_X20 CONTEXT_X19 + SIZEOF_RISCV64_INTR
#define CONTEXT_X21 CONTEXT_X20 + SIZEOF_RISCV64_INTR
#define CONTEXT_X22 CONTEXT_X21 + SIZEOF_RISCV64_INTR
#define CONTEXT_X23 CONTEXT_X22 + SIZEOF_RISCV64_INTR
#define CONTEXT_X24 CONTEXT_X23 + SIZEOF_RISCV64_INTR
#define CONTEXT_X25 CONTEXT_X24 + SIZEOF_RISCV64_INTR
#define CONTEXT_X26 CONTEXT_X25 + SIZEOF_RISCV64_INTR
#define CONTEXT_X27 CONTEXT_X26 + SIZEOF_RISCV64_INTR
#define CONTEXT_X28 CONTEXT_X27 + SIZEOF_RISCV64_INTR
#define CONTEXT_X29 CONTEXT_X28 + SIZEOF_RISCV64_INTR
#define CONTEXT_X30 CONTEXT_X29 + SIZEOF_RISCV64_INTR
#define CONTEXT_X31 CONTEXT_X30 + SIZEOF_RISCV64_INTR

#define CONTEXT_Pc CONTEXT_X31 + SIZEOF_RISCV64_INTR
#define CONTEXT_FPU_OFFSET CONTEXT_Pc + SIZEOF_RISCV64_INTR
#define CONTEXT_Sp CONTEXT_X2
#define CONTEXT_Tp CONTEXT_X4
#define CONTEXT_Fp CONTEXT_X8

#define CONTEXT_F0 0
#define CONTEXT_F1 CONTEXT_F1 + SIZEOF_RISCV64_FPR
#define CONTEXT_F2 CONTEXT_F2 + SIZEOF_RISCV64_FPR
#define CONTEXT_F3 CONTEXT_F2 + SIZEOF_RISCV64_FPR
#define CONTEXT_F4 CONTEXT_F3 + SIZEOF_RISCV64_FPR
#define CONTEXT_F5 CONTEXT_F4 + SIZEOF_RISCV64_FPR
#define CONTEXT_F6 CONTEXT_F5 + SIZEOF_RISCV64_FPR
#define CONTEXT_F7 CONTEXT_F6 + SIZEOF_RISCV64_FPR
#define CONTEXT_F8 CONTEXT_F7 + SIZEOF_RISCV64_FPR
#define CONTEXT_F9 CONTEXT_F8 + SIZEOF_RISCV64_FPR
#define CONTEXT_F10 CONTEXT_F9 + SIZEOF_RISCV64_FPR
#define CONTEXT_F11 CONTEXT_F10 + SIZEOF_RISCV64_FPR
#define CONTEXT_F12 CONTEXT_F11 + SIZEOF_RISCV64_FPR
#define CONTEXT_F13 CONTEXT_F12 + SIZEOF_RISCV64_FPR
#define CONTEXT_F14 CONTEXT_F13 + SIZEOF_RISCV64_FPR
#define CONTEXT_F15 CONTEXT_F14 + SIZEOF_RISCV64_FPR
#define CONTEXT_F16 CONTEXT_F15 + SIZEOF_RISCV64_FPR
#define CONTEXT_F17 CONTEXT_F16 + SIZEOF_RISCV64_FPR
#define CONTEXT_F18 CONTEXT_F17 + SIZEOF_RISCV64_FPR
#define CONTEXT_F19 CONTEXT_F18 + SIZEOF_RISCV64_FPR
#define CONTEXT_F20 CONTEXT_F19 + SIZEOF_RISCV64_FPR
#define CONTEXT_F21 CONTEXT_F20 + SIZEOF_RISCV64_FPR
#define CONTEXT_F22 CONTEXT_F21 + SIZEOF_RISCV64_FPR
#define CONTEXT_F23 CONTEXT_F22 + SIZEOF_RISCV64_FPR
#define CONTEXT_F24 CONTEXT_F23 + SIZEOF_RISCV64_FPR
#define CONTEXT_F25 CONTEXT_F24 + SIZEOF_RISCV64_FPR
#define CONTEXT_F26 CONTEXT_F25 + SIZEOF_RISCV64_FPR
#define CONTEXT_F27 CONTEXT_F26 + SIZEOF_RISCV64_FPR
#define CONTEXT_F28 CONTEXT_F27 + SIZEOF_RISCV64_FPR
#define CONTEXT_F29 CONTEXT_F28 + SIZEOF_RISCV64_FPR
#define CONTEXT_F30 CONTEXT_F29 + SIZEOF_RISCV64_FPR
#define CONTEXT_F31 CONTEXT_F30 + SIZEOF_RISCV64_FPR

#define CONTEXT_FLOAT_CONTROL_OFFSET CONTEXT_F31+SIZEOF_RISCV64_FPR
#define CONTEXT_Size ((CONTEXT_FPU_OFFSET + 8 + 8 + 0xf) & ~0xf)

#endif
7 changes: 7 additions & 0 deletions src/coreclr/pal/src/arch/riscv64/callsignalhandlerwrapper.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#include "unixasmmacros.inc"
#include "asmconstants.h"

#error "TODO-RISCV64: missing implementation"
6 changes: 6 additions & 0 deletions src/coreclr/pal/src/arch/riscv64/context.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#include "unixasmmacros.inc"

#error "TODO-RISCV64: missing implementation"
Loading