diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2016-12-09 16:23:23 +1100 |
---|---|---|
committer | David Gibson <david@gibson.dropbear.id.au> | 2016-12-09 16:23:23 +1100 |
commit | 1ef86ad2c24f67567b1021ca5cb84bea82749f88 (patch) | |
tree | 729ca74cef750836d02c156f0375be1d09bb6751 /dtc-parser.y | |
parent | e3c769aa9c16e7b94051c5eaae6635e79ac19385 (diff) | |
download | dtc-1ef86ad2c24f67567b1021ca5cb84bea82749f88.zip dtc-1ef86ad2c24f67567b1021ca5cb84bea82749f88.tar.gz dtc-1ef86ad2c24f67567b1021ca5cb84bea82749f88.tar.bz2 |
dtc: Clean up /dts-v1/ and /plugin/ handling in grammar
First remove the non-terminal name 'versioninfo' - /plugin/ doesn't really
indicate a "version" per se, and version could be confused with the dtb
output version.
Second allow the /dts-v1/; /plugin/; sequence to be repeated, for easier
use of include files - but ensure that all copies match, so you can't
include a file declaring /plugin/ in one that doesn't, or vice versa.
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'dtc-parser.y')
-rw-r--r-- | dtc-parser.y | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/dtc-parser.y b/dtc-parser.y index 27d358f..761ce8a 100644 --- a/dtc-parser.y +++ b/dtc-parser.y @@ -74,8 +74,8 @@ extern bool treesource_error; %type <data> propdata %type <data> propdataprefix -%type <flags> versioninfo -%type <flags> plugindecl +%type <flags> header +%type <flags> headers %type <re> memreserve %type <re> memreserves %type <array> arrayprefix @@ -106,32 +106,31 @@ extern bool treesource_error; %% sourcefile: - versioninfo plugindecl memreserves devicetree + headers memreserves devicetree { - the_boot_info = build_boot_info($1 | $2, $3, $4, - guess_boot_cpuid($4)); + the_boot_info = build_boot_info($1, $2, $3, + guess_boot_cpuid($3)); } ; -versioninfo: - v1tag +header: + DT_V1 ';' { $$ = DTSF_V1; } - ; - -v1tag: - DT_V1 ';' - | DT_V1 ';' v1tag - -plugindecl: - DT_PLUGIN ';' + | DT_V1 ';' DT_PLUGIN ';' { - $$ = DTSF_PLUGIN; + $$ = DTSF_V1 | DTSF_PLUGIN; } - | /* empty */ + ; + +headers: + header + | header headers { - $$ = 0; + if ($2 != $1) + ERROR(&@2, "Header flags don't match earlier ones"); + $$ = $1; } ; |