xref: /kvm-unit-tests/riscv/sbi.c (revision a8a78d758b16d4e1869aae600ee074dfd1a64135)
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  * SBI verification
4  *
5  * Copyright (C) 2023, Ventana Micro Systems Inc., Andrew Jones <ajones@ventanamicro.com>
6  */
7 #include <libcflat.h>
8 #include <stdlib.h>
9 #include <asm/sbi.h>
10 
11 static void help(void)
12 {
13 	puts("Test SBI\n");
14 	puts("An environ must be provided where expected values are given.\n");
15 }
16 
17 int main(int argc, char **argv)
18 {
19 	struct sbiret ret;
20 	long expected;
21 
22 	if (argc > 1 && !strcmp(argv[1], "-h")) {
23 		help();
24 		exit(0);
25 	}
26 
27 	report_prefix_push("sbi");
28 
29 	if (!getenv("MVENDORID")) {
30 		report_skip("mvendorid: missing MVENDORID environment variable");
31 		goto done;
32 	}
33 	expected = strtol(getenv("MVENDORID"), NULL, 0);
34 
35 	ret = sbi_ecall(SBI_EXT_BASE, SBI_EXT_BASE_GET_MVENDORID, 0, 0, 0, 0, 0, 0);
36 	report(!ret.error, "mvendorid: no error");
37 	report(ret.value == expected, "mvendorid");
38 
39 done:
40 	return report_summary();
41 }
42