linux-user/elfload: Implement ELF_HWCAP for RISC-V
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>
This commit is contained in:
parent
9aef095419
commit
cb46938c45
@ -1434,6 +1434,19 @@ static void elf_core_copy_regs(target_elf_gregset_t *regs,
|
|||||||
#define ELF_CLASS ELFCLASS64
|
#define ELF_CLASS ELFCLASS64
|
||||||
#endif
|
#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,
|
static inline void init_thread(struct target_pt_regs *regs,
|
||||||
struct image_info *infop)
|
struct image_info *infop)
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user