|
@@ -372,10 +372,13 @@ where
|
|
|
.then(name_string())
|
|
|
.map_with_context(|(length, name), context| {
|
|
|
let resolved_name = try_with_context!(context, name.clone().resolve(&context.current_scope));
|
|
|
- try_with_context!(context, context.namespace.add_level(resolved_name, LevelType::Device));
|
|
|
+ try_with_context!(
|
|
|
+ context,
|
|
|
+ context.namespace.add_level(resolved_name.clone(), LevelType::Device)
|
|
|
+ );
|
|
|
|
|
|
let previous_scope = context.current_scope.clone();
|
|
|
- context.current_scope = try_with_context!(context, name.resolve(&context.current_scope));
|
|
|
+ context.current_scope = resolved_name;
|
|
|
|
|
|
(Ok((length, previous_scope)), context)
|
|
|
})
|
|
@@ -408,16 +411,24 @@ where
|
|
|
.then(take_u32())
|
|
|
.then(take())
|
|
|
.map_with_context(|((((pkg_length, name), proc_id), pblk_address), pblk_len), context| {
|
|
|
+ /*
|
|
|
+ * Legacy `Processor` objects contain data within themselves, and can also have sub-objects,
|
|
|
+ * so we add both a level for the sub-objects, and a value for the data.
|
|
|
+ */
|
|
|
+ let resolved_name = try_with_context!(context, name.resolve(&context.current_scope));
|
|
|
try_with_context!(
|
|
|
context,
|
|
|
- context.namespace.add_value_at_resolved_path(
|
|
|
- name.clone(),
|
|
|
- &context.current_scope,
|
|
|
+ context.namespace.add_level(resolved_name.clone(), LevelType::Processor)
|
|
|
+ );
|
|
|
+ try_with_context!(
|
|
|
+ context,
|
|
|
+ context.namespace.add_value(
|
|
|
+ resolved_name.clone(),
|
|
|
AmlValue::Processor { id: proc_id, pblk_address, pblk_len }
|
|
|
)
|
|
|
);
|
|
|
let previous_scope = context.current_scope.clone();
|
|
|
- context.current_scope = try_with_context!(context, name.resolve(&context.current_scope));
|
|
|
+ context.current_scope = resolved_name;
|
|
|
|
|
|
(Ok((previous_scope, pkg_length)), context)
|
|
|
})
|