1*d72b0449SAndrew Jones /* 2*d72b0449SAndrew Jones * Test the framework itself. These tests confirm that setup works. 3*d72b0449SAndrew Jones * 4*d72b0449SAndrew Jones * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> 5*d72b0449SAndrew Jones * 6*d72b0449SAndrew Jones * This work is licensed under the terms of the GNU LGPL, version 2. 7*d72b0449SAndrew Jones */ 81e95c7ccSAndrew Jones #include <libcflat.h> 9*d72b0449SAndrew Jones #include <util.h> 10*d72b0449SAndrew Jones #include <asm/setup.h> 111e95c7ccSAndrew Jones 12*d72b0449SAndrew Jones static void check_setup(int argc, char **argv) 131e95c7ccSAndrew Jones { 14*d72b0449SAndrew Jones int nr_tests = 0, len, i; 15*d72b0449SAndrew Jones long val; 16*d72b0449SAndrew Jones 17*d72b0449SAndrew Jones for (i = 0; i < argc; ++i) { 18*d72b0449SAndrew Jones 19*d72b0449SAndrew Jones len = parse_keyval(argv[i], &val); 20*d72b0449SAndrew Jones if (len == -1) 21*d72b0449SAndrew Jones continue; 22*d72b0449SAndrew Jones 23*d72b0449SAndrew Jones argv[i][len] = '\0'; 24*d72b0449SAndrew Jones report_prefix_push(argv[i]); 25*d72b0449SAndrew Jones 26*d72b0449SAndrew Jones if (strcmp(argv[i], "mem") == 0) { 27*d72b0449SAndrew Jones 28*d72b0449SAndrew Jones phys_addr_t memsize = PHYSICAL_END - PHYSICAL_START; 29*d72b0449SAndrew Jones phys_addr_t expected = ((phys_addr_t)val)*1024*1024; 30*d72b0449SAndrew Jones 31*d72b0449SAndrew Jones report("size = %d MB", memsize == expected, 32*d72b0449SAndrew Jones memsize/1024/1024); 33*d72b0449SAndrew Jones ++nr_tests; 34*d72b0449SAndrew Jones 35*d72b0449SAndrew Jones } else if (strcmp(argv[i], "smp") == 0) { 36*d72b0449SAndrew Jones 37*d72b0449SAndrew Jones report("nr_cpus = %d", nr_cpus == (int)val, nr_cpus); 38*d72b0449SAndrew Jones ++nr_tests; 39*d72b0449SAndrew Jones } 40*d72b0449SAndrew Jones 41*d72b0449SAndrew Jones report_prefix_pop(); 42*d72b0449SAndrew Jones } 43*d72b0449SAndrew Jones 44*d72b0449SAndrew Jones if (nr_tests < 2) 45*d72b0449SAndrew Jones report_abort("missing input"); 46*d72b0449SAndrew Jones } 47*d72b0449SAndrew Jones 48*d72b0449SAndrew Jones int main(int argc, char **argv) 49*d72b0449SAndrew Jones { 50*d72b0449SAndrew Jones report_prefix_push("selftest"); 51*d72b0449SAndrew Jones 52*d72b0449SAndrew Jones if (!argc) 53*d72b0449SAndrew Jones report_abort("no test specified"); 54*d72b0449SAndrew Jones 55*d72b0449SAndrew Jones report_prefix_push(argv[0]); 56*d72b0449SAndrew Jones 57*d72b0449SAndrew Jones if (strcmp(argv[0], "setup") == 0) { 58*d72b0449SAndrew Jones 59*d72b0449SAndrew Jones check_setup(argc-1, &argv[1]); 60*d72b0449SAndrew Jones 61*d72b0449SAndrew Jones } 62*d72b0449SAndrew Jones 63*d72b0449SAndrew Jones return report_summary(); 641e95c7ccSAndrew Jones } 65