Skip to content

Commit ff10999

Browse files
authored
[RISC-V] others except coreclr (#82382)
* [RISCV-V] others except coreclr - Successfully cross-build for RISC-V. - Run A simple application "helloworld" - Fail a test in clr.paltest * Add risc-v * Put riscv64 to the last
1 parent 1a321fd commit ff10999

28 files changed

Lines changed: 92 additions & 24 deletions

src/libraries/Microsoft.NETCore.Platforms/src/runtime.compatibility.json

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5697,6 +5697,14 @@
56975697
"any",
56985698
"base"
56995699
],
5700+
"linux-riscv64": [
5701+
"linux-riscv64",
5702+
"linux",
5703+
"unix-riscv64",
5704+
"unix",
5705+
"any",
5706+
"base"
5707+
],
57005708
"linux-musl": [
57015709
"linux-musl",
57025710
"linux",
@@ -10529,6 +10537,12 @@
1052910537
"any",
1053010538
"base"
1053110539
],
10540+
"unix-riscv64": [
10541+
"unix-riscv64",
10542+
"unix",
10543+
"any",
10544+
"base"
10545+
],
1053210546
"win": [
1053310547
"win",
1053410548
"any",
@@ -11159,4 +11173,4 @@
1115911173
"any",
1116011174
"base"
1116111175
]
11162-
}
11176+
}

src/libraries/Microsoft.NETCore.Platforms/src/runtime.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1994,6 +1994,12 @@
19941994
"unix-mips64"
19951995
]
19961996
},
1997+
"linux-riscv64": {
1998+
"#import": [
1999+
"linux",
2000+
"unix-riscv64"
2001+
]
2002+
},
19972003
"linux-musl": {
19982004
"#import": [
19992005
"linux"
@@ -4082,6 +4088,11 @@
40824088
"unix"
40834089
]
40844090
},
4091+
"unix-riscv64": {
4092+
"#import": [
4093+
"unix"
4094+
]
4095+
},
40854096
"win": {
40864097
"#import": [
40874098
"any"
@@ -4406,4 +4417,4 @@
44064417
]
44074418
}
44084419
}
4409-
}
4420+
}

src/libraries/Microsoft.NETCore.Platforms/src/runtimeGroups.props

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
<ItemGroup>
44
<RuntimeGroup Include="unix">
55
<Parent>any</Parent>
6-
<Architectures>x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le</Architectures>
6+
<Architectures>x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le;riscv64</Architectures>
77
</RuntimeGroup>
88
<RuntimeGroup Include="linux">
99
<Parent>unix</Parent>
10-
<Architectures>x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le</Architectures>
10+
<Architectures>x64;x86;arm;armv6;armel;arm64;loongarch64;mips64;s390x;ppc64le;riscv64</Architectures>
1111
</RuntimeGroup>
1212
<RuntimeGroup Include="linux-musl">
1313
<Parent>linux</Parent>

src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<SupportsX86Intrinsics Condition="'$(Platform)' == 'x86' and '$(TargetsWindows)' == 'true' and '$(FeatureMono)' == 'true'">false</SupportsX86Intrinsics>
2020
<ILLinkSharedDirectory>$(MSBuildThisFileDirectory)ILLink\</ILLinkSharedDirectory>
2121
<IsBigEndian Condition="'$(Platform)' == 's390x'">true</IsBigEndian>
22-
<Is64Bit Condition="'$(Platform)' == 'arm64' or '$(Platform)' == 'x64' or '$(Platform)' == 's390x' or '$(Platform)' == 'loongarch64' or '$(Platform)' == 'ppc64le'">true</Is64Bit>
22+
<Is64Bit Condition="'$(Platform)' == 'arm64' or '$(Platform)' == 'x64' or '$(Platform)' == 's390x' or '$(Platform)' == 'loongarch64' or '$(Platform)' == 'ppc64le' or '$(Platform)' == 'riscv64'">true</Is64Bit>
2323
<UseMinimalGlobalizationData Condition="'$(TargetsiOS)' == 'true' or '$(TargetstvOS)' == 'true' or '$(TargetsBrowser)' == 'true' or '$(TargetsWasi)' == 'true'">true</UseMinimalGlobalizationData>
2424
</PropertyGroup>
2525
<PropertyGroup>

src/native/external/libunwind.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ set(libunwind_la_SOURCES_riscv
198198
riscv/Lget_proc_info.c riscv/Linit.c riscv/Lis_signal_frame.c
199199
riscv/Lstep.c
200200
riscv/getcontext.S
201+
riscv/setcontext.S
201202
riscv/Lget_save_loc.c
202203
riscv/Linit_local.c riscv/Lregs.c
203204
riscv/Lcreate_addr_space.c riscv/Lglobal.c riscv/Linit_remote.c riscv/Lresume.c

src/native/external/libunwind/src/CMakeLists.txt

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,38 @@ SET(libunwind_loongarch64_la_SOURCES_loongarch
326326
loongarch64/Gis_signal_frame.c loongarch64/Gregs.c loongarch64/Gresume.c loongarch64/Gstep.c
327327
)
328328

329+
# The list of files that go into libunwind and libunwind-riscv:
330+
SET(libunwind_la_SOURCES_riscv_common
331+
${libunwind_la_SOURCES_common}
332+
riscv/is_fpreg.c
333+
riscv/regname.c
334+
)
335+
336+
# The list of files that go into libunwind:
337+
SET(libunwind_la_SOURCES_riscv
338+
${libunwind_la_SOURCES_riscv_common}
339+
${libunwind_la_SOURCES_local}
340+
riscv/setcontext.S
341+
riscv/Lapply_reg_state.c riscv/Lreg_states_iterate.c
342+
riscv/Lcreate_addr_space.c riscv/Lget_proc_info.c
343+
riscv/Lget_save_loc.c riscv/Lglobal.c riscv/Linit.c
344+
riscv/Linit_local.c riscv/Linit_remote.c
345+
riscv/Lis_signal_frame.c riscv/Lregs.c riscv/Lresume.c
346+
riscv/Lstep.c riscv/getcontext.S
347+
)
348+
349+
SET(libunwind_riscv_la_SOURCES_riscv
350+
${libunwind_la_SOURCES_riscv_common}
351+
${libunwind_la_SOURCES_generic}
352+
riscv/Gapply_reg_state.c riscv/Greg_states_iterate.c
353+
riscv/Gcreate_addr_space.c riscv/Gget_proc_info.c
354+
riscv/Gget_save_loc.c riscv/Gglobal.c riscv/Ginit.c
355+
riscv/Ginit_local.c riscv/Ginit_remote.c
356+
riscv/Gis_signal_frame.c riscv/Gregs.c riscv/Gresume.c
357+
riscv/Gstash_frame.c riscv/Gstep.c
358+
)
359+
360+
329361
if(TARGET_AARCH64)
330362
SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_aarch64})
331363
SET(libunwind_remote_la_SOURCES ${libunwind_aarch64_la_SOURCES_aarch64})
@@ -349,6 +381,11 @@ elseif(TARGET_LOONGARCH64)
349381
SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_loongarch64})
350382
SET(libunwind_remote_la_SOURCES ${libunwind_loongarch64_la_SOURCES_loongarch})
351383
SET(libunwind_elf_la_SOURCES ${libunwind_elf64_la_SOURCES})
384+
elseif(TARGET_RISCV)
385+
SET(libunwind_la_SOURCES ${libunwind_la_SOURCES_riscv})
386+
SET(libunwind_remote_la_SOURCES ${libunwind_riscv_la_SOURCES_riscv})
387+
SET(libunwind_elf_la_SOURCES ${libunwind_elf64_la_SOURCES})
388+
list(APPEND libunwind_setjmp_la_SOURCES riscv/siglongjmp.S)
352389
endif()
353390

354391
add_library(libunwind

src/tests/Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@
141141
<TargetBits Condition="'$(TargetArchitecture)'=='x64'">64</TargetBits>
142142
<TargetBits Condition="'$(TargetArchitecture)'=='arm64'">64</TargetBits>
143143
<TargetBits Condition="'$(TargetArchitecture)'=='loongarch64'">64</TargetBits>
144+
<TargetBits Condition="'$(TargetArchitecture)'=='riscv64'">64</TargetBits>
144145
</PropertyGroup>
145146

146147
<PropertyGroup>

src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128B.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#include <emmintrin.h>
1111

1212
typedef __m128i Vector128B;
13-
#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64)
13+
#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
1414
#if defined(_MSC_VER)
1515
#if defined(TARGET_ARM64)
1616
#include <arm64_neon.h>

src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128C.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#include <emmintrin.h>
1111

1212
typedef __m128i Vector128C;
13-
#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64)
13+
#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
1414
#if defined(_MSC_VER)
1515
#if defined(TARGET_ARM64)
1616
#include <arm64_neon.h>

src/tests/Interop/PInvoke/Generics/GenericsNative.Vector128D.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
#include <emmintrin.h>
1111

1212
typedef __m128d Vector128D;
13-
#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64)
13+
#elif defined(TARGET_ARMARCH) || defined(TARGET_LOONGARCH64) || defined(TARGET_RISCV64)
1414
#if defined(_MSC_VER)
1515
#if defined(TARGET_ARM64)
1616
#include <arm64_neon.h>

0 commit comments

Comments
 (0)