From 258cab878cc651c4d6ee0235b4107dd66a79f5f8 Mon Sep 17 00:00:00 2001 From: Connor Wood Date: Mon, 17 Jul 2017 13:22:06 +0100 Subject: [PATCH] Implemented index references --- src/acpi/aml/namespace.rs | 3 ++- src/acpi/aml/type2opcode.rs | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/acpi/aml/namespace.rs b/src/acpi/aml/namespace.rs index 0332b03..01ffdaf 100644 --- a/src/acpi/aml/namespace.rs +++ b/src/acpi/aml/namespace.rs @@ -28,7 +28,8 @@ pub enum ObjectReference { ArgObj(u8), LocalObj(u8), NamedObj(String), - Object(Box) + Object(Box), + Index(Box, Box) } #[derive(Debug, Clone)] diff --git a/src/acpi/aml/type2opcode.rs b/src/acpi/aml/type2opcode.rs index 52dcae0..c505201 100644 --- a/src/acpi/aml/type2opcode.rs +++ b/src/acpi/aml/type2opcode.rs @@ -353,16 +353,17 @@ fn parse_def_index(data: &[u8], }) } - // TODO: Store the result, if appropriate - // TODO: Perform computation parser_opcode!(data, 0x88); let obj = parse_term_arg(&data[1..], ctx)?; let idx = parse_term_arg(&data[1 + obj.len..], ctx)?; let target = parse_target(&data[1 + obj.len + idx.len..], ctx)?; + + let reference = AmlValue::ObjectReference(ObjectReference::Index(Box::new(obj.val), Box::new(idx.val))); + ctx.modify(target.val, reference.clone()); Ok(AmlParseType { - val: AmlValue::Uninitialized, + val: reference, len: 1 + obj.len + idx.len + target.len }) }