Hello. My question is not directly linux-related, but I think people here can give me some clue on an issue. There is a "semi-official" bug in Intel CPUs, which is described here: http://www.intel.com/design/intarch/specupdt/27287402.PDF chapter "Specification Clarifications" section 4: "Use Of ESP In 16-Bit Code With 32-Bit Interrupt Handlers". A short quote: "ISSUE: When a 32-bit IRET is used to return to another privilege level, and the old level uses a 4G stack (D/B bit in the segment register = 1), while the new level uses a 64k stack (D/B bit = 0), then only the lower word of ESP is updated." Which means that the higher word of ESP gets trashed. This bug beats dosemu rather badly, but there seem to be not much info about that bug available on the net. What I want to find out, is what CPUs are affected. I wrote a small test-case. It is attached. I tried it on Intel Pentium and on AMD Athlon - bug is present on both. But I'd like to know if it is also present on a Transmeta Crusoe, Cyrix and other CPUs. Can someone please run the test-case on some of that CPUs and see how it goes? Note: specifying "32" as an arg to the test-case, will make it to use the 32bit segment for the stack, and it will not detect the bug. It is there to prove that it detects the Right Thing. Run it without that argument. I'd also like to know any thoughts on whether it is possible to work around the bug, probably in a kernel? Well, I am not hoping on such a possibility, but who knows... Anyway, I'd be glad to get any info on that bug. Why it was not fixed for so many years, looks also like an interesting question, as for me.