mirror of
https://github.com/qemu/qemu.git
synced 2026-02-04 05:35:39 +00:00
linux-user: Move get_elf_hwcap to riscv/elfload.c
Change the return type to abi_ulong, and pass in the cpu. As this is the last instance of get_elf_hwcap to be converted, remove the ifdef around the declaration in loader.h. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
@@ -1099,19 +1099,7 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs,
|
||||
#define VDSO_HEADER "vdso-64.c.inc"
|
||||
#endif
|
||||
|
||||
#define ELF_HWCAP get_elf_hwcap()
|
||||
|
||||
static uint32_t get_elf_hwcap(void)
|
||||
{
|
||||
#define MISA_BIT(EXT) (1 << (EXT - 'A'))
|
||||
RISCVCPU *cpu = RISCV_CPU(thread_cpu);
|
||||
uint32_t mask = MISA_BIT('I') | MISA_BIT('M') | MISA_BIT('A')
|
||||
| MISA_BIT('F') | MISA_BIT('D') | MISA_BIT('C')
|
||||
| MISA_BIT('V');
|
||||
|
||||
return cpu->env.misa_ext & mask;
|
||||
#undef MISA_BIT
|
||||
}
|
||||
#define ELF_HWCAP get_elf_hwcap(thread_cpu)
|
||||
|
||||
static inline void init_thread(struct target_pt_regs *regs,
|
||||
struct image_info *infop)
|
||||
|
||||
@@ -101,13 +101,8 @@ 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) || defined(TARGET_ARM) \
|
||||
|| defined(TARGET_SPARC) || defined(TARGET_PPC) \
|
||||
|| defined(TARGET_LOONGARCH64) || defined(TARGET_MIPS) \
|
||||
|| defined(TARGET_SH4) || defined(TARGET_S390X)
|
||||
abi_ulong get_elf_hwcap(CPUState *cs);
|
||||
abi_ulong get_elf_hwcap2(CPUState *cs);
|
||||
#endif
|
||||
const char *elf_hwcap_str(uint32_t bit);
|
||||
const char *elf_hwcap2_str(uint32_t bit);
|
||||
|
||||
|
||||
@@ -9,3 +9,15 @@ const char *get_elf_cpu_model(uint32_t eflags)
|
||||
{
|
||||
return "max";
|
||||
}
|
||||
|
||||
abi_ulong get_elf_hwcap(CPUState *cs)
|
||||
{
|
||||
#define MISA_BIT(EXT) (1 << (EXT - 'A'))
|
||||
RISCVCPU *cpu = RISCV_CPU(cs);
|
||||
uint32_t mask = MISA_BIT('I') | MISA_BIT('M') | MISA_BIT('A')
|
||||
| MISA_BIT('F') | MISA_BIT('D') | MISA_BIT('C')
|
||||
| MISA_BIT('V');
|
||||
|
||||
return cpu->env.misa_ext & mask;
|
||||
#undef MISA_BIT
|
||||
}
|
||||
|
||||
@@ -8,4 +8,6 @@
|
||||
#ifndef RISCV_TARGET_ELF_H
|
||||
#define RISCV_TARGET_ELF_H
|
||||
|
||||
#define HAVE_ELF_HWCAP 1
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user