| /* | |
| * Test the framework itself. These tests confirm that setup works. | |
| * | |
| * Copyright (C) 2016, Red Hat Inc, Andrew Jones <drjones@redhat.com> | |
| * | |
| * This work is licensed under the terms of the GNU LGPL, version 2. | |
| */ | |
| #include <libcflat.h> | |
| #include <util.h> | |
| #include <asm/setup.h> | |
| #include <asm/smp.h> | |
| static void check_setup(int argc, char **argv) | |
| { | |
| int nr_tests = 0, len, i; | |
| long val; | |
| for (i = 0; i < argc; ++i) { | |
| len = parse_keyval(argv[i], &val); | |
| if (len == -1) | |
| continue; | |
| argv[i][len] = '\0'; | |
| report_prefix_push(argv[i]); | |
| if (strcmp(argv[i], "mem") == 0) { | |
| phys_addr_t memsize = PHYSICAL_END - PHYSICAL_START; | |
| phys_addr_t expected = ((phys_addr_t)val)*1024*1024; | |
| report(memsize == expected, "size = %" PRIu64 " MB", | |
| memsize/1024/1024); | |
| ++nr_tests; | |
| } else if (strcmp(argv[i], "smp") == 0) { | |
| report(nr_cpus_present == (int)val, | |
| "nr_cpus_present = %d", nr_cpus_present); | |
| ++nr_tests; | |
| } | |
| report_prefix_pop(); | |
| } | |
| if (nr_tests < 2) | |
| report_abort("missing input"); | |
| } | |
| int main(int argc, char **argv) | |
| { | |
| report_prefix_push("selftest"); | |
| if (argc < 2) | |
| report_abort("no test specified"); | |
| report_prefix_push(argv[1]); | |
| if (strcmp(argv[1], "setup") == 0) { | |
| check_setup(argc-2, &argv[2]); | |
| } | |
| return report_summary(); | |
| } |