Hi all, Last year, I had begun experimental work on porting gnumach to riscv64, however the attempt was abandoned after getting a stub build.
That changed last week when Diego emailed the list and expressed his interest in the riscv64 port, later sending a patch implementing UART. Along with my new changes that enable early boot, we now have gnumach booting and printing a banner on riscv64 on QEMU. Thanks, Diego! Currently, the port is in very early stage, and almost everything except setting up the environment for the early boot phase is stubbed out. Diego is willing to send further patches, implementing Sv39 virtual memory translation, PCB, trap dispatch etc. We'll be replacing the stubs incrementally. The experimental work takes place at this repository: https://github.com/hakanrw/gnumach-riscv64 If there are concerns around using GitHub, I am willing to move it elsewhere. Let me know. For development and testing, I am using these tools. They all are upstream, and you don't need any patches to get them working. - riscv64-unknown-gnu binutils - riscv64-unknown-gnu-gcc (GCC 16+) - riscv64-unknown-gnu-mig (Just works) - qemu-system-riscv64 The GCC target for riscv64 Hurd was added last year. Brad Smith also added the same target to LLVM, but I have not tested it to build gnumach yet. After building, you can run the kernel build simply via: $ qemu-system-riscv64 -machine virt -kernel gnumach Switch to serial0 over View, and you will see that it prints the banner "GNU Mach 1.8". Question for Samuel: Should Diego and I keep communicating and reviewing patches for riscv64 in this mailing list? I wanted to ask as we are not directly working upstream, and I wouldn't want to clutter or cause confusion in this list. Let me know. That's all from me for now. Wishing everyone a good weekend! Hakan
