Re: __atomic_test_and_set() and mips o32 - help wanted
"Maciej W. Rozycki" <[email protected]> Tue, 18 Nov 2025 20:32:47 +0000 (GMT)
| Newsgroups | gmane.os.netbsd.ports.mips.devel,gmane.os.netbsd.devel.toolchain |
|---|---|
| Message-ID | <[email protected]> |
Hi Simon, > > Just trap and emulate LL/SC in the kernel for user software; it's trivial > > for UP and lets software benefit from actual machine instructions when run > > on newer hardware (which is the vast majority nowadays). > > Heh, very simple solution... and we already emulate ll/sc! Great! So all you need is to strap GCC for producing these instructions in gcc/config.gcc, by setting `with_llsc=yes' for your target triplets of interest (you can still override it at the command line at GCC invocation if you need that for any reason). See the existing pattern there. You may have to do some juggling with the configuration of the libraries, but I suspect that'll be enough for GCC to avoid emitting libcalls for any atomic operations missing otherwise. > > NB it's the 58x0 that's SMP; the 5400 along with 5500 are ordinary UP > > Q-bus boxes and you can actually swap the CPU modules between them. > > That'll teach me for not double checking. I've never seen a 58x0 (or a > 5400), but I still for some reason have four 5500's in my garage. Nice! Make sure you've got any NVRAM batteries removed if you keep the boxes in storage as they'll leak and cause corrosion to creep down the connecting wires. Also there might be electrolytic capacitor leaks in the PSU. I've got only one 5500 in my lab; conversely it's been fully operational with its PSU partially recapped so as to avoid electrolyte leaks and for several years now it's been permanently wired for remote control in terms of both the power supply and the console, and obviously on Ethernet too. Sadly too much other stuff has prevented me from progressing with this project, but I'll get back to it sometime. Long-term I plan to wire it to my FDDI ring as well. You can't actually tell a 5400 and 5500 apart unless you look at the internals (of course the badge *might* be correct too, but who knows). As I recall as many as three standard Q-bus boxes were supported to house either system. You could swap the CPU module for a VAX 4000 model 200 too. I actually have the latter one too next to my 5500 and saving for the badges the're identical from the outside, housed in a BA430 enclosure each. FWIW I've never seen a 58x0 either. Maciej