diff --git a/src/acpi/aml/type2opcode.rs b/src/acpi/aml/type2opcode.rs index 1d235d4..665f1b8 100644 --- a/src/acpi/aml/type2opcode.rs +++ b/src/acpi/aml/type2opcode.rs @@ -782,13 +782,20 @@ fn parse_def_size_of(data: &[u8], }) } - // TODO: Perform the computation parser_opcode!(data, 0x87); let name = parse_super_name(&data[1..], ctx)?; + let obj = ctx.get(name.val); + + let res = match obj { + AmlValue::Buffer(ref v) => v.len(), + AmlValue::String(ref s) => s.len(), + AmlValue::Package(ref p) => p.len(), + _ => return Err(AmlError::AmlValueError) + }; Ok(AmlParseType { - val: AmlValue::Uninitialized, + val: AmlValue::Integer(res as u64), len: 1 + name.len }) }