On Tue, Nov 11, 2014 at 9:00 AM, Simon Glass <s...@chromium.org> wrote: > This implementation has a 'cpu' prefix and returns a pointer to the string, > avoiding the need for copying. > > Signed-off-by: Simon Glass <s...@chromium.org> > > --- > > Changes in v2: > - Add new patch to replace fill_processor_name() with cpu_get_name() > > arch/x86/cpu/cpu.c | 22 ++++++++++------------ > arch/x86/include/asm/cpu.h | 11 ++++++++--- > 2 files changed, 18 insertions(+), 15 deletions(-) > > diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c > index a4e639d..0d75941 100644 > --- a/arch/x86/cpu/cpu.c > +++ b/arch/x86/cpu/cpu.c > @@ -491,14 +491,14 @@ const char *cpu_vendor_name(int vendor) > return name; > } > > -void fill_processor_name(char *processor_name) > +char *cpu_get_name(char *name) > { > + unsigned int *name_as_ints = (unsigned int *)name; > struct cpuid_result regs; > - char temp_processor_name[49]; > - char *processor_name_start; > - unsigned int *name_as_ints = (unsigned int *)temp_processor_name; > + char *ptr; > int i; > > + /* This bit adds up to 48 bytes */ > for (i = 0; i < 3; i++) { > regs = cpuid(0x80000002 + i); > name_as_ints[i * 4 + 0] = regs.eax; > @@ -506,19 +506,17 @@ void fill_processor_name(char *processor_name) > name_as_ints[i * 4 + 2] = regs.ecx; > name_as_ints[i * 4 + 3] = regs.edx; > } > - > - temp_processor_name[48] = 0; > + name[CPU_MAX_NAME_LEN - 1] = '\0'; > > /* Skip leading spaces. */ > - processor_name_start = temp_processor_name; > - while (*processor_name_start == ' ') > - processor_name_start++; > + ptr = name; > + while (*ptr == ' ') > + ptr++; > > - memset(processor_name, 0, 49); > - strcpy(processor_name, processor_name_start); > + return ptr; > } > > -int print_cpuinfo(void) > +int default_print_cpuinfo(void) > { > printf("CPU: %s, vendor %s, device %xh\n", > cpu_has_64bit() ? "x86_64" : "x86", > diff --git a/arch/x86/include/asm/cpu.h b/arch/x86/include/asm/cpu.h > index 89b748b..c839291 100644 > --- a/arch/x86/include/asm/cpu.h > +++ b/arch/x86/include/asm/cpu.h > @@ -179,12 +179,17 @@ int cpu_has_64bit(void); > */ > const char *cpu_vendor_name(int vendor); > > +#define CPU_MAX_NAME_LEN 49 > + > /** > - * fill_processor_name() - Get processor name > + * cpu_get_name() - Get the name of the current cpu > * > - * @processor_name: Address to hold the processor name string > + * @name: Place to put name, which must be CPU_MAX_NAME_LEN bytes including > + * @return pointer to name, which will likely be a few bytes after the start > + * of @name > + * \0 terminator > */ > -void fill_processor_name(char *processor_name); > +char *cpu_get_name(char *name); > > /** > * cpu_call64() - Jump to a 64-bit Linux kernel (internal function) > --
Reviewed-by: Bin Meng <bmeng...@gmail.com> _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot