diff options
Diffstat (limited to 'scripts/mod/file2alias.c')
| -rw-r--r-- | scripts/mod/file2alias.c | 25 | 
1 files changed, 25 insertions, 0 deletions
| diff --git a/scripts/mod/file2alias.c b/scripts/mod/file2alias.c index b89efe6e4c8..8e730ccc3f2 100644 --- a/scripts/mod/file2alias.c +++ b/scripts/mod/file2alias.c @@ -1029,6 +1029,31 @@ static int do_amba_entry(const char *filename,  }  ADD_TO_DEVTABLE("amba", struct amba_id, do_amba_entry); +/* LOOKS like x86cpu:vendor:VVVV:family:FFFF:model:MMMM:feature:*,FEAT,* + * All fields are numbers. It would be nicer to use strings for vendor + * and feature, but getting those out of the build system here is too + * complicated. + */ + +static int do_x86cpu_entry(const char *filename, struct x86_cpu_id *id, +			   char *alias) +{ +	id->feature = TO_NATIVE(id->feature); +	id->family = TO_NATIVE(id->family); +	id->model = TO_NATIVE(id->model); +	id->vendor = TO_NATIVE(id->vendor); + +	strcpy(alias, "x86cpu:"); +	ADD(alias, "vendor:",  id->vendor != X86_VENDOR_ANY, id->vendor); +	ADD(alias, ":family:", id->family != X86_FAMILY_ANY, id->family); +	ADD(alias, ":model:",  id->model  != X86_MODEL_ANY,  id->model); +	strcat(alias, ":feature:*"); +	if (id->feature != X86_FEATURE_ANY) +		sprintf(alias + strlen(alias), "%04X*", id->feature); +	return 1; +} +ADD_TO_DEVTABLE("x86cpu", struct x86_cpu_id, do_x86cpu_entry); +  /* Does namelen bytes of name exactly match the symbol? */  static bool sym_is(const char *name, unsigned namelen, const char *symbol)  { | 
