Received: by 2002:ac0:946b:0:0:0:0:0 with SMTP id j40csp2484261imj; Mon, 18 Feb 2019 06:49:57 -0800 (PST) X-Google-Smtp-Source: AHgI3IacbfbTgzq+Ylg++0t6G1yV6j0ua0bdj6q+vDqAJePJ5Y5uDvUHgD6cSOXEfV32L1pLOMEJ X-Received: by 2002:a63:d703:: with SMTP id d3mr19371813pgg.167.1550501397121; Mon, 18 Feb 2019 06:49:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1550501397; cv=none; d=google.com; s=arc-20160816; b=DWLP0PMd6nd1lBn7wcRNitVZ3cmFgpo7sw9EwWPWLnDkNIgIkxg5C90002gxQDWblj eNswnQOGfnYcv15aOGhKu/L4G1e8J6uVbf64/WN2l8anFnOfboM7nmYDs/+tcO5bIVWK 13PSSNiF03o98QMhmMzd0SGZLbpUW6IQGRtwC7pX+WNSbnOGE1LRo6ED49UCsgck/4dZ sTAm0+IK5QprAEi16rFzx8EvjvXhtFLUgoBvYPpVGOuctUN+ysQGwf/1V6zv+98nrYMb HTljfJh5iNjk8/6kiZOsg+RQ4ca23wknCANxc2phBWLy3KndAzSs1l6CtDb9iCvbj1C4 Ylgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=g6yxjTlVz6n1t9xW2XvMAnBVO1+GQtGry/l/3zYQn/4=; b=hsYLJMFENY+N4p6oK6KrEZBJoiIxk8BgV9PW7lJK1dbiSHM+uW288B9CVWE3IC0iV7 gY/9VrX9FI6GnJHvhF0jKAfTtj8XpORtULOObYyTPXVbnuuNrDLxLfxzsEGwtJCjK5my 9V1T7dP6ALNwI0OZcT2vlD/fJPk1tIKmn9SJICDfqprOxYIiHD2v3plYJQ4gmcfmEBmR j11re7HFeeJSBjIopu6hhHgiAiNgc4E4T37Bbg4JgH0cRgkQYzVrFe6OKXwA0Nked8ib A2/J1aO9cCpFxb5doMeJ/cdJCMIJYzx32uW6EfZNscvMAK83dAmTe4n+1XrLI6bHxqVY 0GiA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ttjAfd4K; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p12si3641326pls.111.2019.02.18.06.49.40; Mon, 18 Feb 2019 06:49:57 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ttjAfd4K; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731259AbfBRNpK (ORCPT + 99 others); Mon, 18 Feb 2019 08:45:10 -0500 Received: from mail.kernel.org ([198.145.29.99]:51156 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731243AbfBRNpJ (ORCPT ); Mon, 18 Feb 2019 08:45:09 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 17EBE21900; Mon, 18 Feb 2019 13:45:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550497508; bh=52jguU2lIT+tC5hQHCWzPFW4Jjo5ulyjtyV6HaEyWmU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ttjAfd4KyllCXYwkVHDDV/3EiPf+vumI3g4rqhlpRSOlodQiDQeVr5jYKZCPtgx4H VHHB/LsNQ4Kr2LPFUP7TC4nc0i3oE0oL4w8ESMAELpeY4hJGShg1mREAUHTdA5lzkF SWK4+GzG7FqM78rQPrsySjSHH/fhHy591/UAjOzQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Guo Ren , Hui Kai , Sasha Levin Subject: [PATCH 4.20 13/92] csky: fixup relocation error with 807 & 860 Date: Mon, 18 Feb 2019 14:42:16 +0100 Message-Id: <20190218133455.892331522@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218133454.668268457@linuxfoundation.org> References: <20190218133454.668268457@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.20-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit f553aa1c13cbc29aaf420349a28fc33ca98440e5 ] 810 doesn't support jsri instruction and csky-as will leave jsri + nop for relocation. Module-probe need replace them with lrw + jsr. Signed-off-by: Guo Ren Cc: Hui Kai Signed-off-by: Sasha Levin --- arch/csky/kernel/module.c | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/arch/csky/kernel/module.c b/arch/csky/kernel/module.c index 65abab0c7a47..0b028ee3c764 100644 --- a/arch/csky/kernel/module.c +++ b/arch/csky/kernel/module.c @@ -12,7 +12,7 @@ #include #include -#if defined(__CSKYABIV2__) +#ifdef CONFIG_CPU_CK810 #define IS_BSR32(hi16, lo16) (((hi16) & 0xFC00) == 0xE000) #define IS_JSRI32(hi16, lo16) ((hi16) == 0xEAE0) @@ -25,6 +25,26 @@ *(uint16_t *)(addr) = 0xE8Fa; \ *((uint16_t *)(addr) + 1) = 0x0000; \ } while (0) + +static void jsri_2_lrw_jsr(uint32_t *location) +{ + uint16_t location_tmp = (uint16_t *)location; + + if (IS_BSR32(*location_tmp, *(location_tmp + 1))) + return; + + if (IS_JSRI32(*location_tmp, *(location_tmp + 1))) { + /* jsri 0x... --> lrw r26, 0x... */ + CHANGE_JSRI_TO_LRW(location); + /* lsli r0, r0 --> jsr r26 */ + SET_JSR32_R26(location + 1); + } +} +#else +static void inline jsri_2_lrw_jsr(uint32_t *location) +{ + return; +} #endif int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, @@ -35,9 +55,6 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, Elf32_Sym *sym; uint32_t *location; short *temp; -#if defined(__CSKYABIV2__) - uint16_t *location_tmp; -#endif for (i = 0; i < sechdrs[relsec].sh_size / sizeof(*rel); i++) { /* This is where to make the change */ @@ -59,18 +76,7 @@ int apply_relocate_add(Elf32_Shdr *sechdrs, const char *strtab, case R_CSKY_PCRELJSR_IMM11BY2: break; case R_CSKY_PCRELJSR_IMM26BY2: -#if defined(__CSKYABIV2__) - location_tmp = (uint16_t *)location; - if (IS_BSR32(*location_tmp, *(location_tmp + 1))) - break; - - if (IS_JSRI32(*location_tmp, *(location_tmp + 1))) { - /* jsri 0x... --> lrw r26, 0x... */ - CHANGE_JSRI_TO_LRW(location); - /* lsli r0, r0 --> jsr r26 */ - SET_JSR32_R26(location + 1); - } -#endif + jsri_2_lrw_jsr(location); break; case R_CSKY_ADDR_HI16: temp = ((short *)location) + 1; -- 2.19.1