From patchwork Mon May 5 07:11:13 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrey Ryabinin X-Patchwork-Id: 4112041 Return-Path: X-Original-To: patchwork-linux-arm@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id AC744BFF02 for ; Mon, 5 May 2014 07:39:50 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id D99F3201F5 for ; Mon, 5 May 2014 07:39:49 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id E87ED201BF for ; Mon, 5 May 2014 07:39:48 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1WhDRz-0000BO-0E; Mon, 05 May 2014 07:36:35 +0000 Received: from mailout4.w1.samsung.com ([210.118.77.14]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1WhDRv-00006Z-SV for linux-arm-kernel@lists.infradead.org; Mon, 05 May 2014 07:36:32 +0000 Received: from eucpsbgm2.samsung.com (unknown [203.254.199.245]) by mailout4.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0N53008KHBS2IV20@mailout4.w1.samsung.com> for linux-arm-kernel@lists.infradead.org; Mon, 05 May 2014 08:36:02 +0100 (BST) X-AuditID: cbfec7f5-b7fae6d000004d6d-19-53673f652bc5 Received: from eusync3.samsung.com ( [203.254.199.213]) by eucpsbgm2.samsung.com (EUCPMTA) with SMTP id 5A.72.19821.56F37635; Mon, 05 May 2014 08:36:05 +0100 (BST) Received: from localhost.localdomain ([106.109.128.4]) by eusync3.samsung.com (Oracle Communications Messaging Server 7u4-23.01 (7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0N5300HRBBS18490@eusync3.samsung.com>; Mon, 05 May 2014 08:36:05 +0100 (BST) From: Andrey Ryabinin To: linux@arm.linux.org.uk Subject: [PATCH] arm: memset: zero out upper bytes in r1 Date: Mon, 05 May 2014 11:11:13 +0400 Message-id: <1399273875-8403-1-git-send-email-a.ryabinin@samsung.com> X-Mailer: git-send-email 1.8.3.2 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOJMWRmVeSWpSXmKPExsVy+t/xq7qp9unBBmdmmFhs+/WIzWLT42us Fpd3zWGzuH2Z14HFo6W5h81j85J6j74tqxg9Pm+SC2CJ4rJJSc3JLEst0rdL4Mpo/V9XMJe9 4t+Kq+wNjHdYuxg5OSQETCRWNF1ggrDFJC7cW8/WxcjFISSwlFHi56p+Rginh0li6ovbYB1s AnoS/2ZtZwOxRQSkJGbsXMoOYjMLzGKUePgpAsQWFrCQOHnmD1gNi4CqxP1905lBbF4BV4kX 208zQmxTkFj2ZS3zBEbuBYwMqxhFU0uTC4qT0nON9IoTc4tL89L1kvNzNzFCPP91B+PSY1aH GAU4GJV4eD28U4KFWBPLiitzDzFKcDArifDOYkwPFuJNSaysSi3Kjy8qzUktPsTIxMEp1cC4 o893vuZSb5dzZ+btl78gn1F3ouxB3uWK2uy/m+rnWxetOigQs8vQWFBDcPnFyB/izK1fls7x lZ97KqbpcPJHg5fGJhfObDsd3/opXZvXJWfBtCcL93/+dj7VIDPwjhvrg+v7ivj/zNI4tvz5 6UOnlnWkbfVSWhcZayG16NqvJYsXJF7c9EJLWYmlOCPRUIu5qDgRANXMZq7aAQAA X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20140505_003632_076116_B144D305 X-CRM114-Status: UNSURE ( 7.78 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -5.7 (-----) Cc: Andrey Ryabinin , open list , "moderated list:ARM PORT" X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-2.5 required=5.0 tests=BAYES_00,RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP memset doesn't work right for following example: signed char c = 0xF0; memset(addr, c, size); Variable c is signed, so after typcasting to int the value will be 0xFFFFFFF0. This value will be passed through r1 regitster to memset function. memset doesn't zero out upper bytes in r1, so memory will be filled with 0xFFFFFFF0 instead of expected 0xF0F0F0F0. Signed-off-by: Andrey Ryabinin --- arch/arm/lib/memset.S | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S index 94b0650..a010f76 100644 --- a/arch/arm/lib/memset.S +++ b/arch/arm/lib/memset.S @@ -22,7 +22,8 @@ ENTRY(memset) /* * we know that the pointer in ip is aligned to a word boundary. */ -1: orr r1, r1, r1, lsl #8 +1: and r1, r1, #0xff + orr r1, r1, r1, lsl #8 orr r1, r1, r1, lsl #16 mov r3, r1 cmp r2, #16