const char *isa;
        char print_str[NUM_ALPHA_EXTS + 1];
        int i, j, rc;
-       static unsigned long isa2hwcap[256] = {0};
+       unsigned long isa2hwcap[26] = {0};
        unsigned long hartid;
 
-       isa2hwcap['i'] = isa2hwcap['I'] = COMPAT_HWCAP_ISA_I;
-       isa2hwcap['m'] = isa2hwcap['M'] = COMPAT_HWCAP_ISA_M;
-       isa2hwcap['a'] = isa2hwcap['A'] = COMPAT_HWCAP_ISA_A;
-       isa2hwcap['f'] = isa2hwcap['F'] = COMPAT_HWCAP_ISA_F;
-       isa2hwcap['d'] = isa2hwcap['D'] = COMPAT_HWCAP_ISA_D;
-       isa2hwcap['c'] = isa2hwcap['C'] = COMPAT_HWCAP_ISA_C;
+       isa2hwcap['i' - 'a'] = COMPAT_HWCAP_ISA_I;
+       isa2hwcap['m' - 'a'] = COMPAT_HWCAP_ISA_M;
+       isa2hwcap['a' - 'a'] = COMPAT_HWCAP_ISA_A;
+       isa2hwcap['f' - 'a'] = COMPAT_HWCAP_ISA_F;
+       isa2hwcap['d' - 'a'] = COMPAT_HWCAP_ISA_D;
+       isa2hwcap['c' - 'a'] = COMPAT_HWCAP_ISA_C;
 
        elf_hwcap = 0;
 
                        if (unlikely(ext_err))
                                continue;
                        if (!ext_long) {
-                               this_hwcap |= isa2hwcap[(unsigned char)(*ext)];
-                               set_bit(*ext - 'a', this_isa);
+                               int nr = *ext - 'a';
+
+                               this_hwcap |= isa2hwcap[nr];
+                               set_bit(nr, this_isa);
                        } else {
                                SET_ISA_EXT_MAP("sscofpmf", RISCV_ISA_EXT_SSCOFPMF);
                                SET_ISA_EXT_MAP("svpbmt", RISCV_ISA_EXT_SVPBMT);