@@ -891,3 +891,21 @@ Aml *aml_qword_memory(AmlDecode dec, AmlMinFixed min_fixed,
dec, addr_gran, addr_min, addr_max,
addr_trans, len, flags);
}
+
+Aml *aml_memory32_fixed(AmlReadAndWrite read_and_write,
+ uint32_t addr_base, uint32_t addr_len)
+{
+ Aml *var = aml_alloc();
+
+ /* 32-bit Fixed Memory Range Descriptor */
+ build_append_byte(var->buf, 0x86);
+ /* minimum length since we do not encode optional fields */
+ build_append_byte(var->buf, 0x9);
+ build_append_byte(var->buf, 0x0);
+
+ build_append_byte(var->buf, !!read_and_write & 1);
+ build_append_int_noprefix(var->buf, addr_base, sizeof(addr_base));
+ build_append_int_noprefix(var->buf, addr_len, sizeof(addr_len));
+
+ return var;
+}
@@ -177,6 +177,9 @@ Aml *aml_qword_memory(AmlDecode dec, AmlMinFixed min_fixed,
uint64_t addr_max, uint64_t addr_trans,
uint64_t len);
+Aml *aml_memory32_fixed(AmlReadAndWrite read_and_write,
+ uint32_t addr_base, uint32_t addr_len);
+
/* Block AML object primitives */
Aml *aml_scope(const char *name_format, ...) GCC_FMT_ATTR(1, 2);
Aml *aml_device(const char *name_format, ...) GCC_FMT_ATTR(1, 2);
Signed-off-by: Gal Hammer <ghammer@redhat.com> --- hw/acpi/aml-build.c | 18 ++++++++++++++++++ include/hw/acpi/aml-build.h | 3 +++ 2 files changed, 21 insertions(+)