Home | History | Annotate | Download | only in tests
      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