Skip to content

Commit

Permalink
linux-user/elfload: Implement ELF_HWCAP for RISC-V
Browse files Browse the repository at this point in the history
Set I, M, A, F, D and C bit for hwcap if misa is set.

Signed-off-by: Kito Cheng <kito.cheng@sifive.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20210706035015.122899-1-kito.cheng@sifive.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
  • Loading branch information
kito-cheng authored and vivier committed Jul 7, 2021
1 parent 9aef095 commit cb46938
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions linux-user/elfload.c
Expand Up @@ -1434,6 +1434,19 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs,
#define ELF_CLASS ELFCLASS64
#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');

return cpu->env.misa & mask;
#undef MISA_BIT
}

static inline void init_thread(struct target_pt_regs *regs,
struct image_info *infop)
{
Expand Down

0 comments on commit cb46938

Please sign in to comment.