From patchwork Wed Aug 3 20:06:45 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 9262171 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2DFE560754 for ; Wed, 3 Aug 2016 20:15:17 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 1EA922823D for ; Wed, 3 Aug 2016 20:15:17 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 134A228305; Wed, 3 Aug 2016 20:15:17 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 598DF28210 for ; Wed, 3 Aug 2016 20:15:16 +0000 (UTC) Received: from localhost ([::1]:36492 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bV2ZP-0008OD-1w for patchwork-qemu-devel@patchwork.kernel.org; Wed, 03 Aug 2016 16:15:15 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:32900) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bV2S3-0000mb-VV for qemu-devel@nongnu.org; Wed, 03 Aug 2016 16:07:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bV2Rz-0001db-Pu for qemu-devel@nongnu.org; Wed, 03 Aug 2016 16:07:38 -0400 Received: from mail-cys01nam02on0079.outbound.protection.outlook.com ([104.47.37.79]:4506 helo=NAM02-CY1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bV2Rz-0001dB-DH for qemu-devel@nongnu.org; Wed, 03 Aug 2016 16:07:35 -0400 Received: from SN1NAM02FT012.eop-nam02.prod.protection.outlook.com (10.152.72.51) by SN1NAM02HT111.eop-nam02.prod.protection.outlook.com (10.152.73.52) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.557.8; Wed, 3 Aug 2016 20:07:28 +0000 Authentication-Results: spf=fail (sender IP is 149.199.60.96) smtp.mailfrom=xilinx.com; redhat.com; dkim=none (message not signed) header.d=none; redhat.com; dmarc=none action=none header.from=xilinx.com; Received-SPF: Fail (protection.outlook.com: domain of xilinx.com does not designate 149.199.60.96 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.96; helo=xsj-tvapsmtpgw01; Received: from xsj-tvapsmtpgw01 (149.199.60.96) by SN1NAM02FT012.mail.protection.outlook.com (10.152.72.95) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.567.7 via Frontend Transport; Wed, 3 Aug 2016 20:07:28 +0000 Received: from 172-16-1-203.xilinx.com ([172.16.1.203]:38996 helo=xsj-tvapsmtp02.xilinx.com) by xsj-tvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1bV2Rr-00026N-G9; Wed, 03 Aug 2016 13:07:27 -0700 Received: from [127.0.0.1] (port=35823 helo=tsj-smtp-dlp1.xlnx.xilinx.com) by xsj-tvapsmtp02.xilinx.com with esmtp (Exim 4.63) (envelope-from ) id 1bV2Rr-0000lM-D9; Wed, 03 Aug 2016 13:07:27 -0700 Received: from xsj-tvapsmtp02 (smtptest.xilinx.com [172.16.1.203]) by tsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id u73K0dhs006707; Wed, 3 Aug 2016 13:00:39 -0700 Received: from [172.19.74.182] (port=45298 helo=xsjalistai50.xilinx.com) by xsj-tvapsmtp02 with esmtp (Exim 4.63) (envelope-from ) id 1bV2Rq-0000lJ-M6; Wed, 03 Aug 2016 13:07:26 -0700 From: Alistair Francis To: , Date: Wed, 3 Aug 2016 13:06:45 -0700 Message-ID: <23b146309d5bd10c081df35e0cdf425ed5395912.1470253246.git.alistair.francis@xilinx.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-MML: disable X-TM-AS-Product-Ver: IMSS-7.1.0.1679-8.0.0.1202-22490.005 X-TM-AS-Result: No--10.898-7.0-31-10 X-imss-scan-details: No--10.898-7.0-31-10 X-TMASE-MatchedRID: ZCn+RolpoOMLazoQyrpm0lVN8laWo90MUAjrAJWsTe/K99fyOVK2z5zN 93wt7ZVSIHjnztybxtXwwsUAOWTg1wlA1YvnZYYFA9lly13c/gHt/okBLaEo+BS11FlOYRohoo0 Wua1h8XYkyzUA9Evi4VdG/tA+inhwBeXvD66vx6WJQ9k+Ypk5CQOWx6MQC8CDIbxYwbCxGTSwPe QirX/Z2NspsLwe8ybBWFYfs1svt1rKPighvc9QPI6MisxJraxH/qxRV3rLqo1rF5VCzqvk4O4oo uvxmgWoWjOVO3UV6puAMuqetGVetnyef22ep6XYOwBXM346/+xZKp9XyfMEmQSBgswNVM+5CQdE WSuvyfefGkT+vzViUluFz3zS6S2t X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.96; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(47776003)(48376002)(19580405001)(50986999)(105606002)(92566002)(305945005)(7846002)(11100500001)(356003)(189998001)(586003)(5003940100001)(7696003)(81166006)(118296001)(5001770100001)(106466001)(8676002)(81156014)(71366001)(4326007)(9786002)(85426001)(8936002)(2950100001)(50466002)(50226002)(229853001)(575784001)(2906002)(77096005)(64026002)(87936001)(33646002)(36756003)(76176999)(86362001)(19580395003)(49343001)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1NAM02HT111; H:xsj-tvapsmtpgw01; FPR:; SPF:Fail; PTR:unknown-60-96.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; SN1NAM02FT012; 1:7KrLXlvGMJigYPGOTKyWswL8JC+uPg4K9Y+czTOLQp+Zqgtyd/SBI6N9X9Jkinj5PCxzawZVmHfRaDUKX6ls8oNowK6IVR35QeHh5ScquNJawikPKJl6t+X4aDE0KPXc0Y+TUXvwyhL1a96POk1S22g3IwQePHZAgAiKh0No+Fly/ztX53QY0oxa3LSUeFzqZcytd7GnMgZ+Nx1sDq2USJl9kSbJtUm02A0bDjQ9Zl5PV+VXVx8HAE1kyUJcUK7VOpq8tIAyj7JPCqtb7ADzehV12HtiQCmmVXJKh5fhKHUDnX8AqZ61OzxXI26EIgEoV6xB+HzySNHbxoJ447vyqh/aGrlc9zTf9+5F7aU5oCQNyG1piQLmK+hWVRcWv5MKS68IZkiodcUa/B50XjaE8zjMaUo7r8R+Kb+KxV7V7ZFL14IfLXeuxPs27vwRfawFl3FOFj+9mCvPrR36eQYDVC/yQlEuqfG1SPXs3aCuziIw0f6rNvKA6ZeTm7H+GFFa4fBdJRPzyeRsWLTSIa8Gjy28EbQulhKYJ+jgE7jONa6NCPM8sQKoVL0EKIgm0AN1HjHSau6H+IYbzz29rVkmAzA76msw5EGr36gdJAeb2RQ= MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: af3f28a3-fe41-42a1-7b97-08d3bbd9cb69 X-Microsoft-Exchange-Diagnostics: 1; SN1NAM02HT111; 2:mEJ+KYbHt1nahb3+UgeBwJgCCTLuIes6oQrEnM3DKntLmxKLbqsc8ADdT2NoSHpKusHLjpeimKdGnIQd7TybREN9XTRE2FIX6tLjWyKK5VhcbeH7SP8PS3JIjvr2cCOw9MVYhEnHed3OgkPM0rBOX3B/TpBL3TngqumDoxi2+U606lqz63DvfaNes1EzoQuJ; 3:PnH1O/PDP3ddl3QpfCbVKbbhpSI3lpSXcPy2j3BHBsjxbKXIF5vSMoc+9iiviLAf/v5hri0dWNwdq4FssIt0067vvnUIJU5JxjWfLHEmvs7xp6ylEVpdArPxFB0L4Zycl2YschuZwKHQhL/3gwykjpLErnESVZQJO9Vi71bmuS6djPK/A0Tz44m6i5hI5FL9TsIabK7vq6KQZxNPwpeau9KNoQn/SBACVps6hMBkzhE= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:SN1NAM02HT111; X-Microsoft-Exchange-Diagnostics: 1; SN1NAM02HT111; 25:cd+NdgDQ11aJ4IRKl/GmUQuDFkHPDL7BEBNd/kCiPdAWXXCIz5GtHwMer7kWI6tQlf9KFLJYoybaFRbMbsVJISIH7AJY1EAquGfQt44nPkdFFKhse/vRYPOUC2URj+mrBwI+u+JclsNvHy4mkq18WJYoF1kXg43+bLe3fPTXuCUOyjJliPpCbL1CGACGOfMDZqVjvFGn3rYNLtS2UJwczhXuD/urPdG9ll/rPtGA4agZquth9+3FKDYur/fFQ+JKwWyWGn4gkzNgcQ+pC3PagOo3G22fgl7POnhvlqUwf23otpMcQcBaWJveikSRVcDs/uaWGnp7Mxjy0Zdew74JgfSBULqX9Iev17Atmh+77+2k6hKA0Xl5or5h6jqb/oISc9I/pQxXEVSDF5DtwVY27LffDO1fLr9+Kvl5sri6fBwbyDKwgJszoDndNAdQbgw/+CRjoGtaADzar8ZBVtYZgGZpEyxp5Z6k7K4m1SnC1lkYkWIQuoqm9qT63I7CO3+cDrSkzu8GTWJEd8E1kxhiJ+YWR+gpTDt/crVI46S/qxctkkoxdpAr2wkmXt5BhbcWEQKdggtw01T6lIYaHzVqHaO2xqlnJVwKxNui0igW7eFdPBCqSV+dm68Si0Ws44UIiGZvmRjkCsVrLuPntrdWcupd/fiS321zGobpO7ZSYk8mSIYYwvFb1HOgh41BrDjly2GmWg2wdkRf9MawfrRxqmGlwCbFd6D17zC3jFYuGR1l9Hh9v+N1ariSg0RCkajDhew0dJ3VR5mTXekVPak3XA== X-Microsoft-Exchange-Diagnostics: 1; SN1NAM02HT111; 31:WxdySXTPVkUtlELTBheX3mad0qV1icBhNmX4m4+85P6jdlwY7sfJgF/2iFuLrqdiH6d3kh7vwJYFDM9daYNmjKHiFvqnJeqtHRUml5crlLxS0QBP8LCBvsnK15THpUEusEuz1VMNOh9aC2l6v9/979IyXCDoZExwbqO9vfqa9rsIbdZVVJX9uNIq2MaaUmLHxYGRxQ8SoaO15g0Rt23LkoPInKrQ7zWWCJ27Y/D9skg=; 20:S+Xe5QhxsBDpr9Hfe8n6zQdeqACnosdK3gW7YeYpWKMP567ydY/bFv3O7eFlOAaalG3CQh6Nvu8amDtYLlqkRSUcUxvf2OP8M/Hv8NtkVZOB8A2/S6h7sa9tyLMEAF87lZHEHzDTY40G8+NhmDxpP9ZVBLi2AaEghz45asMELxIzV2VYG8Q4ztG2qC5FvX6ARQpSMzvAyZwUBc526MT/JIdrzS2uIGzGQFZpxBsXv2CvSzj/EIY95hhuz2ObopJ3KDxb317RJpWOzw0aysSFXfW5R3xanhcVqLTZfBBfpPtmEjjorZ0CZ4yw+ErH/QRyzpCJZayqrasC8dDnPiyRSmMtpMXgAEWcurWaGRM7QCoeNpyIrlNA2swmlL7zQngiv2q4tDRmTVhRDAv9akSfZB+/BfmzZRhmIz2o5IWqwlvImgQpC7cL54JAlpWyZkH4L+G5mzZeYvqv3Os9ERFXXTph1WiqVo3PHDQiLKKYjBX4DR3Nxzb7HE2E9J+9qQeI X-Microsoft-Antispam-PRVS: <847f318a50164437a235bed6ee6a8a6f@SN1NAM02HT111.eop-nam02.prod.protection.outlook.com> X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040151)(601004)(2401047)(13024025)(13018025)(13023025)(13017025)(8121501046)(13015025)(5005006)(3002001)(10201501046)(6055026); SRVR:SN1NAM02HT111; BCL:0; PCL:0; RULEID:; SRVR:SN1NAM02HT111; X-Microsoft-Exchange-Diagnostics: 1; SN1NAM02HT111; 4:HXva5faaMp/+sk/GAWwEG/HWrF8v/6gdFUJM6sA00jsihh6LEzXCnhWw5b5N9Omtw2nm277crXIC6C/uMZeecafzjj1bwTuJsppkEs7dXyFiKxqglDeR0WE5I7pdpI6BcpkSapBg5d+2mMuqwNdCzOK6OrjGysMgdyr4AKAMvPUDwZwh2Omqbl5dR4EtzGsYCnyJEYWMFFraya42nz1niPyVi4dvpnZLfuk7K7PC0sxV98Gg+leYHN//i8AglJFLdS0oBtg1AoDWWzKNcyIy4NjB2ZikXl9KdWo6q4B3OE6uB1++Ydb9hh1DB+WBmNQJRIBn2UitEWQ4akUkDMh8xqOnZov7U3W8q80OwuP8FQobpguLXOBeIJgTAD78r9TJGDhEhHUL2+Tmt8AYGG0ksCd2jPvsifOYQ8LNriZhmRgnER2V5IgDUmyHnJ5EQ5oAvhpSvG6MyQdVbA0bQoLHI9i45piNjVmqPRxw5EfikamLrUhQhJX1SPmUUzAPVBKFd3M/MjzUH+zLuY6dOBpZ531ZUdRHbcQUEimk0xg3++0= X-Forefront-PRVS: 00235A1EEF X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1NAM02HT111; 23:eIucEMkF3Sf95DoEbl5N15g/jOkfSTCTXOz/2CxEJ?= =?us-ascii?Q?tU+K542X6SuIgDKYK5xTdcUOrVuiXdG6aX5tZ6ZvSvON/4rXNb5d1CsomSRm?= =?us-ascii?Q?giKK+fmBRlLQiyuCmhg9Sy0rkSUoV9bWptM8Jy1YYjD8EuOBvKNmjbO28j35?= =?us-ascii?Q?y+eacdRVdDLJihwgxrixSQp5raLDwa4v/aKCtZdQfT2H0zJ7nomiFbzw/vi8?= =?us-ascii?Q?QpP9cHr6pNrWOH3g/AALRxqwEbmCvuFba9catrkb43hTdATjLLpOY8M004A0?= =?us-ascii?Q?WXoqNPH89+b2tLpdWv1/+2TvxqT/u/UYPaWJ0vMr4vQj3AmJouf5XS12Q0oL?= =?us-ascii?Q?E3M9dASk3UDY1BeBKdjYRLfjveA1iEe20F+unHaZLYSupdvLQ17iixB7FTRs?= =?us-ascii?Q?jl4nsPtdi8XYIadJIHnKNTiu7WfKNt6UI2+kLr9TsHf9PZeh4Jfm/hUTDV/p?= =?us-ascii?Q?ktkE0CLLAiWgET0czqdiGtyTQMgp2MGYM220Ma8KoKf/0ngUkpB2f7lQuPpF?= =?us-ascii?Q?XCFUJsQTbBHWVulcyZRzxhUIUBA/qdiVItsSIjSf9HUPe7Itaf6aRwfVDmX/?= =?us-ascii?Q?U6VK1iXxz5nSzngFRKVDTS6sFlQXIbmuMSNIWeogvo1Av3GKQH1jBO29dl/u?= =?us-ascii?Q?g5EOQEmDUJcaWqJsQhTN4YGGpmsAAX7R1GYOyQEC1Yq4QzTKFFxL2dME7uvJ?= =?us-ascii?Q?eTT//WSxaAHDthXCsXLpx6vFadKX/5nSTkROBlOeozEBxkGOuZlyDRdJmGJ9?= =?us-ascii?Q?b6Z3ECdU+sn784OoA+78FFM3ECl7P0ylVLURj05X0buHNaQ4qZk4Z9q98W7a?= =?us-ascii?Q?z7wsfV/Pe9uhJjc4waSXSzWQt5Jkkz1PFRFz26V97jQVbXhN9YLNtM4OxMn4?= =?us-ascii?Q?4Cf06FdVYr0am4M1nEYIwQXb7QfU+MZ5HXgR2NNPd8zpWMGE1g84s443CDmK?= =?us-ascii?Q?pD8LQTSlHCouBVuC0Za2u/oBKNpWt36c9xTyOhzW1LSWUaCzia+v76k0ekBH?= =?us-ascii?Q?04hDt4GqUwisMLIF6OizrnlM3E2NAJmfi/D9GCQaPj4mRpTrS9MNZGZ13S4a?= =?us-ascii?Q?WT0jchoO5iCTI0qpRdIpUTj4vXvlUxqb6dZUUTF504ZtsECeBOYesLSpj9eD?= =?us-ascii?Q?/M8hEyTp3fKJYyl7wyj7Mk1T/Amz9FdPzgHi5UzCw9LHRrHYXHc8xnr5VHR8?= =?us-ascii?Q?AMSaE6s0+tke5vG7x3I1EQjevs6pjCarSk3cPzOXBTyCRVDo3adlH8VHA=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1NAM02HT111; 6:Uf/KVxis1TLjMUM/VL25Lxr0G6cf8udDMSEFGuL33HKEGtTKMXyXgmBevDdFsv9B7+mQSvKbfajdyuGkRIh7OPGKM7G3fvkVWcCxUgB1qESMqUKpi8d7t2Ts23o5iUAgFA2zXk5DEYeEh/wxkpED2jpErSpYMpHc7kd6tqh9KvkWegvLSyXsDLhD6c8mynkrB+IbUYY+mfnnFBHD3UtWqFhN6834C2BspBdbwGvWlH4WdjssF9z3WBPPdMJs7IcowIoaLHTHh9+2jWuEjoiUcLHC9rXUMJ/tZlA9KXSnP4juGP0i+JrVXFXon8NQBF+CPCliG01nAVUiE2z2CywMvw==; 5:WsNTBB6+A77AenlCHo0KxXo4PbzAS7FBvw7KcvpPz+XcQUhhU3tVeMqP1HCmHEArilNMBTAPHZllQ+U9OHVgH1GzeWTj3cqy+XhBEXk9NWBmxbKDsIt1WY45x8sc2fo1XZUXznJFL9LYv+CVmNS1eA==; 24:Z2M3t0pQY40wURskV9tvzOEppc11+MpAzmKF1WDdtjQPT9SryHOUWKQGQAbioJbc5734ypMU8LRIWJzLOaOjWfd1rsT+gic3aPmSwqRV4kg=; 7:FEg7J/uWkDGupWPAAwjJhuYz3L0ECBmcPNBuiRNJIUzth6xgzdu2Pz4Msgz9jJoYNNurfK1kFlj0qfJgioQa5Huh9pEov14FC0e9v8ozReyC9QSFXO5U2J+B41W1DRlDPEefC4XuYvtUJI/Eh7DZj3OvDVl97crEKPB2eictsQUBJayEmCKw1Bt83jNF/o0hKNPv9nCSHrMhR+IvmbmDlYEqkDtkFttdwBwhF44o5hWr7ivhXatw90X86xWXJa+S SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2016 20:07:28.1231 (UTC) 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.96]; Helo=[xsj-tvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1NAM02HT111 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.37.79 Subject: [Qemu-devel] [PATCH v10 5/8] loader: Add AddressSpace loading support to uImages 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: cov@codeaurora.org, crosthwaitepeter@gmail.com, pbonzini@redhat.com, armbru@redhat.com, alistair.francis@xilinx.com Errors-To: qemu-devel-bounces+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP Add a new function load_uimage_as() that allows the caller to specify an AddressSpace to use when loading the uImage. The original load_uimage() function doesn't have any change in functionality. Signed-off-by: Alistair Francis Reviewed-by: Peter Maydell --- V10: - Add comment about the function in the header file. hw/core/loader.c | 17 +++++++++++++---- include/hw/loader.h | 26 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/hw/core/loader.c b/hw/core/loader.c index 0a17faf..19b73cf 100644 --- a/hw/core/loader.c +++ b/hw/core/loader.c @@ -581,7 +581,7 @@ static ssize_t gunzip(void *dst, size_t dstlen, uint8_t *src, static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr, int *is_linux, uint8_t image_type, uint64_t (*translate_fn)(void *, uint64_t), - void *translate_opaque) + void *translate_opaque, AddressSpace *as) { int fd; int size; @@ -682,7 +682,7 @@ static int load_uboot_image(const char *filename, hwaddr *ep, hwaddr *loadaddr, hdr->ih_size = bytes; } - rom_add_blob_fixed(filename, data, hdr->ih_size, address); + rom_add_blob_fixed_as(filename, data, hdr->ih_size, address, as); ret = hdr->ih_size; @@ -698,14 +698,23 @@ int load_uimage(const char *filename, hwaddr *ep, hwaddr *loadaddr, void *translate_opaque) { return load_uboot_image(filename, ep, loadaddr, is_linux, IH_TYPE_KERNEL, - translate_fn, translate_opaque); + translate_fn, translate_opaque, NULL); +} + +int load_uimage_as(const char *filename, hwaddr *ep, hwaddr *loadaddr, + int *is_linux, + uint64_t (*translate_fn)(void *, uint64_t), + void *translate_opaque, AddressSpace *as) +{ + return load_uboot_image(filename, ep, loadaddr, is_linux, IH_TYPE_KERNEL, + translate_fn, translate_opaque, as); } /* Load a ramdisk. */ int load_ramdisk(const char *filename, hwaddr addr, uint64_t max_sz) { return load_uboot_image(filename, NULL, &addr, NULL, IH_TYPE_RAMDISK, - NULL, NULL); + NULL, NULL, NULL); } /* Load a gzip-compressed kernel to a dynamically allocated buffer. */ diff --git a/include/hw/loader.h b/include/hw/loader.h index fdf0a51..bce8f43 100644 --- a/include/hw/loader.h +++ b/include/hw/loader.h @@ -102,6 +102,30 @@ void load_elf_hdr(const char *filename, void *hdr, bool *is64, Error **errp); int load_aout(const char *filename, hwaddr addr, int max_sz, int bswap_needed, hwaddr target_page_size); + +/** load_uimage_as: + * @filename: Path of uimage file + * @ep: Populated with program entry point. Ignored if NULL. + * @loadaddr: Populated with the load address. Ignored if NULL. + * @is_linux: Is set to true if the image loaded is Linux. Ignored if NULL. + * @translate_fn: optional function to translate load addresses + * @translate_opaque: opaque data passed to @translate_fn + * @as: The AddressSpace to load the ELF to. The value of address_space_memory + * is used if nothing is supplied here. + * + * Loads a u-boot image into memory. + * + * Returns the size of the loaded image on success, -1 otherwise. + */ +int load_uimage_as(const char *filename, hwaddr *ep, + hwaddr *loadaddr, int *is_linux, + uint64_t (*translate_fn)(void *, uint64_t), + void *translate_opaque, AddressSpace *as); + +/** load_uimage: + * Same as load_uimage_as(), but doesn't allow the caller to specify an + * AddressSpace. + */ int load_uimage(const char *filename, hwaddr *ep, hwaddr *loadaddr, int *is_linux, uint64_t (*translate_fn)(void *, uint64_t), @@ -155,6 +179,8 @@ void hmp_info_roms(Monitor *mon, const QDict *qdict); rom_add_file(_f, NULL, 0, _i, false, _mr, NULL) #define rom_add_file_as(_f, _as, _i) \ rom_add_file(_f, NULL, 0, _i, false, NULL, _as) +#define rom_add_blob_fixed_as(_f, _b, _l, _a, _as) \ + rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, _as) #define PC_ROM_MIN_VGA 0xc0000 #define PC_ROM_MIN_OPTION 0xc8000