[libcpu] Add CPU_FEATURE_WRN

The new CPU_FEATURE_WRN macro in the cpu features list will cause the
kernel to emit a warning but not panic if the feature is missing.
This commit is contained in:
Justin C. Miller
2023-05-01 20:35:12 -06:00
parent 1e2e154747
commit 3b3857548c
5 changed files with 12 additions and 1 deletions

View File

@@ -10,7 +10,9 @@ namespace cpu {
enum class feature {
#define CPU_FEATURE_REQ(name, ...) name,
#define CPU_FEATURE_OPT(name, ...) name,
#define CPU_FEATURE_WRN(name, ...) name,
#include "cpu/features.inc"
#undef CPU_FEATURE_WRN
#undef CPU_FEATURE_OPT
#undef CPU_FEATURE_REQ
max

View File

@@ -33,6 +33,6 @@ CPU_FEATURE_OPT(rdtscp, 0x80000001, 0, edx, 27)
CPU_FEATURE_REQ(syscall, 0x80000001, 0, edx, 11)
CPU_FEATURE_REQ(pdpe1gb, 0x80000001, 0, edx, 26)
CPU_FEATURE_OPT(invtsc, 0x80000007, 0, edx, 8)
CPU_FEATURE_WRN(invtsc, 0x80000007, 0, edx, 8)
// vim: et

View File

@@ -49,12 +49,16 @@ cpu_id::features() const
if (r.regname & (1ull << bit)) \
feats.set(feature::name);
#define CPU_FEATURE_WRN(name, feat_leaf, feat_sub, regname, bit) \
CPU_FEATURE_OPT(name, feat_leaf, feat_sub, regname, bit);
#define CPU_FEATURE_REQ(name, feat_leaf, feat_sub, regname, bit) \
CPU_FEATURE_OPT(name, feat_leaf, feat_sub, regname, bit);
#include "cpu/features.inc"
#undef CPU_FEATURE_OPT
#undef CPU_FEATURE_REQ
#undef CPU_FEATURE_WRN
return feats;
}