From patchwork Mon May 18 01:13:41 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 473241 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org 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 CB0361402B5 for ; Mon, 18 May 2015 11:15:58 +1000 (AEST) Received: from localhost ([::1]:38844 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yu9eu-0006hu-Sv for incoming@patchwork.ozlabs.org; Sun, 17 May 2015 21:15:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33422) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yu9ct-0003Or-LD for qemu-devel@nongnu.org; Sun, 17 May 2015 21:13:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Yu9cq-0003Sn-7H for qemu-devel@nongnu.org; Sun, 17 May 2015 21:13:51 -0400 Received: from mail-bn1on0081.outbound.protection.outlook.com ([157.56.110.81]:2995 helo=na01-bn1-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Yu9cp-0003Sj-Vy for qemu-devel@nongnu.org; Sun, 17 May 2015 21:13:48 -0400 Received: from BN1BFFO11HUB039.protection.gbl (10.58.144.186) by BN1AFFO11HUB040.protection.gbl (10.58.52.151) with Microsoft SMTP Server (TLS) id 15.1.160.8; Mon, 18 May 2015 01:13:47 +0000 Received: from BN1BFFO11FD025.protection.gbl (10.58.144.30) by BN1BFFO11HUB039.protection.gbl (10.58.144.186) with Microsoft SMTP Server (TLS) id 15.1.160.8; Mon, 18 May 2015 01:13:46 +0000 Authentication-Results: spf=fail (sender IP is 149.199.60.96) smtp.mailfrom=xilinx.com; twiddle.net; dkim=none (message not signed) header.d=none; 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 BN1BFFO11FD025.mail.protection.outlook.com (10.58.144.88) with Microsoft SMTP Server (TLS) id 15.1.172.14 via Frontend Transport; Mon, 18 May 2015 01:13:45 +0000 Received: from 172-16-1-203.xilinx.com ([172.16.1.203]:55109 helo=xsj-tvapsmtp02.xilinx.com) by xsj-tvapsmtpgw01 with esmtp (Exim 4.63) (envelope-from ) id 1Yu9cn-0008PV-4X; Sun, 17 May 2015 18:13:45 -0700 Received: from [127.0.0.1] (port=36739 helo=tsj-smtp-dlp1.xlnx.xilinx.com) by xsj-tvapsmtp02.xilinx.com with esmtp (Exim 4.63) (envelope-from ) id 1Yu9cm-0005TQ-VA; Sun, 17 May 2015 18:13:45 -0700 Received: from xsj-tvapsmtp02 (xsj-tvapsmtp02.xilinx.com [172.16.1.203]) by tsj-smtp-dlp1.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id t4I19XcA015225; Sun, 17 May 2015 18:09:33 -0700 Received: from [172.16.162.22] (port=51001 helo=xbreng02.xilinx.com) by xsj-tvapsmtp02 with esmtp (Exim 4.63) (envelope-from ) id 1Yu9cl-0005TN-R1; Sun, 17 May 2015 18:13:44 -0700 From: Alistair Francis To: , Date: Mon, 18 May 2015 11:13:41 +1000 Message-ID: <1efa3624771b5a0f265ce12a1ef6f39e7732fdf1.1431909583.git.alistair.francis@xilinx.com> X-Mailer: git-send-email 2.1.1 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-MML: disable X-TM-AS-Product-Ver: IMSS-7.1.0.1679-7.5.0.1018-21550.005 X-TM-AS-Result: No--6.500-7.0-31-10 X-imss-scan-details: No--6.500-7.0-31-10 X-TMASE-MatchedRID: z2FfRngykXsK2Qsa/S3/KSUCPpH7ESXaXwFz7lp6m4/uc7XfuTYENsRr vjvFKTaxBQl5gCSY8Zgv3ndkA41CcmgAguu6mUCqNs3S39zaoXZi7uzdBJI35Jsoi2XrUn/Jn6K dMrRsL14qtq5d3cxkNYub8ixrO9J5ClFYf7wngwhQexU5Bgu5QJ608aioBpRkovHtsxzMp2XAvp LE+mvX8g== X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD025; 1:jQRR0cU53O8jNO4iyx+LDraN2KXh2DGwuvKkqhBt3urGUdHRlvoFi85PCk8ipfoih/5zR7n2ipmk2Ep7WH+MoJiWyvZytqSavpyqxgFfNvaYPtwP+wi/Jxhvbb0LRSOCmg+vfv+1Hp7vU9+SRU80RTg/13CdaHJZ/XwPWzrbi3g7tImhAQGe6ql3LW53wqSZN7Spw9qEIyT4QYge8DN2QXPfcYPEZkZB/lbmLd27zC4lyXCCEqL+wc6Ct6b+tG/2xsy8weeDpwAywPbiXzgfJ1tugGT5Dnp1TdwFsfLB23BbGwUidlfS555ZO5v2MpD6 X-Forefront-Antispam-Report: CIP:149.199.60.96; CTRY:US; IPV:NLI; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(339900001)(199003)(189002)(85426001)(19580405001)(19580395003)(118296001)(6806004)(105606002)(48376002)(92566002)(2950100001)(87936001)(50466002)(64026002)(33646002)(36756003)(71366001)(81156007)(5001960100002)(5001860100001)(4001540100001)(5001770100001)(50226001)(189998001)(5001830100001)(86362001)(575784001)(106466001)(62966003)(46102003)(47776003)(229853001)(77156002)(77096005)(64706001)(50986999)(76176999)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:BN1BFFO11HUB039; H:xsj-tvapsmtpgw01; FPR:; SPF:Fail; PTR:unknown-60-96.xilinx.com; A:1; MX:1; LANG:en; MIME-Version: 1.0 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN1BFFO11HUB039; 2:BmgitACZaXD7k08VU79bHxzuwON1q2CICYsjQ8A5?= =?us-ascii?Q?LNL+jQk5+gjrDqfP4ZOAGXHg; 2:fgX3tMeStJz6MsV9qLVbx5+D1S6WvXibl?= =?us-ascii?Q?WYw+uh63Vn4TqLrDtwj6JH945VET2nsHpzgCowOzbEcBSl2I2nXCGodxrVpG?= =?us-ascii?Q?lIWyAhUAg/dLIXoTaGBmgs6XftwGA3JcqZ4wf5R2dL7QS8CrdM4FBixOOMny?= =?us-ascii?Q?Shw6uje70RMZoBfR0LkrtfBz50QfFePgM/C7BD6psgddxg4u3WSHhEB4EtOe?= =?us-ascii?Q?mz7VmDBqHRjv8h4CGXxDSE=3D; 6:dDMd2WZ2BoOn/30xQK8c8QiEytl/2hXU?= =?us-ascii?Q?NVyxLVliVqcJPXwZ1d0Xje4N9hqGFDDQbKovl4ZV27GYb2D0SvLMZ/m1JX/O?= =?us-ascii?Q?+3y+GDHJnbFo8hZjFy3DxEaHpiVnXO6Bfowpflf+s1TY9Y2bk5kQZXEmd9Ts?= =?us-ascii?Q?wyBKOGvnUi0X1BI5+mXIZAnx3I5ZcoLDcZDuGzZEP+jnq+3rD1rpALWLSe6h?= =?us-ascii?Q?ufHc5QQ4nhDGThgtEv8xhphjah4nizrNQfU+Ot/arC5SWX1yKg30s5ukRCSV?= =?us-ascii?Q?fiYhjgDExfRrCl/mfEMak4X730qrSDqeF17zlxApTr6/gPKnEJkQlWzJb2i8?= =?us-ascii?Q?+RyEuZY70GiRb3KLzNIykfzxy4/jOovI8V4k/5sQszx0tIVOu7mnOQQK3RU6?= =?us-ascii?Q?vBcxg1cKDHZMIWPMeFvA1+WXdFxI/X1OHS2xuFtNpOV7FUr2EIPMG95S+uCx?= =?us-ascii?Q?mmDDfkIGd7pwGRdHGeVAQYaSNfowW7KBZRJFM4JqUxlET0U8B7R84Xu/CFHI?= =?us-ascii?Q?; 3:8lOMmOdNGPbtlxcXZqwHPDNydt/pwsihcASPTbByIH1+RbQQbiriK1Gxd?= =?us-ascii?Q?0g1CK9M4a+zrlIY00jbYoH49wkjZfrDqVvsEtzvYJTeXOfbr2LiMfLqS/u5L?= =?us-ascii?B?bEtRWVFMK3ZBVGZISE10dk9xeXNtbVFBcjhqUFlDS08NCg0KDQoNCmgrVGs2?= =?us-ascii?Q?xKwtiHNRJqahjNX2fJE77erWVZsT0eWZ0ZNfzzUFO6+XSyC33HkxCztyCynP?= =?us-ascii?Q?MJOOUT0tUqk039jIJFLpRBVeb4GgEMQAC4jGtGA+JQlyPhBqyjgjs0ocRsGr?= =?us-ascii?Q?pIDJ76U/pVQx0nt0V6cVHvJvU=3D; 9:lnQUYlbOl3o2+YuNf8r6f7bGTKCcx?= =?us-ascii?Q?ZSPNnin8ITLE9KASbTDzKQnd+OkXe/4MfWKF+8E5czSPGl3xwGLNqsFLbVgK?= =?us-ascii?Q?6q7YicywRCngrgJxO0V0CgDWwjBJ+lJD5TjFawDK+TGfgz7MlpqoQhGhJHu7?= =?us-ascii?Q?/et8lKwsfRNgRezwjoqUed5khnrm4eCgocZUdbCYikveYV+WiQ4/PmTSuR45?= =?us-ascii?Q?pENQH4QoJjLT8nOzwB52H/FQfhDM0EpQ2dkuTD3aI4y4K8eeC6PxanVUgaGP?= =?us-ascii?Q?XNEdkN9tESGvNPvmDooQIYpaa77YDYfWiHFoNn3p5IlXn6qiuCWy3fi8ZOaT?= =?us-ascii?Q?M1HEzUDhI4dl3m/vz/44Ip2bP2OSPpc4W3tsm1nTuVztdmz9fvsPZ1y0j/qY?= =?us-ascii?Q?v3ufHxRUxjzBdbtp8+lDgFI7qIVYymBamYHIVOy/vLEDwsQP7Vy9gld/3Mc5?= =?us-ascii?Q?EJ60MawQRcVzJARylYP/suLDYI0XDvESCheq8IG8X0xbP1gnnAjeR00IpBnl?= =?us-ascii?Q?fCmQIx5U6TizX8Hbwf0IFCEPb+3Hc2df9efxEYlgBxCH93yWSP+t46cE/b/m?= =?us-ascii?Q?5GkImbIpDAF6QpHlgaZT1LpigPI8fGKpapqGeUWHxRuEKil+U2OTXmCPfI0i?= =?us-ascii?Q?34YzDfC26XYD6GNuB8A3AEgO8g0Znql7hL/FTiQjJqdKW98f1ZYgh8RQgH7C?= =?us-ascii?Q?Z+NK7pTYGQgd5uKLZm14hn5DPWMxpZKY+ZjMMp9aQWVZy3AIpZjVpjgzk+GL?= =?us-ascii?Q?XOHMIqtMmn+MG5LW6GE+fV1PIL7RzXSCYbPdc0lCWGq0tpvy/jgthtwFJvn3?= =?us-ascii?Q?yFeAujoah9ghhq51hru+P=0D=0A1x=0D=0AzK=0D=0AyfYnahhcZhKpi1Wj8?= =?us-ascii?Q?y8MD+KyCcPkFTfvZOLEPlWBc5YclnvH5BgviJ7uRWy/jB6XZJ448OqAA7DcZ?= =?us-ascii?Q?IcULxJxY8ZLlTWGTzYD/uu8wjV8l/B3k1K4Tnn3fw+8X6Lni6OA18JzZ6D6G?= =?us-ascii?Q?yTI4F8uBnKbY5UsNxkit1ElTv+X1n0Ze0pGvbCNshrKW1l0GzRGwzdQ1CBra?= =?us-ascii?Q?6sbKBVT6XDYm87nwrNNA0c2kyDz0+UqCZ/Fw/wfE+t2Qr05P3BKyRndes; 3:?= =?us-ascii?Q?NdXd/y8/fojXgL7L+YYTkOlOhI62nc/VfHFbPf4uYB6cbjTL/DocY2RY38t8?= =?us-ascii?Q?sN76SxCqVecLIbmUwjU/vehHVtoL23BMEDs8mrvNiC6IDapsGaDpTSitfDXj?= =?us-ascii?Q?m9c/QCpnej4gGu6BdznijHnFl3QGwA=3D=3D; 10:TOoWSrYXFGAqj4RFL9LX?= =?us-ascii?Q?Y5+zgNWIDOnR2NitZjbTpF6Yr/biQUeWAFUi8FcpzXhx2+aUNFSuPuPMc5sE?= =?us-ascii?Q?7SetiPJAHZClhKrS19eztUTEt/U=3D?= X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1BFFO11HUB039; UriScan:; BCL:0; PCL:0; RULEID:; SRVR:BN1AFFO11HUB040; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:BN1BFFO11HUB039; BCL:0; PCL:0; RULEID:; SRVR:BN1BFFO11HUB039; X-Forefront-PRVS: 058043A388 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 May 2015 01:13:45.9432 (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: BN1BFFO11HUB039 X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11HUB040; 2:PACqyaTz4imtzO8RMRAAao2AiMO1z5RiAFmFnlb/jMGEg0Qn+Cp+FRGuJ/MEONv1; 2:WDRovndecNAcRpFSShWD+YyjDCG0R8sBo4tHW+LsE56LRCBpNaFW3PfvYoGXvhlTa+P0mA4NANlY7U3r9W6c+hSSBmreRhvFN9aIATHIicvxvrhGaoIW1AnPifQpp3IfZ6eSPMSr7GmckwUtFPlD89ckfOebBtU3zQqaRZp8j0Qk0HYb2G+/8aFT6ZNOXfnEd2B4GA4nzc4ZNDEsNIQogHqsqZnRdSTGZzCQvhgcPyo=; 9:YnvHne5cakCAAhR0Gaz0Cx0sb5Sgktq4MgWZHjUh1HOWM6DUtLuFjQy9oEzbnXD3qy2t8D8qImzuldQfSi0JTZYQv6nhsL6zHzK5c6+ESRaXNCVVnfKSABZ6obyiy3lBHXWZeuSPjABGttDj/y2kVQ== X-OriginatorOrg: xilinx.com X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 X-Received-From: 157.56.110.81 Cc: peter.maydell@linaro.org, peter.crosthwaite@xilinx.com, rth@twiddle.net, alistair.francis@xilinx.com Subject: [Qemu-devel] [PATCH v1 3/5] target-microblaze: Allow the stack protection to be disabled X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Microblaze stack protection is configurable and isn't always enabled. This patch allows the stack protection to be disabled from the CPU properties. Signed-off-by: Alistair Francis --- Changes since RFC: - Move the cfg.stackproc check into translate.c - Set the PVR register target-microblaze/cpu-qom.h | 5 +++++ target-microblaze/cpu.c | 5 +++++ target-microblaze/cpu.h | 1 + target-microblaze/translate.c | 2 +- 4 files changed, 12 insertions(+), 1 deletions(-) diff --git a/target-microblaze/cpu-qom.h b/target-microblaze/cpu-qom.h index e3e0701..7bc5b81 100644 --- a/target-microblaze/cpu-qom.h +++ b/target-microblaze/cpu-qom.h @@ -59,6 +59,11 @@ typedef struct MicroBlazeCPU { uint32_t base_vectors; /*< public >*/ + /* Microblaze Configuration Settings */ + struct { + bool stackproc; + } cfg; + CPUMBState env; } MicroBlazeCPU; diff --git a/target-microblaze/cpu.c b/target-microblaze/cpu.c index 555bc4c..4deb256 100644 --- a/target-microblaze/cpu.c +++ b/target-microblaze/cpu.c @@ -117,6 +117,9 @@ static void mb_cpu_realizefn(DeviceState *dev, Error **errp) | PVR2_USE_FPU2_MASK \ | PVR2_FPU_EXC_MASK \ | 0; + + env->pvr.regs[0] |= (cpu->cfg.stackproc ? PVR0_SPROT_MASK : 0); + env->pvr.regs[10] = 0x0c000000; /* Default to spartan 3a dsp family. */ env->pvr.regs[11] = PVR11_USE_MMU | (16 << 17); @@ -159,6 +162,8 @@ static const VMStateDescription vmstate_mb_cpu = { static Property mb_properties[] = { DEFINE_PROP_UINT32("xlnx.base-vectors", MicroBlazeCPU, base_vectors, 0), + DEFINE_PROP_BOOL("use-stack-protection", MicroBlazeCPU, cfg.stackproc, + true), DEFINE_PROP_END_OF_LIST(), }; diff --git a/target-microblaze/cpu.h b/target-microblaze/cpu.h index e4c1cde..481f463 100644 --- a/target-microblaze/cpu.h +++ b/target-microblaze/cpu.h @@ -128,6 +128,7 @@ typedef struct CPUMBState CPUMBState; #define PVR0_FAULT 0x00100000 #define PVR0_VERSION_MASK 0x0000FF00 #define PVR0_USER1_MASK 0x000000FF +#define PVR0_SPROT_MASK 0x00000001 /* User 2 PVR mask */ #define PVR1_USER2_MASK 0xFFFFFFFF diff --git a/target-microblaze/translate.c b/target-microblaze/translate.c index 4068946..19faf40 100644 --- a/target-microblaze/translate.c +++ b/target-microblaze/translate.c @@ -862,7 +862,7 @@ static inline TCGv *compute_ldst_addr(DisasContext *dc, TCGv *t) int stackprot = 0; /* All load/stores use ra. */ - if (dc->ra == 1) { + if (dc->ra == 1 && dc->cpu->cfg.stackproc) { stackprot = 1; }