master
h 52 lines 1.69 KB
Raw
1 /*
2 * Semihosting support
3 *
4 * Copyright (c) 2015 Imagination Technologies
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef SEMIHOST_H
21 #define SEMIHOST_H
22
23 typedef enum SemihostingTarget {
24 SEMIHOSTING_TARGET_AUTO = 0,
25 SEMIHOSTING_TARGET_NATIVE,
26 SEMIHOSTING_TARGET_GDB
27 } SemihostingTarget;
28
29 /**
30 * semihosting_enabled:
31 * @is_user: true if guest code is in usermode (i.e. not privileged)
32 *
33 * Return true if guest code is allowed to make semihosting calls.
34 */
35 bool semihosting_enabled(bool is_user);
36 bool semihosting_arm_compatible(void);
37 void semihosting_arm_compatible_init(void);
38
39 SemihostingTarget semihosting_get_target(void);
40 const char *semihosting_get_arg(int i);
41 int semihosting_get_argc(void);
42 const char *semihosting_get_cmdline(void);
43 void semihosting_arg_fallback(const char *file, const char *cmd);
44
45 /* for vl.c hooks */
46 void qemu_semihosting_enable(void);
47 int qemu_semihosting_config_options(const char *optstr);
48 void qemu_semihosting_chardev_init(void);
49 void qemu_semihosting_console_init(Chardev *);
50 void qemu_semihosting_guestfd_init(void);
51
52 #endif /* SEMIHOST_H */