summaryrefslogtreecommitdiffstats
path: root/BaseTools/Source/Python
diff options
context:
space:
mode:
authorPierre Gondois <pierre.gondois@arm.com>2020-07-29 13:25:05 +0100
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>2020-08-13 18:00:06 +0000
commitbcab901b7cc3b433bca5779a770ba3edbc7153f4 (patch)
treea88a884c1e3e64eadb1d30c976e4fe2ad1a60f05 /BaseTools/Source/Python
parent98f2808115d0635c6bfd6019ccacbe7c1dd5a5f7 (diff)
downloadedk2-bcab901b7cc3b433bca5779a770ba3edbc7153f4.tar.gz
edk2-bcab901b7cc3b433bca5779a770ba3edbc7153f4.tar.bz2
edk2-bcab901b7cc3b433bca5779a770ba3edbc7153f4.zip
DynamicTablesPkg: AML node definitions
AML has a complex grammar, and this makes runtime modifications on an AML byte stream difficult. A solution is to parse the AML bytecode and represent it in a tree data structure, henceforth called the AML tree. The AML tree is composite in the sense it has the following node types: - A 'Root node' that represents the root of the AML tree. - An 'Object node' that contains the OP Code (AML Encoding). - A 'Data node' that contains a data buffer. The Root node contains the Definition block header (ACPI header) and a Variable Argument list. The Object node is composed of an array of Fixed Arguments and a Variable Argument list. Fixed arguments can be either Object Nodes or Data nodes. Their placement (index) in the Fixed Argument array is defined by the AML encoding of the enclosing Object Node. Variable arguments can be Object nodes or Data nodes. Following is a depiction of a typical AML tree: (/) # Root Node \ |-{(N1)->...} # Variable Argument list, N1 is \ # an Object Node \ /-i # Child of fixed argument b \ / |- [a][b][c][d] # Fixed Arguments |- {(e)->(f)->(g)} # Variable Arguments \ \-h # Child of variable argument e Signed-off-by: Pierre Gondois <pierre.gondois@arm.com> Signed-off-by: Sami Mujawar <sami.mujawar@arm.com> Reviewed-by: Alexei Fedorov <Alexei.Fedorov@arm.com>
Diffstat (limited to 'BaseTools/Source/Python')
0 files changed, 0 insertions, 0 deletions