[Qemu-devel] [PATCH] linux-user: xtensa: enable bFLT support

Max Filippov posted 1 patch 5 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20181020014612.29736-1-jcmvbkbc@gmail.com
Test docker-clang@ubuntu passed
Test checkpatch passed
Test asan passed
Test docker-mingw@fedora failed
Test docker-quick@centos7 passed
configure                       |  1 +
linux-user/flatload.c           |  2 +-
linux-user/xtensa/target_flat.h | 10 ++++++++++
3 files changed, 12 insertions(+), 1 deletion(-)
create mode 100644 linux-user/xtensa/target_flat.h
[Qemu-devel] [PATCH] linux-user: xtensa: enable bFLT support
Posted by Max Filippov 5 years, 6 months ago
- 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>
---
 configure                       |  1 +
 linux-user/flatload.c           |  2 +-
 linux-user/xtensa/target_flat.h | 10 ++++++++++
 3 files changed, 12 insertions(+), 1 deletion(-)
 create mode 100644 linux-user/xtensa/target_flat.h

diff --git a/configure b/configure
index 18006f0865b7..2c6b850ac690 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 10c529910fc8..2eefe55e5000 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 000000000000..732adddb0d1e
--- /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)
-- 
2.11.0