[coreboot-gerrit] Change in coreboot[master]: ifdtool: redesign some structures
Bill XIE (Code Review)
gerrit at coreboot.org
Tue Sep 12 10:19:15 CEST 2017
Bill XIE has uploaded this change for review. ( https://review.coreboot.org/21510
Change subject: ifdtool: redesign some structures
......................................................................
ifdtool: redesign some structures
Redesign some array-like structures as true arrays,
and rewrite functions to dump them as loops.
This commit is one separated from the original I6d05418c.
Change-Id: I161c9a2ae83d26e658d67d0804e943fff95fe076
Signed-off-by: Bill XIE <persmule at gmail.com>
---
M util/ifdtool/Makefile
M util/ifdtool/ifdtool.c
M util/ifdtool/ifdtool.h
3 files changed, 21 insertions(+), 120 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/10/21510/1
diff --git a/util/ifdtool/Makefile b/util/ifdtool/Makefile
index 77547ef..936aa50 100644
--- a/util/ifdtool/Makefile
+++ b/util/ifdtool/Makefile
@@ -18,7 +18,7 @@
CC = gcc
INSTALL = /usr/bin/install
PREFIX = /usr/local
-CFLAGS = -O2 -g -Wall -W -Werror
+CFLAGS = -O2 -g -Wall -W -Werror -I../../src/commonlib/include
LDFLAGS =
OBJS = ifdtool.o
diff --git a/util/ifdtool/ifdtool.c b/util/ifdtool/ifdtool.c
index 03b28f4..f6524c9 100644
--- a/util/ifdtool/ifdtool.c
+++ b/util/ifdtool/ifdtool.c
@@ -21,6 +21,7 @@
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <commonlib/helpers.h>
#include "ifdtool.h"
#ifndef O_BINARY
@@ -106,7 +107,6 @@
int base_mask;
int limit_mask;
uint32_t flreg;
- const void *v;
region_t region;
if (ifd_version >= IFD_VERSION_2)
@@ -116,40 +116,12 @@
limit_mask = base_mask << 16;
- switch (region_type) {
- case 0:
- v = &frba->flreg0;
- break;
- case 1:
- v = &frba->flreg1;
- break;
- case 2:
- v = &frba->flreg2;
- break;
- case 3:
- v = &frba->flreg3;
- break;
- case 4:
- v = &frba->flreg4;
- break;
- case 5:
- v = &frba->flreg5;
- break;
- case 6:
- v = &frba->flreg6;
- break;
- case 7:
- v = &frba->flreg7;
- break;
- case 8:
- v = &frba->flreg8;
- break;
- default:
+ if (region_type >= MAX_REGIONS) {
fprintf(stderr, "Invalid region type %d.\n", region_type);
exit (EXIT_FAILURE);
}
- memmove(&flreg, v, sizeof(flreg));
+ flreg = frba->flreg[region_type];
region.base = (flreg & base_mask) << 12;
region.limit = ((flreg & limit_mask) >> 4) | 0xfff;
region.size = region.limit - region.base + 1;
@@ -163,31 +135,14 @@
static void set_region(frba_t *frba, unsigned int region_type,
const region_t *region)
{
- switch (region_type) {
- case 0:
- frba->flreg0 = (((region->limit >> 12) & 0x7fff) << 16)
- | ((region->base >> 12) & 0x7fff);
- break;
- case 1:
- frba->flreg1 = (((region->limit >> 12) & 0x7fff) << 16)
- | ((region->base >> 12) & 0x7fff);
- break;
- case 2:
- frba->flreg2 = (((region->limit >> 12) & 0x7fff) << 16)
- | ((region->base >> 12) & 0x7fff);
- break;
- case 3:
- frba->flreg3 = (((region->limit >> 12) & 0x7fff) << 16)
- | ((region->base >> 12) & 0x7fff);
- break;
- case 4:
- frba->flreg4 = (((region->limit >> 12) & 0x7fff) << 16)
- | ((region->base >> 12) & 0x7fff);
- break;
- default:
- fprintf(stderr, "Invalid region type.\n");
+ if (region_type >= MAX_REGIONS_OLD) {
+ fprintf(stderr, "Invalid region type %d.\n", region_type);
exit (EXIT_FAILURE);
}
+
+ frba->flreg[region_type] =
+ (((region->limit >> 12) & 0x7fff) << 16) |
+ ((region->base >> 12) & 0x7fff);
}
static const char *region_name(unsigned int region_type)
@@ -252,27 +207,11 @@
static void dump_frba(const frba_t *frba)
{
+ unsigned int i;
printf("Found Region Section\n");
- printf("FLREG0: 0x%08x\n", frba->flreg0);
- dump_region(0, frba);
- printf("FLREG1: 0x%08x\n", frba->flreg1);
- dump_region(1, frba);
- printf("FLREG2: 0x%08x\n", frba->flreg2);
- dump_region(2, frba);
- printf("FLREG3: 0x%08x\n", frba->flreg3);
- dump_region(3, frba);
- printf("FLREG4: 0x%08x\n", frba->flreg4);
- dump_region(4, frba);
-
- if (ifd_version >= IFD_VERSION_2) {
- printf("FLREG5: 0x%08x\n", frba->flreg5);
- dump_region(5, frba);
- printf("FLREG6: 0x%08x\n", frba->flreg6);
- dump_region(6, frba);
- printf("FLREG7: 0x%08x\n", frba->flreg7);
- dump_region(7, frba);
- printf("FLREG8: 0x%08x\n", frba->flreg8);
- dump_region(8, frba);
+ for (i = 0; i < max_regions; i++) {
+ printf("FLREG%u: 0x%08x\n", i, frba->flreg[i]);
+ dump_region(i, frba);
}
}
@@ -419,25 +358,11 @@
static void dump_fpsba(const fpsba_t *fpsba)
{
+ unsigned int i;
printf("Found PCH Strap Section\n");
- printf("PCHSTRP0: 0x%08x\n", fpsba->pchstrp0);
- printf("PCHSTRP1: 0x%08x\n", fpsba->pchstrp1);
- printf("PCHSTRP2: 0x%08x\n", fpsba->pchstrp2);
- printf("PCHSTRP3: 0x%08x\n", fpsba->pchstrp3);
- printf("PCHSTRP4: 0x%08x\n", fpsba->pchstrp4);
- printf("PCHSTRP5: 0x%08x\n", fpsba->pchstrp5);
- printf("PCHSTRP6: 0x%08x\n", fpsba->pchstrp6);
- printf("PCHSTRP7: 0x%08x\n", fpsba->pchstrp7);
- printf("PCHSTRP8: 0x%08x\n", fpsba->pchstrp8);
- printf("PCHSTRP9: 0x%08x\n", fpsba->pchstrp9);
- printf("PCHSTRP10: 0x%08x\n", fpsba->pchstrp10);
- printf("PCHSTRP11: 0x%08x\n", fpsba->pchstrp11);
- printf("PCHSTRP12: 0x%08x\n", fpsba->pchstrp12);
- printf("PCHSTRP13: 0x%08x\n", fpsba->pchstrp13);
- printf("PCHSTRP14: 0x%08x\n", fpsba->pchstrp14);
- printf("PCHSTRP15: 0x%08x\n", fpsba->pchstrp15);
- printf("PCHSTRP16: 0x%08x\n", fpsba->pchstrp16);
- printf("PCHSTRP17: 0x%08x\n\n", fpsba->pchstrp17);
+ for (i = 0; i < ARRAY_SIZE(fpsba->pchstrp); i++)
+ printf("PCHSTRP%u: 0x%08x\n", i, fpsba->pchstrp[i]);
+ printf("\n");
}
static void decode_flmstr(uint32_t flmstr)
diff --git a/util/ifdtool/ifdtool.h b/util/ifdtool/ifdtool.h
index f50f6be..0cce8e4 100644
--- a/util/ifdtool/ifdtool.h
+++ b/util/ifdtool/ifdtool.h
@@ -60,16 +60,9 @@
// regions
#define MAX_REGIONS 9
#define MAX_REGIONS_OLD 5
+
typedef struct {
- uint32_t flreg0;
- uint32_t flreg1;
- uint32_t flreg2;
- uint32_t flreg3;
- uint32_t flreg4;
- uint32_t flreg5;
- uint32_t flreg6;
- uint32_t flreg7;
- uint32_t flreg8;
+ uint32_t flreg[MAX_REGIONS];
} __attribute__((packed)) frba_t;
// component section
@@ -81,24 +74,7 @@
// pch strap
typedef struct {
- uint32_t pchstrp0;
- uint32_t pchstrp1;
- uint32_t pchstrp2;
- uint32_t pchstrp3;
- uint32_t pchstrp4;
- uint32_t pchstrp5;
- uint32_t pchstrp6;
- uint32_t pchstrp7;
- uint32_t pchstrp8;
- uint32_t pchstrp9;
- uint32_t pchstrp10;
- uint32_t pchstrp11;
- uint32_t pchstrp12;
- uint32_t pchstrp13;
- uint32_t pchstrp14;
- uint32_t pchstrp15;
- uint32_t pchstrp16;
- uint32_t pchstrp17;
+ uint32_t pchstrp[18];
} __attribute__((packed)) fpsba_t;
/*
--
To view, visit https://review.coreboot.org/21510
To unsubscribe, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I161c9a2ae83d26e658d67d0804e943fff95fe076
Gerrit-Change-Number: 21510
Gerrit-PatchSet: 1
Gerrit-Owner: Bill XIE <persmule at gmail.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20170912/9e26ba98/attachment-0001.html>
More information about the coreboot-gerrit
mailing list