-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RISC-V NativeAOT port #106223
Comments
Tagging subscribers to this area: @agocke, @MichalStrehovsky, @jkotas |
cc @dotnet/samsung, @filipnavara If someone wants take over, let me know. I can also give ssh access to riscv computer (bianbu OS, Debian derivative) if needed for testing. 👍 |
Some assertions are failing at build-time in AsmOffset* and llvm-libunwind due to the sizes of various structs. llvm-libunwind is getting 96 bytes size difference in Also, I've used the register names we have in coreclr/pal. Some of them might not be needed, but I'm not sure since llvm-libunwind uses different names X1,X2,X3.. while coreclr/pal is using T1,T2,T3.. so I used the latter and handled the mapping in |
Applied changes from #106225. FWIW, this is my workflow: # on macOS arm64
$ cd runtime
$ docker run -e ROOTFS_DIR=/crossrootfs/riscv64 -v$(pwd):/runtime -w /runtime --rm \
--platform linux/arm64 -it ubuntu
$ eng/common/native/install-dependencies.sh
$ apt install -y debootstrap
$ eng/common/cross/build-rootfs.sh riscv64 noble --skipunmount --rootfsdir /crossrootfs/riscv64
$ src/coreclr/build-runtime.sh -cross -riscv64
# once nativeaot runtime ^ starts building in silo, we can try a full build
# rm -rf artifacts
# ./build.sh clr+libs+packs -cross --arch riscv64 currently it is not getting too far 😅
|
I tried to compile your branch and I ended up pretty much at the same spot. Currently away from computer, but this should be easy to fix… |
@filipnavara, have you had a chance to check out the assertion failures? No rush—just wondering if there are any blockers or details we need to sort out. Thanks! 👍 |
Unfortunately no, still tackling some things for .NET 9 release and few other hack projects that I want to get done for the .NET 10 timeframe. I hope to eventually look into it but it’s currently not a priority, sorry. |
Ok, no worries, I'll also take a look when I get a chance. Was hoping to get some feedback from @viewizard et al. on register naming since it's not immediately clear to which convention is preferred at present day (and given llvm-libunwind has its own which is obviously different than HP-libunwind, coreclr VM and PAL). 😅 |
Here are some of my ideas, and I'm not sure if they're helpful. |
Thanks @sunlijun-610, https://github.com/am11/runtime/tree/feature/nativeaot/riscv64-port has the changes. Currently, the size of |
Thanks! About the does_fit assertion failure in llvm-libunwind UnwindCursor.hpp, I think it's no need to add |
This is to track the progress of nativeaot port on riscv64 architecture.
WIP initial translation (based on @sunlijun-610's LA64 port):
main...am11:runtime:feature/nativeaot/riscv64-port
The text was updated successfully, but these errors were encountered: