Furquan Shaikh has uploaded this change for review. ( https://review.coreboot.org/26805
Change subject: util/sconfig: Get rid of latestchild and next_sibling ......................................................................
util/sconfig: Get rid of latestchild and next_sibling
latestchild and next_sibling members of struct device were primarily used for walking the device tree. Now that we are using breadth-first walk, there is no need for these members. This CL gets rid of latestchild and next_sibling and the functions required to update these pointers during tree parsing i.e. fold_in and postprocess_devtree.
BUG=b:80081934 TEST=Verified that the static.c generated with and without this CL is exactly the same for all boards built using abuild.
Change-Id: I0da64f6f10017c9c36f40b0d915f6dbffca9195e Signed-off-by: Furquan Shaikh furquan@google.com --- M util/sconfig/main.c M util/sconfig/sconfig.h M util/sconfig/sconfig.tab.c_shipped M util/sconfig/sconfig.y 4 files changed, 3 insertions(+), 52 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/05/26805/1
diff --git a/util/sconfig/main.c b/util/sconfig/main.c index 7540fc5..5c32178 100644 --- a/util/sconfig/main.c +++ b/util/sconfig/main.c @@ -191,25 +191,6 @@ return !!d->linkcnt; }
-void fold_in(struct device *parent) -{ - struct device *child; - struct device *latest = 0; - - child = device_has_instance(parent) ? parent->last_instance->children - : parent->children; - - while (child != latest) { - if (child->children) { - if (!latest) - latest = child->children; - parent->latestchild->next_sibling = child->children; - parent->latestchild = child->latestchild; - } - child = child->next_sibling; - } -} - int yywrap(void) { return 1; @@ -222,17 +203,6 @@ exit(1); }
-void postprocess_devtree(void) -{ - root.next_sibling = root.children; - - /* - * Since root is statically created we need to call fold_in explicitly - * here to have the next_sibling and latestchild setup correctly. - */ - fold_in(&root); -} - char *translate_name(const char *str, translate_t mode) { char *b, *c; @@ -427,11 +397,6 @@ if (parent->linkcnt) new_d->linknum = parent->linkcnt - 1;
- if (parent->latestchild) - parent->latestchild->next_sibling = new_d; - - parent->latestchild = new_d; - struct device *c; c = device_has_instance(parent) ? parent->last_instance->children : parent->children; diff --git a/util/sconfig/sconfig.h b/util/sconfig/sconfig.h index e4f2270..2c52d23 100644 --- a/util/sconfig/sconfig.h +++ b/util/sconfig/sconfig.h @@ -109,8 +109,6 @@ int linknum;
struct device *children; - struct device *latestchild; - struct device *next_sibling; struct device *sibling; struct resource *res;
@@ -124,10 +122,6 @@
extern struct device *tree_root;
-void fold_in(struct device *parent); - -void postprocess_devtree(void); - struct device *new_device(struct device *parent, struct chip_instance *chip_instance, const int bustype, const char *devnum, diff --git a/util/sconfig/sconfig.tab.c_shipped b/util/sconfig/sconfig.tab.c_shipped index 152e70d..b9300ce 100644 --- a/util/sconfig/sconfig.tab.c_shipped +++ b/util/sconfig/sconfig.tab.c_shipped @@ -487,8 +487,8 @@ static const yytype_uint8 yyrline[] = { 0, 36, 36, 36, 38, 38, 38, 38, 40, 40, - 40, 40, 40, 40, 42, 42, 51, 51, 60, 63, - 66, 69, 72 + 40, 40, 40, 40, 42, 42, 51, 51, 59, 62, + 65, 68, 71 }; #endif
@@ -1291,12 +1291,6 @@
break;
- case 3: - - { postprocess_devtree(); } - - break; - case 14:
{ @@ -1328,7 +1322,6 @@
{ cur_parent = (yyvsp[-2].device)->parent; - fold_in((yyvsp[-2].device)); }
break; diff --git a/util/sconfig/sconfig.y b/util/sconfig/sconfig.y index 48a727f..4c05a47 100755 --- a/util/sconfig/sconfig.y +++ b/util/sconfig/sconfig.y @@ -33,7 +33,7 @@
%token CHIP DEVICE REGISTER BOOL BUS RESOURCE END EQUALS HEX STRING PCI PNP I2C APIC CPU_CLUSTER CPU DOMAIN IRQ DRQ IO NUMBER SUBSYSTEMID INHERIT IOAPIC_IRQ IOAPIC PCIINT GENERIC SPI USB MMIO %% -devtree: { cur_parent = tree_root; } chip { postprocess_devtree(); } ; +devtree: { cur_parent = tree_root; } chip;
chipchildren: chipchildren device | chipchildren chip | chipchildren registers | /* empty */ ;
@@ -54,7 +54,6 @@ } devicechildren END { cur_parent = $<device>5->parent; - fold_in($<device>5); };
resource: RESOURCE NUMBER /* == resnum */ EQUALS NUMBER /* == resval */