From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60857) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y1mus-0001ui-BW for qemu-devel@nongnu.org; Thu, 18 Dec 2014 21:03:48 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y1mum-0002y1-5x for qemu-devel@nongnu.org; Thu, 18 Dec 2014 21:03:42 -0500 Received: from mx1.redhat.com ([209.132.183.28]:36356) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y1mul-0002xx-UK for qemu-devel@nongnu.org; Thu, 18 Dec 2014 21:03:36 -0500 From: Igor Mammedov Date: Fri, 19 Dec 2014 02:02:26 +0000 Message-Id: <1418954562-13716-32-git-send-email-imammedo@redhat.com> In-Reply-To: <1418954562-13716-1-git-send-email-imammedo@redhat.com> References: <1418954562-13716-1-git-send-email-imammedo@redhat.com> Subject: [Qemu-devel] [RFC 31/47] acpi: add acpi_processor() term List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, drjones@redhat.com, claudio.fontana@huawei.com, mst@redhat.com Signed-off-by: Igor Mammedov --- hw/acpi/acpi_gen_utils.c | 20 ++++++++++++++++++++ include/hw/acpi/acpi_gen_utils.h | 3 +++ 2 files changed, 23 insertions(+) diff --git a/hw/acpi/acpi_gen_utils.c b/hw/acpi/acpi_gen_utils.c index 2de1ea6..4606d1e 100644 --- a/hw/acpi/acpi_gen_utils.c +++ b/hw/acpi/acpi_gen_utils.c @@ -613,3 +613,23 @@ AcpiAml acpi_varpackage(uint32_t num_elements) build_append_int(var.buf, num_elements); return var; } + +/* ACPI 5.0: 20.2.5.2 Named Objects Encoding: DefProcessor */ +AcpiAml GCC_FMT_ATTR(4, 5) +acpi_processor(uint8_t proc_id, uint32_t pblk_addr, uint8_t pblk_len, + const char *name_format, ...) +{ + va_list ap; + AcpiAml var = aml_allocate_internal(0x83 /* ProcessorOp */, EXT_PACKAGE); + va_start(ap, name_format); + build_append_namestringv(var.buf, name_format, ap); + va_end(ap); + build_append_byte(var.buf, proc_id); /* ProcID */ + /* PblkAddr */ + build_append_byte(var.buf, pblk_addr & 0xFF); + build_append_byte(var.buf, (pblk_addr >> 8) & 0xFF); + build_append_byte(var.buf, (pblk_addr >> 16) & 0xFF); + build_append_byte(var.buf, (pblk_addr >> 24) & 0xFF); + build_append_byte(var.buf, pblk_len); /* PblkLen */ + return var; +} diff --git a/include/hw/acpi/acpi_gen_utils.h b/include/hw/acpi/acpi_gen_utils.h index 76b8d9f..753171f 100644 --- a/include/hw/acpi/acpi_gen_utils.h +++ b/include/hw/acpi/acpi_gen_utils.h @@ -61,6 +61,9 @@ AcpiAml acpi_named_field(const char *name, unsigned length); AcpiAml GCC_FMT_ATTR(1, 2) acpi_string(const char *name_format, ...); AcpiAml acpi_local0(void); AcpiAml acpi_equal(AcpiAml arg1, AcpiAml arg2); +AcpiAml GCC_FMT_ATTR(4, 5) +acpi_processor(uint8_t proc_id, uint32_t pblk_addr, uint8_t pblk_len, + const char *name_format, ...); /* Block ASL object primitives */ AcpiAml acpi_if(AcpiAml predicate); -- 1.8.3.1