| @@ -20,12 +20,14 @@ · 19 unmodified lines |
| 20 | #define X86_CENTAUR_FAM6_C7_D 0xd | 20 | #define X86_CENTAUR_FAM6_C7_D 0xd |
| 21 | #define X86_CENTAUR_FAM6_NANO 0xf | 21 | #define X86_CENTAUR_FAM6_NANO 0xf |
| 22 | | 22 | |
| | 23 | #define X86_STEPPINGS(mins, maxs) GENMASK(maxs, mins) |
| 23 | /** | 24 | /** |
| 24 | * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Base macro for CPU matching | 25 | * X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE - Base macro for CPU matching |
| 25 | * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY | 26 | * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY |
| 26 | * The name is expanded to X86_VENDOR_@_vendor | 27 | * The name is expanded to X86_VENDOR_@_vendor |
| 27 | * @_family: The family number or X86_FAMILY_ANY | 28 | * @_family: The family number or X86_FAMILY_ANY |
| 28 | * @_model: The model number, model constant or X86_MODEL_ANY | 29 | * @_model: The model number, model constant or X86_MODEL_ANY |
| | 30 | * @_steppings: Bitmask for steppings, stepping constant or X86_STEPPING_ANY |
| 29 | * @_feature: A X86_FEATURE bit or X86_FEATURE_ANY | 31 | * @_feature: A X86_FEATURE bit or X86_FEATURE_ANY |
| 30 | * @_data: Driver specific data or NULL. The internal storage | 32 | * @_data: Driver specific data or NULL. The internal storage |
| 31 | * format is unsigned long. The supplied value, pointer | 33 | * format is unsigned long. The supplied value, pointer |
| @@ -37,15 +39,34 @@ · 5 unmodified lines |
| 37 | * into another macro at the usage site for good reasons, then please | 39 | * into another macro at the usage site for good reasons, then please |
| 38 | * start this local macro with X86_MATCH to allow easy grepping. | 40 | * start this local macro with X86_MATCH to allow easy grepping. |
| 39 | */ | 41 | */ |
| 40 | #define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(_vendor, _family, _model, \ | 42 | #define X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(_vendor, _family, _model, \ |
| 41 | _feature, _data) { \ | 43 | _steppings, _feature, _data) { \ |
| 42 | .vendor = X86_VENDOR_##_vendor, \ | 44 | .vendor = X86_VENDOR_##_vendor, \ |
| 43 | .family = _family, \ | 45 | .family = _family, \ |
| 44 | .model = _model, \ | 46 | .model = _model, \ |
| | 47 | .steppings = _steppings, \ |
| 45 | .feature = _feature, \ | 48 | .feature = _feature, \ |
| 46 | .driver_data = (unsigned long) _data \ | 49 | .driver_data = (unsigned long) _data \ |
| 47 | } | 50 | } |
| 48 | | 51 | |
| | 52 | /** |
| | 53 | * X86_MATCH_VENDOR_FAM_MODEL_FEATURE - Macro for CPU matching |
| | 54 | * @_vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY |
| | 55 | * The name is expanded to X86_VENDOR_@_vendor |
| | 56 | * @_family: The family number or X86_FAMILY_ANY |
| | 57 | * @_model: The model number, model constant or X86_MODEL_ANY |
| | 58 | * @_feature: A X86_FEATURE bit or X86_FEATURE_ANY |
| | 59 | * @_data: Driver specific data or NULL. The internal storage |
| | 60 | * format is unsigned long. The supplied value, pointer |
| | 61 | * etc. is casted to unsigned long internally. |
| | 62 | * |
| | 63 | * The steppings arguments of X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE() is |
| | 64 | * set to wildcards. |
| | 65 | */ |
| | 66 | #define X86_MATCH_VENDOR_FAM_MODEL_FEATURE(vendor, family, model, feature, data) \ |
| | 67 | X86_MATCH_VENDOR_FAM_MODEL_STEPPINGS_FEATURE(vendor, family, model, \ |
| | 68 | X86_STEPPING_ANY, feature, data) |
| | 69 | |
| 49 | /** | 70 | /** |
| 50 | * X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature | 71 | * X86_MATCH_VENDOR_FAM_FEATURE - Macro for matching vendor, family and CPU feature |
| 51 | * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY | 72 | * @vendor: The vendor name, e.g. INTEL, AMD, HYGON, ..., ANY |