blob: 8d1a2c767ed6c3db4b1bb79ab5a547910bee799b [file] [log] [blame]
/*
* 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();
}