public override void Visit(AmlParser.DefBankField defBankField) { Node operationRegionNode = acpiNamespace.LookupNode(defBankField.regionName.nodePath, currentPath); CheckObjectType(operationRegionNode.Value, AcpiObjectType.OperationRegion); // TODO: BankFields are not used in the test files and appear to involve some kind of // "bank selection register". Need to understand this properly to implement it, but for // leaving unimplemented. Commented out below is some code to use as a starting point. throw new LoadException("BankField unimplemented"); #if false AccessType accessType = defBankField.fieldFlags.accessType; AccessAttrib accessAttrib = AccessAttrib.SMBNone; int bitIndex = 0; foreach (FieldElement fieldElement in defBankField.fieldList) { switch (fieldElement.Tag) { case FieldElement.TagValue.NamedField: AmlParser.NamedField namedField = fieldElement.GetAsNamedField(); Node node = acpiNamespace.LookupNode( new NodePath(false /*isAbsolute*/, 0, new string[] { namedField.nameSeg.data }), currentPath); node.Value = new FieldUnit((AcpiObject.OperationRegion)operationRegionNode.Value, bitIndex, namedField.bitWidth, accessType, accessAttrib, defBankField.fieldFlags.lockRule, defBankField.fieldFlags.updateRule); bitIndex += namedField.bitWidth; break; case FieldElement.TagValue.ReservedField: AmlParser.ReservedField reservedField = fieldElement.GetAsReservedField(); bitIndex += reservedField.bitWidth; break; case FieldElement.TagValue.AccessField: AmlParser.AccessField accessField = fieldElement.GetAsAccessField(); accessType = accessField.accessType; accessAttrib = accessField.accessAttrib; break; default: throw new LoadException("Unhandled alternative in switch over 'FieldElement'"); } } #endif }
public override void Visit(AmlParser.DefBankField defBankField) { foreach (FieldElement fieldElement in defBankField.fieldList) { switch (fieldElement.Tag) { case FieldElement.TagValue.NamedField: AmlParser.NamedField namedField = fieldElement.GetAsNamedField(); Node node = acpiNamespace.CreateNodeAt( new NodePath(false /*isAbsolute*/, 0, new string[] { namedField.nameSeg.data }), currentPath); break; default: break; } } }
public virtual void Visit(AmlParser.DefBankField defBankField) { UnhandledNodeType("DefBankField"); }