linux-user: Move get_elf_hwcap to {i386,x86_64}/elfload.c

Change the return type to abi_ulong, and pass in the cpu.
Duplicate the one line function between i386 and x86_64,
as most other additions to elfload.c won't be common.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson
2025-08-28 06:39:25 +10:00
parent af880af8d4
commit 3947653894
6 changed files with 18 additions and 8 deletions
+1 -8
View File
@@ -148,14 +148,7 @@ typedef abi_int target_pid_t;
#ifdef TARGET_I386
#define ELF_HWCAP get_elf_hwcap()
static uint32_t get_elf_hwcap(void)
{
X86CPU *cpu = X86_CPU(thread_cpu);
return cpu->env.features[FEAT_1_EDX];
}
#define ELF_HWCAP get_elf_hwcap(thread_cpu)
#ifdef TARGET_X86_64
#define ELF_CLASS ELFCLASS64
+5
View File
@@ -9,3 +9,8 @@ const char *get_elf_cpu_model(uint32_t eflags)
{
return "max";
}
abi_ulong get_elf_hwcap(CPUState *cs)
{
return cpu_env(cs)->features[FEAT_1_EDX];
}
+2
View File
@@ -8,4 +8,6 @@
#ifndef I386_TARGET_ELF_H
#define I386_TARGET_ELF_H
#define HAVE_ELF_HWCAP 1
#endif
+3
View File
@@ -101,6 +101,9 @@ extern unsigned long guest_stack_size;
/* Note that Elf32 and Elf64 use uint32_t for e_flags. */
const char *get_elf_cpu_model(uint32_t eflags);
#if defined(TARGET_I386) || defined(TARGET_X86_64)
abi_ulong get_elf_hwcap(CPUState *cs);
#endif
#if defined(TARGET_S390X) || defined(TARGET_AARCH64) || defined(TARGET_ARM)
uint32_t get_elf_hwcap(void);
const char *elf_hwcap_str(uint32_t bit);
+5
View File
@@ -9,3 +9,8 @@ const char *get_elf_cpu_model(uint32_t eflags)
{
return "max";
}
abi_ulong get_elf_hwcap(CPUState *cs)
{
return cpu_env(cs)->features[FEAT_1_EDX];
}
+2
View File
@@ -8,4 +8,6 @@
#ifndef X86_64_TARGET_ELF_H
#define X86_64_TARGET_ELF_H
#define HAVE_ELF_HWCAP 1
#endif