summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorLeon Alrae2015-06-19 15:17:45 +0200
committerPeter Maydell2015-06-19 15:17:45 +0200
commita59d31a1ebdce796a469242800db89bf09c94580 (patch)
tree6788be8c5ede10f11aefae993e88f494a634b22a /include
parentsemihosting: create SemihostingConfig structure and semihost.h (diff)
downloadqemu-a59d31a1ebdce796a469242800db89bf09c94580.tar.gz
qemu-a59d31a1ebdce796a469242800db89bf09c94580.tar.xz
qemu-a59d31a1ebdce796a469242800db89bf09c94580.zip
semihosting: add --semihosting-config arg sub-argument
Add new "arg" sub-argument to the --semihosting-config allowing the user to pass multiple input arguments separately. It is required for example by UHI semihosting to construct argc and argv. Also, update ARM semihosting to support new option (at the moment it is the only target which cares about arguments). If the semihosting is enabled and no semihosting args have been specified, then fall back to -kernel/-append. The -append string is split on whitespace before initializing semihosting.argv[1..n]; this is different from what QEMU MIPS machines' pseudo-bootloaders do (i.e. argv[1] contains the whole -append), but is more intuitive from UHI user's point of view and Linux kernel just does not care as it concatenates argv[1..n] into single cmdline string anyway. Signed-off-by: Leon Alrae <leon.alrae@imgtec.com> Message-id: 1434643256-16858-3-git-send-email-leon.alrae@imgtec.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include')
-rw-r--r--include/exec/semihost.h18
1 files changed, 18 insertions, 0 deletions
diff --git a/include/exec/semihost.h b/include/exec/semihost.h
index c2f0bcbc3e..5980939c7b 100644
--- a/include/exec/semihost.h
+++ b/include/exec/semihost.h
@@ -36,9 +36,27 @@ static inline SemihostingTarget semihosting_get_target(void)
{
return SEMIHOSTING_TARGET_AUTO;
}
+
+static inline const char *semihosting_get_arg(int i)
+{
+ return NULL;
+}
+
+static inline int semihosting_get_argc(void)
+{
+ return 0;
+}
+
+static inline const char *semihosting_get_cmdline(void)
+{
+ return NULL;
+}
#else
bool semihosting_enabled(void);
SemihostingTarget semihosting_get_target(void);
+const char *semihosting_get_arg(int i);
+int semihosting_get_argc(void);
+const char *semihosting_get_cmdline(void);
#endif
#endif