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 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