Graham wrote:
Hello,
I am wondering whether anyone has looked into which AMD CPUs support
these instructions. I would think that installing a 486 kernel on an
AthlonXP, for example, would be quite sub-optimal.
i.e. can you safely enable X86_P6_NOP for other CPUs, such as AMD
K7/K8, VIA C3/C7, or Efficeon? If not, would it be more sensible to
avoid using these instructions?
It appears that at least some VIA C3 CPUs do not support these opcodes:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=463606#45
Attached is a C program which tests this.
#include <stdio.h>
#include <signal.h>
#include <setjmp.h>
static sigjmp_buf out;
void sigill(int signal)
{
siglongjmp(out, 1);
}
int main(void)
{
int died;
signal(SIGILL, sigill);
died = sigsetjmp(out, 1);
if (!died)
asm volatile("nopl 0(%eax)");
printf("Long NOPs supported: %s\n", died ? "no" : "yes");
return died;
}