On Fri, Nov 24, 2023 at 11:53:06AM +0100, Christoph Müllner wrote:
I think ARM64 approached this problem by adding the load-acquire/store-release instructions and for TSO based code, translate into those (eg. x86 -> arm64 transpilers).
IIRC Risc-V actually has such instructions as well, so *why* are you doing this?!?!
Not needing a transpiler is already a benefit.
This don't make sense, native risc-v stuff knows about the weak stuff, its your natve model. The only reason you would ever need this dynamic TSO stuff, is if you're going to run code that's written for some other platform (notably x86).
And the DTSO approach also covers the cases where transpilers can't be used (e.g. binary-only executables or libraries).
Uhh.. have you looked at the x86-on-arm64 things? That's all binary to binary magic.
We are also working on extending ld.so such, that it switches to DTSO (if available) in case the user wants to start an executable that was compiled for Ztso or loads a library that was compiled for Ztso. This would utilize the API that is introduced in this patchset.
I mean, sure, but *why* would you do this to your users? Who would want to build a native risc-v tso binary?