mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
linux-user: Move get_elf_platform to {i386,x86_64}/elfload.c
Move get_elf_platform to i386/elfload.c; pass in CPUState. Create a simple get_elf_platform for x86_64. Introduce HAVE_ELF_PLATFORM. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
+2
-16
@@ -149,12 +149,12 @@ typedef abi_int target_pid_t;
|
||||
|
||||
#ifdef TARGET_I386
|
||||
|
||||
#define ELF_PLATFORM get_elf_platform(thread_cpu)
|
||||
|
||||
#ifdef TARGET_X86_64
|
||||
#define ELF_CLASS ELFCLASS64
|
||||
#define ELF_ARCH EM_X86_64
|
||||
|
||||
#define ELF_PLATFORM "x86_64"
|
||||
|
||||
static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop)
|
||||
{
|
||||
regs->rax = 0;
|
||||
@@ -237,22 +237,8 @@ static bool init_guest_commpage(void)
|
||||
#define ELF_CLASS ELFCLASS32
|
||||
#define ELF_ARCH EM_386
|
||||
|
||||
#define ELF_PLATFORM get_elf_platform()
|
||||
#define EXSTACK_DEFAULT true
|
||||
|
||||
static const char *get_elf_platform(void)
|
||||
{
|
||||
static char elf_platform[] = "i386";
|
||||
int family = object_property_get_int(OBJECT(thread_cpu), "family", NULL);
|
||||
if (family > 6) {
|
||||
family = 6;
|
||||
}
|
||||
if (family >= 3) {
|
||||
elf_platform[1] = '0' + family;
|
||||
}
|
||||
return elf_platform;
|
||||
}
|
||||
|
||||
static inline void init_thread(struct target_pt_regs *regs,
|
||||
struct image_info *infop)
|
||||
{
|
||||
|
||||
@@ -14,3 +14,16 @@ abi_ulong get_elf_hwcap(CPUState *cs)
|
||||
{
|
||||
return cpu_env(cs)->features[FEAT_1_EDX];
|
||||
}
|
||||
|
||||
const char *get_elf_platform(CPUState *cs)
|
||||
{
|
||||
static char elf_platform[] = "i386";
|
||||
int family = object_property_get_int(OBJECT(cs), "family", NULL);
|
||||
if (family > 6) {
|
||||
family = 6;
|
||||
}
|
||||
if (family >= 3) {
|
||||
elf_platform[1] = '0' + family;
|
||||
}
|
||||
return elf_platform;
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@
|
||||
#define I386_TARGET_ELF_H
|
||||
|
||||
#define HAVE_ELF_HWCAP 1
|
||||
#define HAVE_ELF_PLATFORM 1
|
||||
|
||||
#endif
|
||||
|
||||
@@ -105,5 +105,8 @@ abi_ulong get_elf_hwcap(CPUState *cs);
|
||||
abi_ulong get_elf_hwcap2(CPUState *cs);
|
||||
const char *elf_hwcap_str(uint32_t bit);
|
||||
const char *elf_hwcap2_str(uint32_t bit);
|
||||
#if defined(TARGET_I386)
|
||||
const char *get_elf_platform(CPUState *cs);
|
||||
#endif
|
||||
|
||||
#endif /* LINUX_USER_LOADER_H */
|
||||
|
||||
@@ -14,3 +14,8 @@ abi_ulong get_elf_hwcap(CPUState *cs)
|
||||
{
|
||||
return cpu_env(cs)->features[FEAT_1_EDX];
|
||||
}
|
||||
|
||||
const char *get_elf_platform(CPUState *cs)
|
||||
{
|
||||
return "x86_64";
|
||||
}
|
||||
|
||||
@@ -9,5 +9,6 @@
|
||||
#define X86_64_TARGET_ELF_H
|
||||
|
||||
#define HAVE_ELF_HWCAP 1
|
||||
#define HAVE_ELF_PLATFORM 1
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user