Dave,
Many thanks for the explanations.
At this point I am using the image scripts to generate a VMMaker image, which on RasPi4 Linux gets close and dies, but I am able to run the CoInterp init methods and generate code.
One wrinkle with the Squeak 6 version is that attempting to open a repo in the Monticello Browser (e.g. VMMakerInbox) generates "Error: primitiveSSLCreate failed".
I was able to access the repos via a 5.3 Squeak image and use the package-cache to be able to load a Monticello package into VMMaker.
I am able to generate and build aarch64 and riscv64 images for test.
The ThreadedRiscV64FFIPlugin shares much of the mechanics with ThreadedARM64FFIPlugin so is a subclass. Because of this, some updates for riscv64 require a change to the ThreadedARM64FFIPlugin level.
The problem of the week is to get the C casting/coercion right for both arm64 and riscv64, but [A] I have not used C much in the last couple of decades and [B] I don't yet get know the VMMaker idioms to get the generated code to do what I want. Still learning.
I know what I want at the CPU/machine/asm level and can get the (hacked) generated C code to work on both arm64 and riscv64 VM binaries (in the opensmalltalk-vm github repo see src/plugins/SqueakFFIPrims/RiscV64FFIPlugin.c) but have not yet figured out how to teach VMMaker how to get a clean RiscV64FFIPlugin.c from the Smalltalk source.
The problem is to get the FFI called function to return the properly cased float/double/other as the riscv64 gcc is very finicky to stick to the strict ABI. Much less forgiving (or less creative) than the arm64 gcc codegen.
So I am currently in an observe, theorize, test, repeat (er, hack, gen code, build) cycle as I learn the mechanics and I am re-remembering all the reasons I droped development in C in favor of Smalltalk.
If you are deep into the mechanics, you can take a look at the attached, but I will be experimenting in the mean time. I am happy to do an off-line if you have a deep desire to get into the weeds on this, but I suspect a bit more experimenting will get the Smalltalk->C->gcc->run end-to-end up.
Thanks once again for the kind background description. -KenD