#include #include /* SIGHUP, SIGINT, SIGKILL */ #include /* longjmp, setjmp */ static jmp_buf env; static int ill = 0; static void SigHandler(int); int main(void) { void (*pf_sigill) (int) = signal(SIGILL, SigHandler); if(setjmp(env) == 0) asm volatile ("mtspr 256, %0\n\t" "vand %%v0, %%v0, %%v0" : : "r" (-1)); printf("AltiVec %s supported\n", ill ? "is not" : "is"); signal(SIGILL, pf_sigill); return 0; } static void SigHandler(int i_signal) { /* Acknowledge the signal received */ ill = 1; sigrelse(i_signal); longjmp(env, 1); }