diff options
Diffstat (limited to 'tests/min_power_isa.c')
-rw-r--r-- | tests/min_power_isa.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/tests/min_power_isa.c b/tests/min_power_isa.c new file mode 100644 index 000000000..efcf526e8 --- /dev/null +++ b/tests/min_power_isa.c @@ -0,0 +1,65 @@ +#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 hardwre + * 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 + + /* 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 { + fprintf(stderr, "ERROR: invalid ISA version. Valid versions numbers are:\n" ); + fprintf(stderr, " 2.05, 2.06, 2.07\n" ); + exit(2); + } + + return 1; +} |