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 hardware 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 #ifdef HAS_ISA_3_00 49 if (debug) printf("HAS_ISA_3_00 is set\n"); 50 isa_level = 8; 51 #endif 52 53 /* return 0 for supported (success), 1 for not supported (failure) */ 54 if (strcmp (min_isa, "2.05") == 0) { 55 return !(isa_level >= 5); 56 57 } else if (strcmp (min_isa, "2.06") == 0) { 58 return !(isa_level >= 6); 59 60 } else if (strcmp (min_isa, "2.07") == 0) { 61 return !(isa_level >= 7); 62 63 } else if (strcmp (min_isa, "3.00") == 0) { 64 return !(isa_level >= 8); 65 66 } else { 67 fprintf(stderr, "ERROR: invalid ISA version '%s'. Valid versions numbers are:\n", min_isa); 68 fprintf(stderr, " 2.05, 2.06, 2.07, 3.00\n" ); 69 exit(2); 70 } 71 72 return 1; 73 } 74