A quick example of how to tell if the machine that you're running on supports crypto instructions.
The 2011 SPARC Architecture manual tells you to read the cfr
register before using the instruction. The cfr
register contains a bit for every implemented crypto instruction. However, the cfr
register is not implemented on all processors. So you would need to check whether this register is implemented before reading it....
So there has to be a better way. Fortunately, Solaris implements a getisax() call which provides this information without the user needing to muck around with the low level details. The following code shows how this call can be used to check whether the AES instruction is implemented or not:
#include <sys/auxv.h> #include <stdio.h> void main() { unsigned int array[10]; unsigned int count = getisax(array,10); if (count>0) { printf(" AES: "); if (array[0] & AV_SPARC_AES) { printf("Yes\n"); } else { printf("No\n"); } } else { printf("Error: getisax() call returned no results\n"); } }