> On Thu, 11 Jul 2002, Kevin D. Kissell wrote: > > I note that Ralf has, in fact, applied the fix to the > > OSS CVS repository. I also note that "BARRIER" > > is still defined to be a string of 6 nops. I would argue > > (again) that those really, really ought to be ssnops, > > and that if they *were* ssnops, one could probably > > have fewer of them. > > Sorry for being ignorant, but what's the difference between nop and ssnop? > > I see that SSNOP is defined to be `sll zero,zero,1' in <asm/asm.h>, but that > doesn't give me any clue. SSNOPs are "super-scalar NOPs", which were first invented (but not documented at the time) for the R8000, which was the first superscalar MIPS implementation. They wanted to be able to absorb the standard "overhead" NOPS associated with unfilled branch delay slots, etc, in the dual-issue mechanism, but still have some means to handle CP0 hazards such that it could be assured to force a 1 cycle stall per instruction. While it wasn't officially a part of the architecture until the late 1990's, the convention was carried forward by the R5xxx and R1xxxx families. There have been rumours of superscalar MIPS processors that do not enforce single-issue on SSNOPs, but I don't know of any offhand, and the MIPS32/MIPS64 specs formalize the definition. Regards, Kevin K.