Esempio n. 1
0
 public override void Visit(AmlParser.DefVarPackage defVarPackage)
 {
     defVarPackage.varNumElements.integer.Accept(this);
     AcpiObject.AcpiObject numElementsObj = result;
     CheckObjectType(numElementsObj, AcpiObjectType.Integer);
     VisitPackage((byte)(((AcpiObject.Integer)(numElementsObj.GetTarget())).Value),
                  defVarPackage.packageElementList);
 }
Esempio n. 2
0
 public override void Visit(AmlParser.DefCreateField defCreateField)
 {
     AcpiObject.AcpiObject sizeObj = LoadTimeEvaluate(defCreateField.numBits.integer);
     CheckObjectType(sizeObj, AcpiObjectType.Integer);
     VisitField(defCreateField.sourceBuff,
                defCreateField.bitIndex.integer, 1,
                ((AcpiObject.Integer)(sizeObj.GetTarget())).Value,
                defCreateField.nameString.nodePath);
 }
Esempio n. 3
0
            public override void Visit(AmlParser.DefBuffer defBuffer)
            {
                defBuffer.bufferSize.integer.Accept(this);
                AcpiObject.AcpiObject bufferSizeObj = result;
                CheckObjectType(bufferSizeObj, AcpiObjectType.Integer);

                byte[] contents = new byte[((AcpiObject.Integer)(bufferSizeObj.GetTarget())).Value];
                Array.Copy(defBuffer.byteList, contents, defBuffer.byteList.Length);
                result = new AcpiObject.Buffer(contents);
            }
Esempio n. 4
0
            public override void Visit(AmlParser.DefOpRegion defOpRegion)
            {
                AcpiObject.AcpiObject startIndexObj = LoadTimeEvaluate(defOpRegion.regionOffset.integer);
                AcpiObject.AcpiObject lengthObj     = LoadTimeEvaluate(defOpRegion.regionLen.integer);
                CheckObjectType(lengthObj, AcpiObjectType.Integer);

                Node node = acpiNamespace.LookupNode(defOpRegion.nameString.nodePath, currentPath);

                node.Value = new AcpiObject.OperationRegion(loader.OperationRegionAccessor,
                                                            (RegionSpace)defOpRegion.regionSpace.byteData,
                                                            startIndexObj.GetAsInt().Value,
                                                            ((AcpiObject.Integer)(lengthObj.GetTarget())).Value);
            }
Esempio n. 5
0
            public void VisitField(AmlParser.SourceBuff sourceBuff,
                                   TermArg indexTermArg, ulong bitIndexMultiplier,
                                   ulong bitSize,
                                   NodePath fieldName)
            {
                AcpiObject.AcpiObject indexObj = LoadTimeEvaluate(indexTermArg);
                CheckObjectType(indexObj, AcpiObjectType.Integer);

                ulong index    = ((AcpiObject.Integer)(indexObj.GetTarget())).Value;
                ulong bitIndex = index * bitIndexMultiplier;

                AcpiObject.AcpiObject bufferObj = LoadTimeEvaluate(sourceBuff.buffer);
                CheckObjectType(bufferObj, AcpiObjectType.Buffer);

                Node node = acpiNamespace.LookupNode(fieldName, currentPath);

                node.Value = new BufferField((AcpiObject.Buffer)(bufferObj.GetTarget()), bitIndex, bitSize);
            }