1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 5 /* main() */ 6 int main(int argc, char **argv) 7 { 8 /* This program is passed in a minimum ISA that the underlying hardwre 9 * needs to support. If the HW supports this ISA or newer, return 0 10 * for supported. Otherwise, return 1 for not supported. Return 2 for 11 * usage error. 12 * 13 * First argument is required, it must be an ISA version number. 14 * Second argument "-debug" is optional. If passed, then the defined ISA 15 * values are printed. 16 */ 17 char *min_isa; 18 int isa_level = 0; 19 int debug = 0; 20 21 /* set the isa_level set by the Make */ 22 23 if ((argc == 3) && (strcmp(argv[2], "-debug") == 0)) { 24 debug = 1; 25 26 } else if (argc != 2) { 27 fprintf(stderr, "usage: min_power_ISA <ISA> [-debug]\n" ); 28 exit(2); 29 } 30 31 min_isa = argv[1]; 32 33 #ifdef HAS_ISA_2_05 34 if (debug) printf("HAS_ISA_2_05 is set\n"); 35 isa_level = 5; 36 #endif 37 38 #ifdef HAS_ISA_2_06 39 if (debug) printf("HAS_ISA_2_06 is set\n"); 40 isa_level = 6; 41 #endif 42 43 #ifdef HAS_ISA_2_07 44 if (debug) printf("HAS_ISA_2_07 is set\n"); 45 isa_level = 7; 46 #endif 47 48 /* return 0 for supported (success), 1 for not supported (failure) */ 49 if (strcmp (min_isa, "2.05") == 0) { 50 return !(isa_level >= 5); 51 52 } else if (strcmp (min_isa, "2.06") == 0) { 53 return !(isa_level >= 6); 54 55 } else if (strcmp (min_isa, "2.07") == 0) { 56 return !(isa_level >= 7); 57 58 } else { 59 fprintf(stderr, "ERROR: invalid ISA version. Valid versions numbers are:\n" ); 60 fprintf(stderr, " 2.05, 2.06, 2.07\n" ); 61 exit(2); 62 } 63 64 return 1; 65 } 66