|
From: | Richard Henderson |
Subject: | Re: [PATCH v2] linux-user/elfload: Implement ELF_HWCAP for RISC-V |
Date: | Mon, 5 Jul 2021 20:28:52 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 |
On 7/4/21 11:43 PM, Kito Cheng wrote:
+static uint32_t get_elf_hwcap(void) +{ + RISCVCPU *cpu = RISCV_CPU(thread_cpu); + uint32_t hwcap = 0; + +#define MISA_BIT(EXT) (1 << (EXT - 'A')) +#define GET_EXT(EXT) \ + do { \ + if (cpu->env.misa & MISA_BIT(EXT)) { \ + hwcap |= MISA_BIT(EXT); \ + } \ + } while (0) + + GET_EXT('I'); + GET_EXT('M'); + GET_EXT('A'); + GET_EXT('F'); + GET_EXT('D'); + GET_EXT('C');
You're not transforming the bits; there's no reason to be so around-the-bush about this. Just use
uint32_t mask = MISA_BIT('I') | ... return cpu->env.misa & mask; r~
[Prev in Thread] | Current Thread | [Next in Thread] |