mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
x86: Allow multiple cpu feature matches of lookup_feature
kvmclock is represented by two feature bits. Therefore, lookup_feature needs to continue its search even after the first match. Enhance it accordingly and switch to a bool return type at this chance. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
0c31b744f6
commit
e41e0fc61a
1 changed files with 8 additions and 6 deletions
|
@ -182,20 +182,22 @@ static int altcmp(const char *s, const char *e, const char *altstr)
|
|||
}
|
||||
|
||||
/* search featureset for flag *[s..e), if found set corresponding bit in
|
||||
* *pval and return success, otherwise return zero
|
||||
* *pval and return true, otherwise return false
|
||||
*/
|
||||
static int lookup_feature(uint32_t *pval, const char *s, const char *e,
|
||||
const char **featureset)
|
||||
static bool lookup_feature(uint32_t *pval, const char *s, const char *e,
|
||||
const char **featureset)
|
||||
{
|
||||
uint32_t mask;
|
||||
const char **ppc;
|
||||
bool found = false;
|
||||
|
||||
for (mask = 1, ppc = featureset; mask; mask <<= 1, ++ppc)
|
||||
for (mask = 1, ppc = featureset; mask; mask <<= 1, ++ppc) {
|
||||
if (*ppc && !altcmp(s, e, *ppc)) {
|
||||
*pval |= mask;
|
||||
break;
|
||||
found = true;
|
||||
}
|
||||
return (mask ? 1 : 0);
|
||||
}
|
||||
return found;
|
||||
}
|
||||
|
||||
static void add_flagname_to_bitmaps(const char *flagname, uint32_t *features,
|
||||
|
|
Loading…
Reference in a new issue