Kaz wrote: > Hi All, > > Not really a kernel-related question. I've discovered that GCC 4.1.1 > (which I'm not using for kernel compiling, but user space) generates > branch likely instructions by default, even though the documentation > says that their use is off by default for MIPS32 and MIPS64, because That's because the compiler is not configured correctly. The default CPU string "from-abi" ends up being used, and so the target ISA is MIPS III. > In parallel with writing some tests, I thought I would ask whether > anyone happens know whether or not these instructions are known to > actually work correctly on the SB1480 silicon (and perhaps any > additional details, like what revisions, etc)? A basic sanity test does find bnezl working. #include <stdio.h> #include <stdlib.h> static int branch_likely_works(void) { int one = 1; int result; __asm__ __volatile__ (" .set push\n" " .set noreorder\n" "1: move %0, $0\n" " bnezl %0, 1b\n" " lw %0, %1\n" " .set pop\n" : "=r" (result) : "m" (one)); return result == 0; } int main(void) { if (branch_likely_works()) { puts("branch-likely instruction bnezl correctly annuls delay slot"); return 0; } puts("branch-likely instruction bnezl fails to annul delay slot"); return EXIT_FAILURE; }