xref: /freebsd/usr.sbin/bhyvectl/riscv/bhyvectl_machdep.c (revision 7ab1a32cd43cbae61ad4dd435d6a482bbf61cb52)
1*7ab1a32cSRuslan Bukin /*-
2*7ab1a32cSRuslan Bukin  * SPDX-License-Identifier: BSD-2-Clause
3*7ab1a32cSRuslan Bukin  *
4*7ab1a32cSRuslan Bukin  * Copyright (c) 2024 Mark Johnston <markj@FreeBSD.org>
5*7ab1a32cSRuslan Bukin  *
6*7ab1a32cSRuslan Bukin  * This software was developed by the University of Cambridge Computer
7*7ab1a32cSRuslan Bukin  * Laboratory (Department of Computer Science and Technology) under Innovate
8*7ab1a32cSRuslan Bukin  * UK project 105694, "Digital Security by Design (DSbD) Technology Platform
9*7ab1a32cSRuslan Bukin  * Prototype".
10*7ab1a32cSRuslan Bukin  *
11*7ab1a32cSRuslan Bukin  * Redistribution and use in source and binary forms, with or without
12*7ab1a32cSRuslan Bukin  * modification, are permitted provided that the following conditions
13*7ab1a32cSRuslan Bukin  * are met:
14*7ab1a32cSRuslan Bukin  * 1. Redistributions of source code must retain the above copyright
15*7ab1a32cSRuslan Bukin  *    notice, this list of conditions and the following disclaimer.
16*7ab1a32cSRuslan Bukin  * 2. Redistributions in binary form must reproduce the above copyright
17*7ab1a32cSRuslan Bukin  *    notice, this list of conditions and the following disclaimer in the
18*7ab1a32cSRuslan Bukin  *    documentation and/or other materials provided with the distribution.
19*7ab1a32cSRuslan Bukin  *
20*7ab1a32cSRuslan Bukin  * THIS SOFTWARE IS PROVIDED BY NETAPP, INC ``AS IS'' AND
21*7ab1a32cSRuslan Bukin  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22*7ab1a32cSRuslan Bukin  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23*7ab1a32cSRuslan Bukin  * ARE DISCLAIMED.  IN NO EVENT SHALL NETAPP, INC OR CONTRIBUTORS BE LIABLE
24*7ab1a32cSRuslan Bukin  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25*7ab1a32cSRuslan Bukin  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26*7ab1a32cSRuslan Bukin  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27*7ab1a32cSRuslan Bukin  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28*7ab1a32cSRuslan Bukin  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29*7ab1a32cSRuslan Bukin  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30*7ab1a32cSRuslan Bukin  * SUCH DAMAGE.
31*7ab1a32cSRuslan Bukin  */
32*7ab1a32cSRuslan Bukin 
33*7ab1a32cSRuslan Bukin #include <sys/types.h>
34*7ab1a32cSRuslan Bukin 
35*7ab1a32cSRuslan Bukin #include <err.h>
36*7ab1a32cSRuslan Bukin #include <fcntl.h>
37*7ab1a32cSRuslan Bukin #include <getopt.h>
38*7ab1a32cSRuslan Bukin #include <stdbool.h>
39*7ab1a32cSRuslan Bukin #include <stdio.h>
40*7ab1a32cSRuslan Bukin #include <stdlib.h>
41*7ab1a32cSRuslan Bukin #include <string.h>
42*7ab1a32cSRuslan Bukin #include <unistd.h>
43*7ab1a32cSRuslan Bukin 
44*7ab1a32cSRuslan Bukin #include <vmmapi.h>
45*7ab1a32cSRuslan Bukin 
46*7ab1a32cSRuslan Bukin #include "bhyvectl.h"
47*7ab1a32cSRuslan Bukin 
48*7ab1a32cSRuslan Bukin void
bhyvectl_dump_vm_run_exitcode(struct vm_exit * vmexit __unused,int vcpu __unused)49*7ab1a32cSRuslan Bukin bhyvectl_dump_vm_run_exitcode(struct vm_exit *vmexit __unused,
50*7ab1a32cSRuslan Bukin     int vcpu __unused)
51*7ab1a32cSRuslan Bukin {
52*7ab1a32cSRuslan Bukin }
53*7ab1a32cSRuslan Bukin 
54*7ab1a32cSRuslan Bukin struct option *
bhyvectl_opts(const struct option * options,size_t count)55*7ab1a32cSRuslan Bukin bhyvectl_opts(const struct option *options, size_t count)
56*7ab1a32cSRuslan Bukin {
57*7ab1a32cSRuslan Bukin 	struct option *all_opts;
58*7ab1a32cSRuslan Bukin 
59*7ab1a32cSRuslan Bukin 	all_opts = calloc(count + 1, sizeof(struct option));
60*7ab1a32cSRuslan Bukin 	if (all_opts == NULL)
61*7ab1a32cSRuslan Bukin 		err(1, "calloc");
62*7ab1a32cSRuslan Bukin 	memcpy(all_opts, options, count * sizeof(struct option));
63*7ab1a32cSRuslan Bukin 	return (all_opts);
64*7ab1a32cSRuslan Bukin }
65*7ab1a32cSRuslan Bukin 
66*7ab1a32cSRuslan Bukin void
bhyvectl_handle_opt(const struct option * opts __unused,int opt __unused)67*7ab1a32cSRuslan Bukin bhyvectl_handle_opt(const struct option *opts __unused, int opt __unused)
68*7ab1a32cSRuslan Bukin {
69*7ab1a32cSRuslan Bukin }
70*7ab1a32cSRuslan Bukin 
71*7ab1a32cSRuslan Bukin const char *
bhyvectl_opt_desc(int opt __unused)72*7ab1a32cSRuslan Bukin bhyvectl_opt_desc(int opt __unused)
73*7ab1a32cSRuslan Bukin {
74*7ab1a32cSRuslan Bukin 	/* No riscv-specific options yet. */
75*7ab1a32cSRuslan Bukin 	return ("???");
76*7ab1a32cSRuslan Bukin }
77*7ab1a32cSRuslan Bukin 
78*7ab1a32cSRuslan Bukin void
bhyvectl_md_main(struct vmctx * ctx __unused,struct vcpu * vcpu __unused,int vcpuid __unused,bool get_all __unused)79*7ab1a32cSRuslan Bukin bhyvectl_md_main(struct vmctx *ctx __unused, struct vcpu *vcpu __unused,
80*7ab1a32cSRuslan Bukin     int vcpuid __unused, bool get_all __unused)
81*7ab1a32cSRuslan Bukin {
82*7ab1a32cSRuslan Bukin }
83