| #include <stdio.h> |
| #include <stdlib.h> |
| #include <string.h> |
| |
| /* main() */ |
| int main(int argc, char **argv) |
| { |
| /* This program is passed in a minimum ISA that the underlying hardware |
| * needs to support. If the HW supports this ISA or newer, return 0 |
| * for supported. Otherwise, return 1 for not supported. Return 2 for |
| * usage error. |
| * |
| * First argument is required, it must be an ISA version number. |
| * Second argument "-debug" is optional. If passed, then the defined ISA |
| * values are printed. |
| */ |
| char *min_isa; |
| int isa_level = 0; |
| int debug = 0; |
| |
| /* set the isa_level set by the Make */ |
| |
| if ((argc == 3) && (strcmp(argv[2], "-debug") == 0)) { |
| debug = 1; |
| |
| } else if (argc != 2) { |
| fprintf(stderr, "usage: min_power_ISA <ISA> [-debug]\n" ); |
| exit(2); |
| } |
| |
| min_isa = argv[1]; |
| |
| #ifdef HAS_ISA_2_05 |
| if (debug) printf("HAS_ISA_2_05 is set\n"); |
| isa_level = 5; |
| #endif |
| |
| #ifdef HAS_ISA_2_06 |
| if (debug) printf("HAS_ISA_2_06 is set\n"); |
| isa_level = 6; |
| #endif |
| |
| #ifdef HAS_ISA_2_07 |
| if (debug) printf("HAS_ISA_2_07 is set\n"); |
| isa_level = 7; |
| #endif |
| |
| #ifdef HAS_ISA_3_00 |
| if (debug) printf("HAS_ISA_3_00 is set\n"); |
| isa_level = 8; |
| #endif |
| |
| /* return 0 for supported (success), 1 for not supported (failure) */ |
| if (strcmp (min_isa, "2.05") == 0) { |
| return !(isa_level >= 5); |
| |
| } else if (strcmp (min_isa, "2.06") == 0) { |
| return !(isa_level >= 6); |
| |
| } else if (strcmp (min_isa, "2.07") == 0) { |
| return !(isa_level >= 7); |
| |
| } else if (strcmp (min_isa, "3.00") == 0) { |
| return !(isa_level >= 8); |
| |
| } else { |
| fprintf(stderr, "ERROR: invalid ISA version '%s'. Valid versions numbers are:\n", min_isa); |
| fprintf(stderr, " 2.05, 2.06, 2.07, 3.00\n" ); |
| exit(2); |
| } |
| |
| return 1; |
| } |