qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

semihost.h (2121B)


      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 #ifdef CONFIG_USER_ONLY
     30 static inline bool semihosting_enabled(bool is_user)
     31 {
     32     return true;
     33 }
     34 
     35 static inline SemihostingTarget semihosting_get_target(void)
     36 {
     37     return SEMIHOSTING_TARGET_AUTO;
     38 }
     39 
     40 static inline const char *semihosting_get_arg(int i)
     41 {
     42     return NULL;
     43 }
     44 
     45 static inline int semihosting_get_argc(void)
     46 {
     47     return 0;
     48 }
     49 
     50 static inline const char *semihosting_get_cmdline(void)
     51 {
     52     return NULL;
     53 }
     54 #else /* !CONFIG_USER_ONLY */
     55 /**
     56  * semihosting_enabled:
     57  * @is_user: true if guest code is in usermode (i.e. not privileged)
     58  *
     59  * Return true if guest code is allowed to make semihosting calls.
     60  */
     61 bool semihosting_enabled(bool is_user);
     62 SemihostingTarget semihosting_get_target(void);
     63 const char *semihosting_get_arg(int i);
     64 int semihosting_get_argc(void);
     65 const char *semihosting_get_cmdline(void);
     66 void semihosting_arg_fallback(const char *file, const char *cmd);
     67 /* for vl.c hooks */
     68 void qemu_semihosting_enable(void);
     69 int qemu_semihosting_config_options(const char *opt);
     70 void qemu_semihosting_chardev_init(void);
     71 void qemu_semihosting_console_init(Chardev *);
     72 #endif /* CONFIG_USER_ONLY */
     73 void qemu_semihosting_guestfd_init(void);
     74 
     75 #endif /* SEMIHOST_H */