summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Filippov2018-10-20 03:40:20 +0200
committerMax Filippov2018-10-20 03:40:20 +0200
commit02e33e9ffd6056657e6f82ee7b942c3bc8060cbe (patch)
treeb1f576252108891b0aae4c9387fd49e962522ebe
parentMerge remote-tracking branch 'remotes/dgibson/tags/libfdt-20181002' into staging (diff)
downloadqemu-02e33e9ffd6056657e6f82ee7b942c3bc8060cbe.tar.gz
qemu-02e33e9ffd6056657e6f82ee7b942c3bc8060cbe.tar.xz
qemu-02e33e9ffd6056657e6f82ee7b942c3bc8060cbe.zip
linux-user: xtensa: enable bFLT support
- request bflt support in configure; - implement custom linux-user/xtensa/target_flat.h that doesn't put envp on stack; - fix #include "target_flat.h" in flatload.c so that it first search for arch-customized version of the header. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
-rwxr-xr-xconfigure1
-rw-r--r--linux-user/flatload.c2
-rw-r--r--linux-user/xtensa/target_flat.h10
3 files changed, 12 insertions, 1 deletions
diff --git a/configure b/configure
index 18006f0865..2c6b850ac6 100755
--- a/configure
+++ b/configure
@@ -7178,6 +7178,7 @@ case "$target_name" in
;;
xtensa|xtensaeb)
TARGET_ARCH=xtensa
+ bflt="yes"
mttcg="yes"
target_compiler=$cross_cc_xtensa
;;
diff --git a/linux-user/flatload.c b/linux-user/flatload.c
index 10c529910f..2eefe55e50 100644
--- a/linux-user/flatload.c
+++ b/linux-user/flatload.c
@@ -37,7 +37,7 @@
#include "qemu.h"
#include "flat.h"
-#include "target_flat.h"
+#include <target_flat.h>
//#define DEBUG
diff --git a/linux-user/xtensa/target_flat.h b/linux-user/xtensa/target_flat.h
new file mode 100644
index 0000000000..732adddb0d
--- /dev/null
+++ b/linux-user/xtensa/target_flat.h
@@ -0,0 +1,10 @@
+/* If your arch needs to do custom stuff, create your own target_flat.h
+ * header file in linux-user/<your arch>/
+ */
+#define flat_argvp_envp_on_stack() 0
+#define flat_reloc_valid(reloc, size) ((reloc) <= (size))
+#define flat_old_ram_flag(flag) (flag)
+#define flat_get_relocate_addr(relval) (relval)
+#define flat_get_addr_from_rp(rp, relval, flags, persistent) (rp)
+#define flat_set_persistent(relval, persistent) (*persistent)
+#define flat_put_addr_at_rp(rp, addr, relval) put_user_ual(addr, rp)