Moved BufferFields into namespace

This commit is contained in:
Connor Wood
2017-06-22 12:16:30 +01:00
parent 12e7d1ad4d
commit cef562c832
2 changed files with 95 additions and 1 deletions

View File

@@ -148,6 +148,96 @@ impl AmlExecutable for NamedObj {
}
}
},
NamedObj::DefCreateBitField { ref name, ref source_buf, ref bit_index } => {
let local_scope_string = get_namespace_string(scope.clone(), name.clone());
let resolved_source_buf = match source_buf.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
let resolved_index = match bit_index.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
namespace.insert(local_scope_string, AmlValue::BufferField {
source_buf: resolved_source_buf,
index: resolved_index,
length: 1
});
},
NamedObj::DefCreateByteField { ref name, ref source_buf, ref byte_index } => {
let local_scope_string = get_namespace_string(scope.clone(), name.clone());
let resolved_source_buf = match source_buf.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
let resolved_index = match byte_index.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
namespace.insert(local_scope_string, AmlValue::BufferField {
source_buf: resolved_source_buf,
index: resolved_index,
length: 8
});
},
NamedObj::DefCreateWordField { ref name, ref source_buf, ref byte_index } => {
let local_scope_string = get_namespace_string(scope.clone(), name.clone());
let resolved_source_buf = match source_buf.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
let resolved_index = match byte_index.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
namespace.insert(local_scope_string, AmlValue::BufferField {
source_buf: resolved_source_buf,
index: resolved_index,
length: 16
});
},
NamedObj::DefCreateDWordField { ref name, ref source_buf, ref byte_index } => {
let local_scope_string = get_namespace_string(scope.clone(), name.clone());
let resolved_source_buf = match source_buf.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
let resolved_index = match byte_index.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
namespace.insert(local_scope_string, AmlValue::BufferField {
source_buf: resolved_source_buf,
index: resolved_index,
length: 32
});
},
NamedObj::DefCreateQWordField { ref name, ref source_buf, ref byte_index } => {
let local_scope_string = get_namespace_string(scope.clone(), name.clone());
let resolved_source_buf = match source_buf.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
let resolved_index = match byte_index.execute(namespace, scope.clone()) {
Some(r) => Box::new(r),
_ => return None
};
namespace.insert(local_scope_string, AmlValue::BufferField {
source_buf: resolved_source_buf,
index: resolved_index,
length: 64
});
},
NamedObj::DefOpRegion { ref name, ref region, ref offset, ref len } => {
let local_scope_string = get_namespace_string(scope.clone(), name.clone());

View File

@@ -13,7 +13,11 @@ use super::namestring::SuperName;
pub enum AmlValue {
Uninitialized,
Buffer,
BufferField,
BufferField {
source_buf: Box<AmlValue>,
index: Box<AmlValue>,
length: usize
},
DDBHandle,
DebugObject,
Device(BTreeMap<String, AmlValue>),