Enthusiast gets Windows XP running on an i486
tomshardware.com
tomshardware.com
Given the article shows an emulator running it, it's possible (but I hope not) that the emulator was modified to supply a 486 CPUID while also supporting the instruction. Maybe the Windows 2000 ntoskrnl.exe was slotted in, too? Anything beyond that, I'm not sure how you can modify Windows XP itself to support an older CPU lacking the necessary instruction.
Here's an example code:
extern std::atomic<uint64_t> v;
bool f(uint64_t& a, uint64_t b) { return v.compare_exchange_strong(a, b); }
I'm away from a computer but someone should try this and disassemble the resulting binary.Disassembly of `libatomic.a` is not useful since distros don't compile that with 486 support. Go look at the source.
Archived article: https://archive.ph/ruCRF
Experimentation & discovery FTW !