Re: __atomic_test_and_set() and mips o32 - help wanted
David Holland <[email protected]> Wed, 19 Nov 2025 04:09:20 +0000
| Newsgroups | gmane.os.netbsd.ports.mips.devel,gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
On Mon, Nov 17, 2025 at 02:51:56PM +1100, Simon Burge wrote: > > i'm not sure what the right thing to do here is. it's not clear > > to me that the actual old 32-bit hardware can do this at all, but > > there are now explicit calls to this builtin. GCC configury tries > > to find and notice it's missing, but libstdc++ still has a couple > > of calls to it directly in it's "test_and_set()". > > > > > > anyone have a good idea? > > MIPS1 has no ll/sc or any other atomic primatives. SMP R3000 > boxes (eg DECsystem 54x0) used external hardware for this. > > Seems like RAS (see rasctl(2)) might be the only (simple?) > option for MIPS1/o32 ? mips1 and o32 aren't the same thing. All 32-bit MIPS hardware, which includes 32-bit builds on otherwise 64-bit macines, will necessarily be using o32. Anyway, despite what the rest of the thread seems to think, surely it's not necessary to hack the compiler, just to provide a mips1 implementation of the missing symbol on mips1 ports? Which can then be an ll/sc sequence to be emulated, or a RAS, or whatever else... -- David A. Holland [email protected]