payloads/coreinfo: Use fixed-width integers for cpuid

This function executes the cpuid instruction, which takes a 32 bit input
value (idx), and then stores output in eax, ebx, ecx, and edx, which are
all 32 bit registers. Update the prototype to use fixed-width integers,
and update all usage calls appropriately.

Change-Id: I15876fa35628d3a505864fb49be4fdab1fd19f4a
Signed-off-by: Jacob Garber <jgarber1@ualberta.ca>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/33862
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: HAOUAS Elyes <ehaouas@noos.fr>
This commit is contained in:
Jacob Garber 2019-06-28 10:10:37 -06:00 committed by Martin Roth
parent 598af2e2c2
commit 37bec0b397
2 changed files with 7 additions and 8 deletions

View File

@ -27,8 +27,7 @@ struct coreinfo_module {
int (*handle) (int); int (*handle) (int);
}; };
extern void docpuid(int, unsigned long *, unsigned long *, unsigned long *, extern void docpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx);
unsigned long *);
void print_module_title(WINDOW *win, const char *title); void print_module_title(WINDOW *win, const char *title);

View File

@ -85,7 +85,7 @@ static const char *amd_cap_extended_ecx_flags[] = {
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
}; };
static unsigned long vendor; static uint32_t vendor;
static unsigned int cpu_khz; static unsigned int cpu_khz;
static void decode_flags(WINDOW *win, unsigned long reg, const char **flags, static void decode_flags(WINDOW *win, unsigned long reg, const char **flags,
@ -114,7 +114,7 @@ static void decode_flags(WINDOW *win, unsigned long reg, const char **flags,
static void get_features(WINDOW *win, int *row) static void get_features(WINDOW *win, int *row)
{ {
unsigned long eax, ebx, ecx, edx; uint32_t eax, ebx, ecx, edx;
int lrow = *row; int lrow = *row;
wmove(win, lrow++, 1); wmove(win, lrow++, 1);
@ -150,12 +150,12 @@ static void get_features(WINDOW *win, int *row)
static void do_name(WINDOW *win, int row) static void do_name(WINDOW *win, int row)
{ {
char name[49], *p; char name[49], *p;
unsigned long eax, ebx, ecx, edx; uint32_t eax, ebx, ecx, edx;
int i, t; int t;
p = name; p = name;
for (i = 0x80000002; i <= 0x80000004; i++) { for (uint32_t i = 0x80000002; i <= 0x80000004; i++) {
docpuid(i, &eax, &ebx, &ecx, &edx); docpuid(i, &eax, &ebx, &ecx, &edx);
if (eax == 0) if (eax == 0)
@ -176,7 +176,7 @@ static void do_name(WINDOW *win, int row)
static int cpuinfo_module_redraw(WINDOW *win) static int cpuinfo_module_redraw(WINDOW *win)
{ {
unsigned long eax, ebx, ecx, edx; uint32_t eax, ebx, ecx, edx;
unsigned int brand; unsigned int brand;
char *vstr; char *vstr;
int row = 2; int row = 2;