From patchwork Tue Jan 16 23:22:26 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 861946 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="DS2pC9IM"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zLmgQ2j6vz9ryk for ; Wed, 17 Jan 2018 10:30:58 +1100 (AEDT) Received: from localhost ([::1]:45551 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebagy-0006xV-Ev for incoming@patchwork.ozlabs.org; Tue, 16 Jan 2018 18:30:56 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60842) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ebadD-0004Hn-Nq for qemu-devel@nongnu.org; Tue, 16 Jan 2018 18:27:04 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ebadC-00025u-Jj for qemu-devel@nongnu.org; Tue, 16 Jan 2018 18:27:03 -0500 Received: from mail-dm3nam03on0070.outbound.protection.outlook.com ([104.47.41.70]:55712 helo=NAM03-DM3-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ebad7-00022d-GL; Tue, 16 Jan 2018 18:26:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=DFLERS8qygjQ39/GrQ7OycQfe4LsWetSMgLos3LKq4w=; b=DS2pC9IMSaWIeE1eEvMrWZxrejB8jyKBOZh1/3nJMBaeWKA2kJuPq3SLeeCID13vAvdjxfysqiOx4LDyi1ni+voEUBDaD7EbSaFMuIntKMytW3T5Yt/T7yz5R+To461+3XsDBMz2wuqrjOfEVhb4dAmQF1Lzr4YZCAL2pi0j9Ok= Received: from MWHPR02CA0001.namprd02.prod.outlook.com (10.168.209.139) by BY2PR02MB1332.namprd02.prod.outlook.com (10.162.79.27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Tue, 16 Jan 2018 23:26:54 +0000 Received: from BL2NAM02FT042.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::204) by MWHPR02CA0001.outlook.office365.com (2603:10b6:300:4b::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.407.7 via Frontend Transport; Tue, 16 Jan 2018 23:26:53 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; nongnu.org; dkim=none (message not signed) header.d=none;nongnu.org; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.83 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.83; helo=xsj-pvapsmtpgw01; Received: from xsj-pvapsmtpgw01 (149.199.60.83) by BL2NAM02FT042.mail.protection.outlook.com (10.152.76.193) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Tue, 16 Jan 2018 23:26:52 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66] helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1ebad2-0000Mp-3H; Tue, 16 Jan 2018 15:26:52 -0800 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1ebad2-0003Kp-1A; Tue, 16 Jan 2018 15:26:52 -0800 Received: from xsj-pvapsmtp01 (mailman.xilinx.com [149.199.38.66]) by xsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id w0GNQlWv031031; Tue, 16 Jan 2018 15:26:47 -0800 Received: from [172.19.2.220] (helo=xsjalistai50.xilinx.com) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1ebacx-0003KY-1g; Tue, 16 Jan 2018 15:26:47 -0800 From: Alistair Francis To: , , Date: Tue, 16 Jan 2018 15:22:26 -0800 Message-ID: <63f5e8b2687502e1d6c53e190869e88d134f5f14.1516144891.git.alistair.francis@xilinx.com> X-Mailer: git-send-email 2.14.1 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.2.0.1013-23598.006 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.83; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(39860400002)(39380400002)(376002)(346002)(396003)(2980300002)(438002)(189003)(199004)(2201001)(50226002)(305945005)(63266004)(5660300001)(8676002)(81166006)(6666003)(36386004)(575784001)(2950100002)(316002)(36756003)(8936002)(8746002)(2906002)(9786002)(81156014)(48376002)(110136005)(77096006)(59450400001)(4326008)(47776003)(478600001)(106466001)(106002)(50466002)(7696005)(54906003)(356003)(5890100001)(76176011)(118296001)(39060400002)(51416003)(26005)(230783001)(107986001)(2101003); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR02MB1332; H:xsj-pvapsmtpgw01; FPR:; SPF:Pass; PTR:unknown-60-83.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2NAM02FT042; 1:DaPZI1Qqf5IzUe6trFzy9lBimAOFqjb3gsGqwoHmrg/OKUolRHhaq3wZCCIuVoPZE8C+S1MAmv0zhnu9J6oSb/BHlmz5eze3aRCh1/nn+eh0rTh6ye4cVnBI8Dii2MAp MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1a9e13a1-d28e-4909-4159-08d55d38a055 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(5600026)(4604075)(4608076)(2017052603307)(7153060); SRVR:BY2PR02MB1332; X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1332; 3:RoWYmzgu4qdONExPhKACrsA8+CyHsPmDbKDfYGj3z9vRFrOeoClk2U0W1OXy1FXKImB/gxW2FLfNUa4ZtZfMVhhb9CInRenhpGupTzffMOpKNvayeIpzA4JmM9onZKpfFeZCzkwZTjoGSy8ZrjR8uYaWnxYtaD9gOBDSo2mXMhV/dMFIJfPjZ/9r2qrx1zOIQLZuUQmmmjs7rCSDTYeA1hcu9KR73vW1Ya2BqSGhDhW0fKMdag31q0yJOh0m2fsybbHW6qjbqgl3KLotelhHBIU2OkHCkfdh4FNI5aCaasK9tsvprGTG+iHE2R3wmpud8ATsfUlEa5hiHmSHqALo5/S1p9ghQ4mTmTBW9HHjBvA=; 25:5zy6vEPFlBXphxrcxyRvGKUk1vrdHfHtKqzmKOM8nMVltC0h7eRb9uJpjjylGEA3FPYif8AeK+0ZvQU+OaFk5qIpB2mIHN9nwVJA7I3s0cGlAdxHa4RVefb6FMJlMNm1OJTPaB4QkfIZmB0RFKUJ0wgH0vquhp2iyhV7WzBMCwyiR5s9iYRVSVFcc7/D5fdCaSG5qXJxntHw3co4wrNSE/vZonULLQXO96grlFbI68w45SWW7MtW7VpE9S4lfKMuTVGPzStUvQwi13Bnum5+wYvJC4h1NPqWUfjMgkgaOuEa3WshVmdbMlzAc0ok+vPhcwAqfir2qJN9FO801z0OI0PP4HlEH9/XF2XZI/G+9uM= X-MS-TrafficTypeDiagnostic: BY2PR02MB1332: X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1332; 31:vWu3RnKkLRJ8bodUUw7Uqv4nQM/JqYqunpN9TKjyacrb/Dwx0FFMHh+2IU/ikwojw2vGD59Igvs3ZsJcLlVQ1XRauSCfwILQsHPm0kx8CAmaTVfTYY89Fyea7noFFIA2s4p6dxh9Y7tYytHXdK3YKqIRcHHkn54B2mJiB1/t3ZvvZXBazdbgGnPBp/x2QsvwVTB+FmrC9dVxJRSJkQWte0f8sbfDVZ6BcOMXjGuUgn4=; 20:H2KQzZy6UzuppG1UJ3DqqbAa54jRHbyB4WTwUxNGlqrBYI0sKHKRrusRW0SxhjomXxuPoMMxvpcK6Xj8lGC4qJgEJEeimMnukwC1arPH8QQM8v6DEOYwA8FBKhbYDFHxDyCSNUkGTgfyJNKGsmmdcGfV5vC1kFayJ+SvMJrBcF54FYnqpbxZ4t93NrKzJifELOdzaV2yPPmuW6BQ80h5DiNVVnc9IthlLsxs4qFbGRKvuRE76wu7vGYAlaXfgYQordRZGKhWyrHfvoCIhiqocRr9rr5IbMzZ7rZ0UBJcZMYpo4rZquryuc6iUpvPtswbUtAoxZLq5MRdRAMWNy/WQEtDkP5blkJ1R5881rkVgX6/ZpoznHa0MlD1pzII0v73AR0gMPxIBzxtPPS2X+z97XP2yX2fFvspYh3ctEe9MDorcCqXRzwotG5u9J5Ly2JITjUHmVVY7r1bI+luAKpUjP+IIqjkvUf9pfR+VGfOWxPlyMrIh19L50EFjfyOJ7c6 X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(192813158149592)(21532816269658); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040470)(2401047)(8121501046)(5005006)(3002001)(93006095)(93004095)(10201501046)(3231023)(2400039)(944501161)(6055026)(6041268)(20161123564045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(6072148)(201708071742011); SRVR:BY2PR02MB1332; BCL:0; PCL:0; RULEID:(100000803101)(100110400095); SRVR:BY2PR02MB1332; X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1332; 4:G8W1+w+tLO1RqYIeqUUtEuo25u+togbRkYyAyHmDZxj3Cg8K64Wa3VyMPHa9ROca3/PN+/o53bb+4Hos8rCErjqHOa6B075RFJP43679WY9eqaCGOrwjprFeFxD6g9FmXsgxL6oeoebJpCyZ4x9yu3+mbjeQN9Blivm0HRDsCVn2Sn+X8IYEy8FH9tr1dDYV9pPF/61s/WVEGl/7SJzl0lQ9/d0a0iFTtntwL2DlnWhENZFyHud7qeJiK1Pbw2I95Xu6rt1iOMcAF+fmMmqQe68OidiTqGs49ZZER6tV5pP602Ydw39PHSadv+RXpTHzQyXvocIQmICGD71KslqvZE3mpMj8Qkm2o6cD76Rqmeo= X-Forefront-PRVS: 0554B1F54F X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR02MB1332; 23:pAw0viyaw2mye2d8U11UxjacmVN0ztuf4UqpJdLE3?= KBUrt2mze0ysNfE9f/cqliW01KRCMIuddeRcF6WJsyPZQY8xWf6L+ED8GU/IaMuy7NE5umYoJ/qNeptkes6IoesRTUnkLozBMLrZtCBF/HOBWemOedI62TLkyQLHvv2hG7pIkHELm335LiJSnWbKcBouD0lwN2rOS/V2MZq/b2xaQQKGjoDDC9F6YenLPDfh7asstMDTc39mZpS3+V7wt2iOltiV8TlOy2fFEEOLkjL+WSCmy36egXXkUFwWiQlBf8hElJ5RmorDAmGQoEte8p7NPC7Yui3GDVSot2VoptSJEobRvJzRfEyqX5vmLtoweWYCH94sx/BHMCbz3ZzJbj+0xvQe9X2vh+3slmk7XVtzc9BqlT9xx1DXiHw/fchnra4AWje+LihHcOgagQHSX+lfJr/9T1SqSn/UzCT4C5TGdG6PdW8M0RUZDy0ADlyvSKEKJhMRXygb3xzPIWag/N+VCfN5cvILSJhrcG0r8qiK/KcVg7rv4sYKT6guHgwBGd5Objpg8l6bMzespkxaXoPOvKvaUoNzufC7PZqyhzGTcWfQFSx714B50hhUHYos3Ci/TkNak/ILu0N5gVyIOJWUkAWllA9MoBh6kvjI68QU5LHK6BtlZV+DnLuVPkJTamL0QUV5YJsPrZBOwwdKnFcvWiXGoBj8VSyKcgHFM8uVSzLjlUwwoHx7pEukdknV4UCMS+OtVci+e9iZiPsEbR+cGzZ5CbC/IJc+i6Xr4c7w7ojHdlQy7B2L4FavWSQUD4lhHuIsFUHCsdVVqPLZI1DsPzHg+OdsN8KBKBeFub8drARBvKWnJjOmiAi3pIZC5gpZcVWUzlklU1S6kyKEdxnwDJPTbdZEb5QjR2Cr4vx69x7zOeTkB7oEbR6uDK6hhByfzCu/5broKGoJF+jTf+fki8tc8wUBAY9OYalTIrQ+g2BTu6D5MiG/2L3LARMKDYl0fiLoykhCW7WHW2BhTgNkdkA4XqcLnAGs4I75ZkgYLpZfOSPyMp7QRZepOMvWdVP61DKK9GWefG7XcFowfViH2Z9UQb5mL2bKMvl9qDIMPWW5LiDrt0N6ufyZDtus+bwjNaB9YUieFDJB7wSw3eYKXCFQT3Yoxvb3cHbJ4fycQ== X-Microsoft-Exchange-Diagnostics: 1; BY2PR02MB1332; 6:xbB6ytXTrZbPeSUlrj8hjvddn/7RSWeZtEG5QJm8riop3u8zsTScnosh8Sysz8eStNS9vk9RIsdXtgeSY7e090Nw8wM0PwQBQ6olNtEiLwRDoGPg4FPGaE1C5Imii+L0J4xekPrOoEJYGgKpkdI7t4W321qjbifwfv3Xa/ZPCK3ZdmTlqa9ELH4tFYz+67Tkcbt+VcLjkZ5TLtPqfbTkuNXOzfH98MA2/jMsPToSOvoGUJDDHrgMnOYMMaxC4AMXdaPgCil0VpO2snbzv2V/U66RYd4b292av40KyggQ58CXfjzPwcswUiEsjEOhg4xhS3HNHu2TMIot4lYWu+NHbCatjDEhJZLfaCoXgqHzvPo=; 5:FUCRomASKBDr/RpOs0aJecgnDCt3UwJWIwperS1VnCV1kVsV7dj1nOhmG5zk0w+YIy1aCJNpbMFuGb7+9NgBm8QtTlpKJcqUols6UunT/mYqDBCAFkfHioHTcSri4mrFym+R0EBtaLQJUYv4GOcuBox6nCsn+fyS0522MR6LWQs=; 24:SPLma2eGdKjv6DPfu3wixBMV1eqv/gYWWXqv/jaUIJ4AocgWuDI7CPAOLHxmfWQyKx1htjh7aCytwui7Tm5y1k9jG81oqXJb8EAFYNc0gm0=; 7:pUdLAdnEBnKpJkKjwr7+e2YyRL47txv5ore2cM8o9V/OAU8gXAemDeXA0DlLyi1eH1wDyR56tYDCnxQP6JPLLvQLrWAynxTQOoCYaUf8mZQSpOF3YvLe9CeN2ewXrY7dkfTwOj5+1m5PDvW0zWrWxisNmOKLsYp2XwGRwGWB41gNsICp9r7j5azQHtVwaxwo7FPBrs8aocxkBUB3jNoxKw3xSo3k7bhkewC5E4qEmEX9OCVX1/DqY8mNPN3DJ7b4 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2018 23:26:52.9630 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1a9e13a1-d28e-4909-4159-08d55d38a055 X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.83]; Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR02MB1332 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.41.70 Subject: [Qemu-devel] [PATCH v5 3/9] xlnx-zynqmp-pmu: Add the CPU and memory X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: alistair23@gmail.com, qemu-arm@nongnu.org, alistair.francis@xilinx.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Connect the MicroBlaze CPU and the ROM and RAM memory regions. Signed-off-by: Alistair Francis Reviewed-by: Edgar E. Iglesias --- V4: - Remove the ZCU102 name V2: - Fix the pmu-cpu name - Use err and errp for CPU realise instead of error_fatal hw/microblaze/xlnx-zynqmp-pmu.c | 70 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 68 insertions(+), 2 deletions(-) -- 2.14.1 This email and any attachments are intended for the sole use of the named recipient(s) and contain(s) confidential information that may be proprietary, privileged or copyrighted under applicable law. If you are not the intended recipient, do not read, copy, or forward this email message or any attachments. Delete this email message and any attachments immediately. diff --git a/hw/microblaze/xlnx-zynqmp-pmu.c b/hw/microblaze/xlnx-zynqmp-pmu.c index ac0f78928a..c6a0b3b8a1 100644 --- a/hw/microblaze/xlnx-zynqmp-pmu.c +++ b/hw/microblaze/xlnx-zynqmp-pmu.c @@ -18,8 +18,11 @@ #include "qemu/osdep.h" #include "qapi/error.h" #include "qemu-common.h" +#include "exec/address-spaces.h" #include "hw/boards.h" +#include "hw/qdev-properties.h" #include "cpu.h" +#include "boot.h" /* Define the PMU device */ @@ -27,21 +30,56 @@ #define XLNX_ZYNQMP_PMU_SOC(obj) OBJECT_CHECK(XlnxZynqMPPMUSoCState, (obj), \ TYPE_XLNX_ZYNQMP_PMU_SOC) +#define XLNX_ZYNQMP_PMU_ROM_SIZE 0x8000 +#define XLNX_ZYNQMP_PMU_ROM_ADDR 0xFFD00000 +#define XLNX_ZYNQMP_PMU_RAM_ADDR 0xFFDC0000 + typedef struct XlnxZynqMPPMUSoCState { /*< private >*/ DeviceState parent_obj; /*< public >*/ + MicroBlazeCPU cpu; } XlnxZynqMPPMUSoCState; static void xlnx_zynqmp_pmu_soc_init(Object *obj) { + XlnxZynqMPPMUSoCState *s = XLNX_ZYNQMP_PMU_SOC(obj); + object_initialize(&s->cpu, sizeof(s->cpu), + TYPE_MICROBLAZE_CPU); + object_property_add_child(obj, "pmu-cpu", OBJECT(&s->cpu), + &error_abort); } static void xlnx_zynqmp_pmu_soc_realize(DeviceState *dev, Error **errp) { - + XlnxZynqMPPMUSoCState *s = XLNX_ZYNQMP_PMU_SOC(dev); + Error *err = NULL; + + object_property_set_uint(OBJECT(&s->cpu), XLNX_ZYNQMP_PMU_ROM_ADDR, + "base-vectors", &error_abort); + object_property_set_bool(OBJECT(&s->cpu), true, "use-stack-protection", + &error_abort); + object_property_set_uint(OBJECT(&s->cpu), 0, "use-fpu", &error_abort); + object_property_set_uint(OBJECT(&s->cpu), 0, "use-hw-mul", &error_abort); + object_property_set_bool(OBJECT(&s->cpu), true, "use-barrel", + &error_abort); + object_property_set_bool(OBJECT(&s->cpu), true, "use-msr-instr", + &error_abort); + object_property_set_bool(OBJECT(&s->cpu), true, "use-pcmp-instr", + &error_abort); + object_property_set_bool(OBJECT(&s->cpu), false, "use-mmu", &error_abort); + object_property_set_bool(OBJECT(&s->cpu), true, "endianness", + &error_abort); + object_property_set_str(OBJECT(&s->cpu), "8.40.b", "version", + &error_abort); + object_property_set_uint(OBJECT(&s->cpu), 0, "pvr", &error_abort); + object_property_set_bool(OBJECT(&s->cpu), true, "realized", &err); + if (err) { + error_propagate(errp, err); + return; + } } static void xlnx_zynqmp_pmu_soc_class_init(ObjectClass *oc, void *data) @@ -70,7 +108,35 @@ type_init(xlnx_zynqmp_pmu_soc_register_types) static void xlnx_zynqmp_pmu_init(MachineState *machine) { - + XlnxZynqMPPMUSoCState *pmu = g_new0(XlnxZynqMPPMUSoCState, 1); + MemoryRegion *address_space_mem = get_system_memory(); + MemoryRegion *pmu_rom = g_new(MemoryRegion, 1); + MemoryRegion *pmu_ram = g_new(MemoryRegion, 1); + + /* Create the ROM */ + memory_region_init_rom(pmu_rom, NULL, "xlnx-zynqmp-pmu.rom", + XLNX_ZYNQMP_PMU_ROM_SIZE, &error_fatal); + memory_region_add_subregion(address_space_mem, XLNX_ZYNQMP_PMU_ROM_ADDR, + pmu_rom); + + /* Create the RAM */ + memory_region_init_ram(pmu_ram, NULL, "xlnx-zynqmp-pmu.ram", + machine->ram_size, &error_fatal); + memory_region_add_subregion(address_space_mem, XLNX_ZYNQMP_PMU_RAM_ADDR, + pmu_ram); + + /* Create the PMU device */ + object_initialize(pmu, sizeof(XlnxZynqMPPMUSoCState), TYPE_XLNX_ZYNQMP_PMU_SOC); + object_property_add_child(OBJECT(machine), "pmu", OBJECT(pmu), + &error_abort); + object_property_set_bool(OBJECT(pmu), true, "realized", &error_fatal); + + /* Load the kernel */ + microblaze_load_kernel(&pmu->cpu, XLNX_ZYNQMP_PMU_RAM_ADDR, + machine->ram_size, + machine->kernel_filename, + machine->dtb, + NULL); } static void xlnx_zynqmp_pmu_machine_init(MachineClass *mc)