mirror of
https://github.com/mii443/qemu.git
synced 2025-12-09 14:08:32 +00:00
Merge remote-tracking branch 'remotes/xtensa/tags/20181030-xtensa' into staging
target/xtensa: support for bFLT binaries - add support for bFLT binaries for target/xtensa - fix per-architecture target_flat.h customization - fix initial stack pointer for bFLT # gpg: Signature made Tue 30 Oct 2018 18:27:42 GMT # gpg: using RSA key 51F9CC91F83FA044 # gpg: Good signature from "Max Filippov <filippov@cadence.com>" # gpg: aka "Max Filippov <max.filippov@cogentembedded.com>" # gpg: aka "Max Filippov <jcmvbkbc@gmail.com>" # Primary key fingerprint: 2B67 854B 98E5 327D CDEB 17D8 51F9 CC91 F83F A044 * remotes/xtensa/tags/20181030-xtensa: linux-user/flatload: fix initial stack pointer alignment linux-user: xtensa: enable bFLT support Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
1
configure
vendored
1
configure
vendored
@@ -7105,6 +7105,7 @@ case "$target_name" in
|
|||||||
;;
|
;;
|
||||||
xtensa|xtensaeb)
|
xtensa|xtensaeb)
|
||||||
TARGET_ARCH=xtensa
|
TARGET_ARCH=xtensa
|
||||||
|
bflt="yes"
|
||||||
mttcg="yes"
|
mttcg="yes"
|
||||||
target_compiler=$cross_cc_xtensa
|
target_compiler=$cross_cc_xtensa
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
|
|
||||||
#include "qemu.h"
|
#include "qemu.h"
|
||||||
#include "flat.h"
|
#include "flat.h"
|
||||||
#include "target_flat.h"
|
#include <target_flat.h>
|
||||||
|
|
||||||
//#define DEBUG
|
//#define DEBUG
|
||||||
|
|
||||||
@@ -771,10 +771,10 @@ int load_flt_binary(struct linux_binprm *bprm, struct image_info *info)
|
|||||||
/* Enforce final stack alignment of 16 bytes. This is sufficient
|
/* Enforce final stack alignment of 16 bytes. This is sufficient
|
||||||
for all current targets, and excess alignment is harmless. */
|
for all current targets, and excess alignment is harmless. */
|
||||||
stack_len = bprm->envc + bprm->argc + 2;
|
stack_len = bprm->envc + bprm->argc + 2;
|
||||||
stack_len += 3; /* argc, arvg, argp */
|
stack_len += flat_argvp_envp_on_stack() ? 2 : 0; /* arvg, argp */
|
||||||
|
stack_len += 1; /* argc */
|
||||||
stack_len *= sizeof(abi_ulong);
|
stack_len *= sizeof(abi_ulong);
|
||||||
if ((sp + stack_len) & 15)
|
sp -= (sp - stack_len) & 15;
|
||||||
sp -= 16 - ((sp + stack_len) & 15);
|
|
||||||
sp = loader_build_argptr(bprm->envc, bprm->argc, sp, p,
|
sp = loader_build_argptr(bprm->envc, bprm->argc, sp, p,
|
||||||
flat_argvp_envp_on_stack());
|
flat_argvp_envp_on_stack());
|
||||||
|
|
||||||
|
|||||||
10
linux-user/xtensa/target_flat.h
Normal file
10
linux-user/xtensa/target_flat.h
Normal file
@@ -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)
|
||||||
Reference in New Issue
Block a user