From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id CFC77C48297 for ; Tue, 6 Feb 2024 15:42:09 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=C6dPU4tW5OP8uLynSBJPP2M693KtVLmakJQu/2aSfY8=; b=q5DGZT2pCRofBY eClgVPlPPYhr/dHHaqfDWrqRx2LXUD6OsCJOTwNexxyRhTGsaR/2lcaAZw7QevAQufD0vBXUFE/ac AfDhRHkOwPQuiJ4+xxAatFeIKYBV5lPEFkRp6YHurLyp3biEcOMSyea2LkxjgY34ByXVKnKp/cT2k xPWyalPX+ILceQayDj+Rj94rfZ80+siobGcUQ0Z7gfRS1ac8i4Q9Gu/X7upAAhibQ54WeprR8TPLd X0wkAvAu+mU/drqhmx/qcll/bif74TkLb+JIz4Q509v4lp/DS8Tq5JaGV2IPG947SGabXRBkxQUrn 7iQEvPBnVJEYDEQEoWqg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rXNaI-000000088oe-3xEI; Tue, 06 Feb 2024 15:42:06 +0000 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rXNaF-000000088nD-3RJp for linux-riscv@lists.infradead.org; Tue, 06 Feb 2024 15:42:05 +0000 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-292655cb454so742768a91.0 for ; Tue, 06 Feb 2024 07:42:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1707234122; x=1707838922; darn=lists.infradead.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=0serQGLJfMuAm7UCmFlRU9sglml/pgZOh7w7pdhvabI=; b=Qr/xBbb6ZAdO38RNK+iN11501+YvoAKYGcgJRZAKQA3Ij2NRWyFqHEI0F11V0SkzWD O9tWxhB4buAPCHc5tI76R6/TJDsfcxYuuiSeSU2GlWqGet3xxfn3BvD1qIFBAfkZJPZi GHnuyWJeICLctgFiFLqFwh8W06V+E4CkwSHnxcqNQxO18x9S/40aCv6vvVBZz3g84hFt syN/fJUfQL595qIvGvmlOVD/13TlPc/zQZOzhMDYshLg2iekWNegiLLnAGi847fOPltv /iqcsaoPpJZujxe4igWSTxci8QXveM92+X5AFXVZLnPtqW29qF37exT21FMDhFJPFJgl zh8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707234122; x=1707838922; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0serQGLJfMuAm7UCmFlRU9sglml/pgZOh7w7pdhvabI=; b=ZJZe8P7LWkZSNQDId0+ayt3YOMP4I8Y4EP9P+YnbWG+r3dapzf9/w9CYYFnwRwXcky sz+gWhbfIEZZLy9QNasp3JLCcEMwHVEfC3dXejoDpo9SaUWS7LsfIrdxIUIF60sO4hpF 0bVsQCc9Yjb4y1KJFHWVBcO/awgrfgXNfCwe/lEvpNoE9QpyU/Q+nCiRcGxQ/6VEVJqQ w4kPq0cUQo0j+r+R6EhWh7h6WX4aG2Bxdg4RdES7hii6ZKzGOe2VdGbSpk+MsDYtvLnb DnevgHba/NJ/1gxAQrfcs8zxtT98+8jUfyP3GiGo1nTbpyAYuOlyhv5lwaQPuZBQw5Hb kWPg== X-Gm-Message-State: AOJu0YyLzTB1uizjXzCaKfRwiqY5I47Bv4WlzT0zzDfIAhst66b02jxk a0sZw2dGgN02XdJ1KVJwb6VEz/1zg3prV1wtdaxjQfLY/ot9pqxOb8KK3sueQlU= X-Google-Smtp-Source: AGHT+IFMiM2uZXFaxsSt1Nw4LHlEplX/O/CZzHeieUF/qxwXcb9uaJCEqVrp6PvS/KS/7rS3FEo+Tw== X-Received: by 2002:a17:90b:1d0c:b0:296:9dd2:2dd4 with SMTP id on12-20020a17090b1d0c00b002969dd22dd4mr3027842pjb.2.1707234121881; Tue, 06 Feb 2024 07:42:01 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWaBqnyH0ebZtH7mMP0+4qY9XgtTGkr3tgX5sFeZYjL2+z8OusJmTJ8EHv6DyExJnYaGtnEeRso7OHaiuN0RSVodWWPaXLWG1CGKY9IqGOAhUKwda51Abk/dZJ3ch1fCRAAT6eVou0Lzqo7g6LgUllOpYejlSRrWKir/X1YWD4bHYrjJU2pK2Aynua4CNz3JGWA5EWIruD40WwVAmtGhD/emAgGSFQX+knjPSiTmisfhgS5jrGW0XWvTflb84QxgJtZK53BeIkzp+2uFM2UtUi2D6PKnfH8Os2zaJTguXjmZfZH Received: from carbon-x1.. ([2a01:e0a:999:a3a0:20a2:d2ee:941a:156e]) by smtp.gmail.com with ESMTPSA id kx18-20020a17090b229200b0029454cca5c3sm1803609pjb.39.2024.02.06.07.41.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Feb 2024 07:42:01 -0800 (PST) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Ben Dooks , David Laight , Charlie Jenkins Subject: [PATCH v2] riscv: misaligned: remove CONFIG_RISCV_M_MODE specific code Date: Tue, 6 Feb 2024 16:40:59 +0100 Message-ID: <20240206154104.896809-1-cleger@rivosinc.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240206_074203_912830_DBC082B1 X-CRM114-Status: GOOD ( 22.44 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org V2hpbGUgcmV3b3JraW5nIGNvZGUgdG8gZml4IHNwYXJzZSBlcnJvcnMsIGl0IGFwcGVhcnMgdGhh dCB0aGUKUklTQ1ZfTV9NT0RFIHNwZWNpZmljIGNvdWxkIGFjdHVhbGx5IGJlIHJlbW92ZWQgYW5k IHVzZSB0aGUgb25lIGZvcgpub3JtYWwgbW9kZS4gRXZlbiB0aG91Z2ggUklTQ1ZfTV9NT0RFIGNh biBkbyBkaXJlY3QgdXNlciBtZW1vcnkgYWNjZXNzLAp1c2luZyB0aGUgdXNlciB1YWNjZXNzIGhl bHBlcnMgaXMgYWxzbyBnb2luZyB0byB3b3JrLiBTaW5jZSB0aGVyZSBpcyBubwpuZWVkIGFueW1v cmUgZm9yIHNwZWNpZmljIGFjY2Vzc29ycyAobG9hZF91OCgpL3N0b3JlX3U4KCkpLCB3ZSBjYW4K ZGlyZWN0bHkgdXNlIG1lbWNweSgpL2NvcHlfe3RvL2Zyb219X3VzZXIoKSBhbmQgZ2V0IHJpZCBv ZiB0aGUgY29weQpsb29wIGVudGlyZWx5LiBfX3JlYWRfaW5zbigpIGlzIGFsc28gZml4ZWQgdG8g dXNlIGFuIHVuc2lnbmVkIGxvbmcKaW5zdGVhZCBvZiBhIHBvaW50ZXIgd2hpY2ggd2FzIGNhc3Qg aW4gX191c2VyIGFkZHJlc3Mgc3BhY2UuIFRoZQppbnNuX2FkZHIgcGFyYW1ldGVyIGlzIG5vdyBj YXN0IGZyb20gdW5zaWduZWQgbG5vZyB0byB0aGUgY29ycmVjdAphZGRyZXNzIHNwYWNlIGRpcmVj dGx5LgoKU2lnbmVkLW9mZi1ieTogQ2zDqW1lbnQgTMOpZ2VyIDxjbGVnZXJAcml2b3NpbmMuY29t PgoKLS0tCgpUaGUgdGVzdCB1c2VkIHRvIHZhbGlkYXRlIHRoZXNlIGNoYW5nZXMgaXMgdGhlIG9u ZSB1c2VkIG9yaWdpbmFsbHkgZm9yClMtbW9kZSBtaXNhbGlnbmVkIHN1cHBvcnQ6CgpodHRwczov L2dpdGh1Yi5jb20vY2xlbWVudGxlZ2VyL3VuYWxpZ25lZF90ZXN0CgpUaGlzIHRlc3QgZXhlcmNp c2UgKGFsbW9zdCkgYWxsIHRoZSBzdXBwb3J0ZWQgaW5zdHJ1Y3Rpb25zLCBhbGwgdGhlCnJlZ2lz dGVycyBmb3IgRlBVIGluc3RydWN0aW9ucyBhbmQgaXMgY29tcGlsZWQgd2l0aCBhbmQgd2l0aG91 dApjb21wcmVzc2VkIGluc3RydWN0aW9ucy4KCkZvciBTLW1vZGUsIHlvdSBzaW1wbHkgbmVlZCBh IGNsYXNzaWMgdG9vbGNoYWluIGFuZCBleHBvcnQgQ1JPU1NfQ09NUElMRQp0byBtYXRjaCBpdC4K CkZvciBNLW1vZGUgdmFsaWRhdGlvbiwgdGhlIGZvbGxvd2luZyBzdGVwcyBjYW4gYmUgdXNlZDoK CkJ1aWxkIGEgbm9tbXUgdG9vbGNoYWluIHdpdGggYnVpbGRyb290IHRvb2xjaGFpbjoKJCBnaXQg Y2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2J1aWxkcm9vdC9idWlsZHJvb3QuZ2l0CiQgY2QgYnVp bGRyb290CiQgbWFrZSBPPWJ1aWxkX25vbW11IHFlbXVfcmlzY3Y2NF9ub21tdV92aXJ0X2RlZmNv bmZpZwoKVGVzdDoKJCBnaXQgY2xvbmUgaHR0cHM6Ly9naXRodWIuY29tL2NsZW1lbnRsZWdlci91 bmFsaWduZWRfdGVzdC5naXQKJCBjZCB1bmFsaWduZWRfdGVzdAokIG1ha2UgQ0ZMQUdTPSItZlBJ QyAtV2wsLWVsZjJmbHQ9LXIiCkNST1NTX0NPTVBJTEU9PGJ1aWxkcm9vdD4vYnVpbGRfbm9tbXUv aG9zdC9iaW4vcmlzY3Y2NC1idWlsZHJvb3QtbGludXgtdWNsaWJjLQoKQ29weSB0aGUgcmVzdWx0 aW5nIGVsZiBmaWxlcyAodW5hbGlnbmVkICYgdW5hbGlnbmVkX2MpIHRvIGJ1aWxkcm9vdCByb290 ZnMgYW5kIHJlYnVpbGQgaXQuCiQgY3AgdW5hbGlnbmVkIHVuYWxpZ25lZF9jIDxidWlsZHJvb3Q+ L2J1aWxkX25vbW11L3RhcmdldC9yb290CiQgY2QgPGJ1aWxkcm9vdD4vYnVpbGRfbm9tbXUvCiQg bWFrZQoKS2VybmVsOgokIG1ha2UgTz1idWlsZF9ub21tdSBub21tdV92aXJ0X2RlZmNvbmZpZwok IG1ha2UgTz1idWlsZF9ub21tdSBsb2FkZXIKCkVpdGhlciBzZXQgdGhlIGtlcm5lbCBpbml0cmFt ZnMgb3IgcHJvdmlkZSBvbmUgb24gc3Bpa2UgY29tbWFuZCBsaW5lCnVzaW5nIHRoZSBvbmUgYnVp bHQgd2l0aCBidWlsZHJvb3QKClRoZW4gdG8gcnVuIGl0IG9uIHNwaWtlIChRRU1VIGFsd2F5cyBl bXVsYXRlIG1pc2FsaWduZWQgYWNjZXNzZXMgYW5kCndvbid0IGdlbmVyYXRlIGFueSBtaXNhbGln bmVkIGV4Y2VwdGlvbik6CgokIHNwaWtlIDxrZXJuZWw+L2J1aWxkX25vbW11L2xvYWRlcgoKLS0t CgpWMjoKIC0gUmViYXNlZCBvbiBtYXN0ZXIKIC0gQWxpZ24gbWFjcm8gZW5kICJcIgoKTGluayB0 byB2MTogaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvbGludXgtcmlzY3YvMjAyMzExMjgxNjUyMDYu NTg5MjQwLTEtY2xlZ2VyQHJpdm9zaW5jLmNvbS8KCk5vdGVzOiBUaGlzIHBhdGNoIGlzIGEgY29t cGxldGUgcmV3b3JrIG9mIGEgcHJldmlvdXMgb25lIFsxXSBhbmQgdGh1cyBpcwpub3QgYSBWMy4K ClsxXSBodHRwczovL2xvcmUua2VybmVsLm9yZy9saW51eC1yaXNjdi9kMTU2MjQyYS1mMTA0LTQ5 MjUtOTczNi02MjRhNGJhODIxMGRAcml2b3NpbmMuY29tLwotLS0KIGFyY2gvcmlzY3Yva2VybmVs L3RyYXBzX21pc2FsaWduZWQuYyB8IDEwNiArKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEg ZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA4OSBkZWxldGlvbnMoLSkKCmRpZmYgLS1n aXQgYS9hcmNoL3Jpc2N2L2tlcm5lbC90cmFwc19taXNhbGlnbmVkLmMgYi9hcmNoL3Jpc2N2L2tl cm5lbC90cmFwc19taXNhbGlnbmVkLmMKaW5kZXggOGRlZDIyNWU4YzViLi5mYjIwMmRkMThmZTUg MTAwNjQ0Ci0tLSBhL2FyY2gvcmlzY3Yva2VybmVsL3RyYXBzX21pc2FsaWduZWQuYworKysgYi9h cmNoL3Jpc2N2L2tlcm5lbC90cmFwc19taXNhbGlnbmVkLmMKQEAgLTI2NCw4NiArMjY0LDE0IEBA IHN0YXRpYyB1bnNpZ25lZCBsb25nIGdldF9mMzJfcnModW5zaWduZWQgbG9uZyBpbnNuLCB1OCBm cF9yZWdfb2Zmc2V0LAogI2RlZmluZSBHRVRfRjMyX1JTMkMoaW5zbiwgcmVncykgKGdldF9mMzJf cnMoaW5zbiwgMiwgcmVncykpCiAjZGVmaW5lIEdFVF9GMzJfUlMyUyhpbnNuLCByZWdzKSAoZ2V0 X2YzMl9ycyhSVkNfUlMyUyhpbnNuKSwgMCwgcmVncykpCiAKLSNpZmRlZiBDT05GSUdfUklTQ1Zf TV9NT0RFCi1zdGF0aWMgaW5saW5lIGludCBsb2FkX3U4KHN0cnVjdCBwdF9yZWdzICpyZWdzLCBj b25zdCB1OCAqYWRkciwgdTggKnJfdmFsKQotewotCXU4IHZhbDsKLQotCWFzbSB2b2xhdGlsZSgi bGJ1ICUwLCAlMSIgOiAiPSZyIiAodmFsKSA6ICJtIiAoKmFkZHIpKTsKLQkqcl92YWwgPSB2YWw7 Ci0KLQlyZXR1cm4gMDsKLX0KLQotc3RhdGljIGlubGluZSBpbnQgc3RvcmVfdTgoc3RydWN0IHB0 X3JlZ3MgKnJlZ3MsIHU4ICphZGRyLCB1OCB2YWwpCi17Ci0JYXNtIHZvbGF0aWxlICgic2IgJTAs ICUxXG4iIDogOiAiciIgKHZhbCksICJtIiAoKmFkZHIpKTsKLQotCXJldHVybiAwOwotfQotCi1z dGF0aWMgaW5saW5lIGludCBnZXRfaW5zbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdWxvbmcgbWVw YywgdWxvbmcgKnJfaW5zbikKLXsKLQlyZWdpc3RlciB1bG9uZyBfX21lcGMgYXNtICgiYTIiKSA9 IG1lcGM7Ci0JdWxvbmcgdmFsLCBydmNfbWFzayA9IDMsIHRtcDsKLQotCWFzbSAoImFuZCAlW3Rt cF0sICVbYWRkcl0sIDJcbiIKLQkJImJuZXogJVt0bXBdLCAxZlxuIgotI2lmIGRlZmluZWQoQ09O RklHXzY0QklUKQotCQlfX3N0cmluZ2lmeShMV1UpICIgJVtpbnNuXSwgKCVbYWRkcl0pXG4iCi0j ZWxzZQotCQlfX3N0cmluZ2lmeShMVykgIiAlW2luc25dLCAoJVthZGRyXSlcbiIKLSNlbmRpZgot CQkiYW5kICVbdG1wXSwgJVtpbnNuXSwgJVtydmNfbWFza11cbiIKLQkJImJlcSAlW3RtcF0sICVb cnZjX21hc2tdLCAyZlxuIgotCQkic2xsICVbaW5zbl0sICVbaW5zbl0sICVbeGxlbl9taW51c18x Nl1cbiIKLQkJInNybCAlW2luc25dLCAlW2luc25dLCAlW3hsZW5fbWludXNfMTZdXG4iCi0JCSJq IDJmXG4iCi0JCSIxOlxuIgotCQkibGh1ICVbaW5zbl0sICglW2FkZHJdKVxuIgotCQkiYW5kICVb dG1wXSwgJVtpbnNuXSwgJVtydmNfbWFza11cbiIKLQkJImJuZSAlW3RtcF0sICVbcnZjX21hc2td LCAyZlxuIgotCQkibGh1ICVbdG1wXSwgMiglW2FkZHJdKVxuIgotCQkic2xsICVbdG1wXSwgJVt0 bXBdLCAxNlxuIgotCQkiYWRkICVbaW5zbl0sICVbaW5zbl0sICVbdG1wXVxuIgotCQkiMjoiCi0J OiBbaW5zbl0gIj0mciIgKHZhbCksIFt0bXBdICI9JnIiICh0bXApCi0JOiBbYWRkcl0gInIiIChf X21lcGMpLCBbcnZjX21hc2tdICJyIiAocnZjX21hc2spLAotCSAgW3hsZW5fbWludXNfMTZdICJp IiAoWExFTl9NSU5VU18xNikpOwotCi0JKnJfaW5zbiA9IHZhbDsKLQotCXJldHVybiAwOwotfQot I2Vsc2UKLXN0YXRpYyBpbmxpbmUgaW50IGxvYWRfdTgoc3RydWN0IHB0X3JlZ3MgKnJlZ3MsIGNv bnN0IHU4ICphZGRyLCB1OCAqcl92YWwpCi17Ci0JaWYgKHVzZXJfbW9kZShyZWdzKSkgewotCQly ZXR1cm4gX19nZXRfdXNlcigqcl92YWwsICh1OCBfX3VzZXIgKilhZGRyKTsKLQl9IGVsc2Ugewot CQkqcl92YWwgPSAqYWRkcjsKLQkJcmV0dXJuIDA7Ci0JfQotfQotCi1zdGF0aWMgaW5saW5lIGlu dCBzdG9yZV91OChzdHJ1Y3QgcHRfcmVncyAqcmVncywgdTggKmFkZHIsIHU4IHZhbCkKLXsKLQlp ZiAodXNlcl9tb2RlKHJlZ3MpKSB7Ci0JCXJldHVybiBfX3B1dF91c2VyKHZhbCwgKHU4IF9fdXNl ciAqKWFkZHIpOwotCX0gZWxzZSB7Ci0JCSphZGRyID0gdmFsOwotCQlyZXR1cm4gMDsKLQl9Ci19 Ci0KLSNkZWZpbmUgX19yZWFkX2luc24ocmVncywgaW5zbiwgaW5zbl9hZGRyKQkJXAorI2RlZmlu ZSBfX3JlYWRfaW5zbihyZWdzLCBpbnNuLCBpbnNuX2FkZHIsIHR5cGUpCVwKICh7CQkJCQkJCVwK IAlpbnQgX19yZXQ7CQkJCQlcCiAJCQkJCQkJXAogCWlmICh1c2VyX21vZGUocmVncykpIHsJCQkJ XAotCQlfX3JldCA9IF9fZ2V0X3VzZXIoaW5zbiwgaW5zbl9hZGRyKTsJXAorCQlfX3JldCA9IF9f Z2V0X3VzZXIoaW5zbiwgKHR5cGUgX191c2VyICopIGluc25fYWRkcik7IFwKIAl9IGVsc2UgewkJ CQkJXAotCQlpbnNuID0gKihfX2ZvcmNlIHUxNiAqKWluc25fYWRkcjsJXAorCQlpbnNuID0gKih0 eXBlICopaW5zbl9hZGRyOwkJXAogCQlfX3JldCA9IDA7CQkJCVwKIAl9CQkJCQkJXAogCQkJCQkJ CVwKQEAgLTM1Niw5ICsyODQsOCBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRfaW5zbihzdHJ1Y3Qg cHRfcmVncyAqcmVncywgdWxvbmcgZXBjLCB1bG9uZyAqcl9pbnNuKQogCiAJaWYgKGVwYyAmIDB4 MikgewogCQl1bG9uZyB0bXAgPSAwOwotCQl1MTYgX191c2VyICppbnNuX2FkZHIgPSAodTE2IF9f dXNlciAqKWVwYzsKIAotCQlpZiAoX19yZWFkX2luc24ocmVncywgaW5zbiwgaW5zbl9hZGRyKSkK KwkJaWYgKF9fcmVhZF9pbnNuKHJlZ3MsIGluc24sIGVwYywgdTE2KSkKIAkJCXJldHVybiAtRUZB VUxUOwogCQkvKiBfX2dldF91c2VyKCkgdXNlcyByZWd1bGFyICJsdyIgd2hpY2ggc2lnbiBleHRl bmQgdGhlIGxvYWRlZAogCQkgKiB2YWx1ZSBtYWtlIHN1cmUgdG8gY2xlYXIgaGlnaGVyIG9yZGVy IGJpdHMgaW4gY2FzZSB3ZSAib3IiIGl0CkBAIC0zNjksMTYgKzI5NiwxNCBAQCBzdGF0aWMgaW5s aW5lIGludCBnZXRfaW5zbihzdHJ1Y3QgcHRfcmVncyAqcmVncywgdWxvbmcgZXBjLCB1bG9uZyAq cl9pbnNuKQogCQkJKnJfaW5zbiA9IGluc247CiAJCQlyZXR1cm4gMDsKIAkJfQotCQlpbnNuX2Fk ZHIrKzsKLQkJaWYgKF9fcmVhZF9pbnNuKHJlZ3MsIHRtcCwgaW5zbl9hZGRyKSkKKwkJZXBjICs9 IHNpemVvZih1MTYpOworCQlpZiAoX19yZWFkX2luc24ocmVncywgdG1wLCBlcGMsIHUxNikpCiAJ CQlyZXR1cm4gLUVGQVVMVDsKIAkJKnJfaW5zbiA9ICh0bXAgPDwgMTYpIHwgaW5zbjsKIAogCQly ZXR1cm4gMDsKIAl9IGVsc2UgewotCQl1MzIgX191c2VyICppbnNuX2FkZHIgPSAodTMyIF9fdXNl ciAqKWVwYzsKLQotCQlpZiAoX19yZWFkX2luc24ocmVncywgaW5zbiwgaW5zbl9hZGRyKSkKKwkJ aWYgKF9fcmVhZF9pbnNuKHJlZ3MsIGluc24sIGVwYywgdTMyKSkKIAkJCXJldHVybiAtRUZBVUxU OwogCQlpZiAoKGluc24gJiBfX0lOU05fTEVOR1RIX01BU0spID09IF9fSU5TTl9MRU5HVEhfMzIp IHsKIAkJCSpyX2luc24gPSBpbnNuOwpAQCAtMzkwLDcgKzMxNSw2IEBAIHN0YXRpYyBpbmxpbmUg aW50IGdldF9pbnNuKHN0cnVjdCBwdF9yZWdzICpyZWdzLCB1bG9uZyBlcGMsIHVsb25nICpyX2lu c24pCiAJCXJldHVybiAwOwogCX0KIH0KLSNlbmRpZgogCiB1bmlvbiByZWdfZGF0YSB7CiAJdTgg ZGF0YV9ieXRlc1s4XTsKQEAgLTQwOSw3ICszMzMsNyBAQCBpbnQgaGFuZGxlX21pc2FsaWduZWRf bG9hZChzdHJ1Y3QgcHRfcmVncyAqcmVncykKIAl1bnNpZ25lZCBsb25nIGVwYyA9IHJlZ3MtPmVw YzsKIAl1bnNpZ25lZCBsb25nIGluc247CiAJdW5zaWduZWQgbG9uZyBhZGRyID0gcmVncy0+YmFk YWRkcjsKLQlpbnQgaSwgZnAgPSAwLCBzaGlmdCA9IDAsIGxlbiA9IDA7CisJaW50IGZwID0gMCwg c2hpZnQgPSAwLCBsZW4gPSAwOwogCiAJcGVyZl9zd19ldmVudChQRVJGX0NPVU5UX1NXX0FMSUdO TUVOVF9GQVVMVFMsIDEsIHJlZ3MsIGFkZHIpOwogCkBAIC00OTAsOSArNDE0LDExIEBAIGludCBo YW5kbGVfbWlzYWxpZ25lZF9sb2FkKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCQlyZXR1cm4gLUVP UE5PVFNVUFA7CiAKIAl2YWwuZGF0YV91NjQgPSAwOwotCWZvciAoaSA9IDA7IGkgPCBsZW47IGkr KykgewotCQlpZiAobG9hZF91OChyZWdzLCAodm9pZCAqKShhZGRyICsgaSksICZ2YWwuZGF0YV9i eXRlc1tpXSkpCisJaWYgKHVzZXJfbW9kZShyZWdzKSkgeworCQlpZiAocmF3X2NvcHlfZnJvbV91 c2VyKCZ2YWwsICh1OCBfX3VzZXIgKilhZGRyLCBsZW4pKQogCQkJcmV0dXJuIC0xOworCX0gZWxz ZSB7CisJCW1lbWNweSgmdmFsLCAodTggKilhZGRyLCBsZW4pOwogCX0KIAogCWlmICghZnApCkBA IC01MTMsNyArNDM5LDcgQEAgaW50IGhhbmRsZV9taXNhbGlnbmVkX3N0b3JlKHN0cnVjdCBwdF9y ZWdzICpyZWdzKQogCXVuc2lnbmVkIGxvbmcgZXBjID0gcmVncy0+ZXBjOwogCXVuc2lnbmVkIGxv bmcgaW5zbjsKIAl1bnNpZ25lZCBsb25nIGFkZHIgPSByZWdzLT5iYWRhZGRyOwotCWludCBpLCBs ZW4gPSAwLCBmcCA9IDA7CisJaW50IGxlbiA9IDAsIGZwID0gMDsKIAogCXBlcmZfc3dfZXZlbnQo UEVSRl9DT1VOVF9TV19BTElHTk1FTlRfRkFVTFRTLCAxLCByZWdzLCBhZGRyKTsKIApAQCAtNTg2 LDkgKzUxMiwxMSBAQCBpbnQgaGFuZGxlX21pc2FsaWduZWRfc3RvcmUoc3RydWN0IHB0X3JlZ3Mg KnJlZ3MpCiAJaWYgKCFJU19FTkFCTEVEKENPTkZJR19GUFUpICYmIGZwKQogCQlyZXR1cm4gLUVP UE5PVFNVUFA7CiAKLQlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLQkJaWYgKHN0b3JlX3U4 KHJlZ3MsICh2b2lkICopKGFkZHIgKyBpKSwgdmFsLmRhdGFfYnl0ZXNbaV0pKQorCWlmICh1c2Vy X21vZGUocmVncykpIHsKKwkJaWYgKHJhd19jb3B5X3RvX3VzZXIoKHU4IF9fdXNlciAqKWFkZHIs ICZ2YWwsIGxlbikpCiAJCQlyZXR1cm4gLTE7CisJfSBlbHNlIHsKKwkJbWVtY3B5KCh1OCAqKWFk ZHIsICZ2YWwsIGxlbik7CiAJfQogCiAJcmVncy0+ZXBjID0gZXBjICsgSU5TTl9MRU4oaW5zbik7 Ci0tIAoyLjQzLjAKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpsaW51eC1yaXNjdiBtYWlsaW5nIGxpc3QKbGludXgtcmlzY3ZAbGlzdHMuaW5mcmFkZWFk Lm9yZwpodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LXJp c2N2Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f41.google.com (mail-pj1-f41.google.com [209.85.216.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CD36413398A for ; Tue, 6 Feb 2024 15:42:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.41 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707234124; cv=none; b=V+U2i7i5MYrkqzhwwP9LERTmcFJJYhc4Owa5dEvhyazOXIN5a5UEDr+7xEXPxP2v8jehE/hZqNfuoryTa+tYvOTmJ/BRuNaTxhxJ74uaqIFUeXvKRmiGqjtJWJdt0teev3zkb+F+Lt4xfTIsUB47IYMAwzervGHKhhBambLEpT0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1707234124; c=relaxed/simple; bh=eYRTJmOtYcWQAnASXaHSok8ye5YC98QuTwfe5/baHxQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version:Content-Type; b=hSQj8z7YzaMFZB7jemi5ET01UOGgVB7/+0B6xXj+oyv41sRimZ3PkStwPuMrQbAKABMv2IrgzS3MPb7+FGwGwelJJQ6YIeK8+fNkCj13Eu4ad1uBSASbap/72buLKJZWfYLJbQpQQ5YkRTeSm/ZXGddv+LN1YRQuVR+/rvojHTs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com; spf=pass smtp.mailfrom=rivosinc.com; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b=V1Mll6Co; arc=none smtp.client-ip=209.85.216.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=rivosinc.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=rivosinc-com.20230601.gappssmtp.com header.i=@rivosinc-com.20230601.gappssmtp.com header.b="V1Mll6Co" Received: by mail-pj1-f41.google.com with SMTP id 98e67ed59e1d1-2904c81f26eso738955a91.1 for ; Tue, 06 Feb 2024 07:42:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rivosinc-com.20230601.gappssmtp.com; s=20230601; t=1707234122; x=1707838922; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=0serQGLJfMuAm7UCmFlRU9sglml/pgZOh7w7pdhvabI=; b=V1Mll6CoUA2FbMs73143uQAUJNPBm7DEjnsM3a82e5H3/h9aLoohcyNYKSgfTx2UZJ yKjWPcvD9jc13EeeByigsgKkaC2KK6jC1h1ObOGraK/IZJIykW0rBMvoB1HjrNfeHabX C/NuSr5sy/CI+llVmJsXis2ePpLiQoOPucRUDQcRMVjT7eBl2oRyrIDSVIAhT4Zaceqn CPUY4PqpbkmrSYe/tCjJUO8gpDORyt+5XieZ5vj0KxfYXD1Xfrm/xg/98EKN/Q1CF/2p MSuq3ZfU0yCm17woxks+oNn74ct3Qvx8Zz4L76Gitya4AvB8AgzbdF65zzkas+9gSSE4 PyiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707234122; x=1707838922; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=0serQGLJfMuAm7UCmFlRU9sglml/pgZOh7w7pdhvabI=; b=uj7wY5eT7RYfjiB+jxkm4V3Kggv2eYnNUCF7fwjkM08tSVzEuoH5aCP7046X/Au7cf W/79k3AiYBuqCTBoRWnUAH9ehKqYD0cpRC6gedxye4a3qsG7TeOMM9F/CRkt2jkVVOzm EjLPC3O4lM3Nl6IjXVyXiA5D0kl3QMI7KflE/qTqD7DPOHdYbzWREQt0aACLzmyNrFnk Ci7uLHL0jN0+QZ3uqK8Kl7b3GB+xZ4XJE6BWGAZ1Zf/042wZ/7I8TLogxNzbO0/mUIVN MhmwKugtE6b55F86LtECzzpmkQEl4kbsEHLE61NjvHKfibqsbUyTdzSiIorA4SGU+bIJ Jlyw== X-Gm-Message-State: AOJu0Yx6/+YDd3xyLy56yRIcFj4dBvhDaFhI9+BJSI9847NzrehISFyG GZzS2Ku/+oV3EyFuBXOeOxWUgZ9BVQE0SlbxreGIabSCH25D49cdy+zYXDUrf3o= X-Google-Smtp-Source: AGHT+IFMiM2uZXFaxsSt1Nw4LHlEplX/O/CZzHeieUF/qxwXcb9uaJCEqVrp6PvS/KS/7rS3FEo+Tw== X-Received: by 2002:a17:90b:1d0c:b0:296:9dd2:2dd4 with SMTP id on12-20020a17090b1d0c00b002969dd22dd4mr3027842pjb.2.1707234121881; Tue, 06 Feb 2024 07:42:01 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWaBqnyH0ebZtH7mMP0+4qY9XgtTGkr3tgX5sFeZYjL2+z8OusJmTJ8EHv6DyExJnYaGtnEeRso7OHaiuN0RSVodWWPaXLWG1CGKY9IqGOAhUKwda51Abk/dZJ3ch1fCRAAT6eVou0Lzqo7g6LgUllOpYejlSRrWKir/X1YWD4bHYrjJU2pK2Aynua4CNz3JGWA5EWIruD40WwVAmtGhD/emAgGSFQX+knjPSiTmisfhgS5jrGW0XWvTflb84QxgJtZK53BeIkzp+2uFM2UtUi2D6PKnfH8Os2zaJTguXjmZfZH Received: from carbon-x1.. ([2a01:e0a:999:a3a0:20a2:d2ee:941a:156e]) by smtp.gmail.com with ESMTPSA id kx18-20020a17090b229200b0029454cca5c3sm1803609pjb.39.2024.02.06.07.41.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 06 Feb 2024 07:42:01 -0800 (PST) From: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= To: Paul Walmsley , Palmer Dabbelt , Albert Ou , linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Cl=C3=A9ment=20L=C3=A9ger?= , Ben Dooks , David Laight , Charlie Jenkins Subject: [PATCH v2] riscv: misaligned: remove CONFIG_RISCV_M_MODE specific code Date: Tue, 6 Feb 2024 16:40:59 +0100 Message-ID: <20240206154104.896809-1-cleger@rivosinc.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit While reworking code to fix sparse errors, it appears that the RISCV_M_MODE specific could actually be removed and use the one for normal mode. Even though RISCV_M_MODE can do direct user memory access, using the user uaccess helpers is also going to work. Since there is no need anymore for specific accessors (load_u8()/store_u8()), we can directly use memcpy()/copy_{to/from}_user() and get rid of the copy loop entirely. __read_insn() is also fixed to use an unsigned long instead of a pointer which was cast in __user address space. The insn_addr parameter is now cast from unsigned lnog to the correct address space directly. Signed-off-by: Clément Léger --- The test used to validate these changes is the one used originally for S-mode misaligned support: https://github.com/clementleger/unaligned_test This test exercise (almost) all the supported instructions, all the registers for FPU instructions and is compiled with and without compressed instructions. For S-mode, you simply need a classic toolchain and export CROSS_COMPILE to match it. For M-mode validation, the following steps can be used: Build a nommu toolchain with buildroot toolchain: $ git clone https://github.com/buildroot/buildroot.git $ cd buildroot $ make O=build_nommu qemu_riscv64_nommu_virt_defconfig Test: $ git clone https://github.com/clementleger/unaligned_test.git $ cd unaligned_test $ make CFLAGS="-fPIC -Wl,-elf2flt=-r" CROSS_COMPILE=/build_nommu/host/bin/riscv64-buildroot-linux-uclibc- Copy the resulting elf files (unaligned & unaligned_c) to buildroot rootfs and rebuild it. $ cp unaligned unaligned_c /build_nommu/target/root $ cd /build_nommu/ $ make Kernel: $ make O=build_nommu nommu_virt_defconfig $ make O=build_nommu loader Either set the kernel initramfs or provide one on spike command line using the one built with buildroot Then to run it on spike (QEMU always emulate misaligned accesses and won't generate any misaligned exception): $ spike /build_nommu/loader --- V2: - Rebased on master - Align macro end "\" Link to v1: https://lore.kernel.org/linux-riscv/20231128165206.589240-1-cleger@rivosinc.com/ Notes: This patch is a complete rework of a previous one [1] and thus is not a V3. [1] https://lore.kernel.org/linux-riscv/d156242a-f104-4925-9736-624a4ba8210d@rivosinc.com/ --- arch/riscv/kernel/traps_misaligned.c | 106 +++++---------------------- 1 file changed, 17 insertions(+), 89 deletions(-) diff --git a/arch/riscv/kernel/traps_misaligned.c b/arch/riscv/kernel/traps_misaligned.c index 8ded225e8c5b..fb202dd18fe5 100644 --- a/arch/riscv/kernel/traps_misaligned.c +++ b/arch/riscv/kernel/traps_misaligned.c @@ -264,86 +264,14 @@ static unsigned long get_f32_rs(unsigned long insn, u8 fp_reg_offset, #define GET_F32_RS2C(insn, regs) (get_f32_rs(insn, 2, regs)) #define GET_F32_RS2S(insn, regs) (get_f32_rs(RVC_RS2S(insn), 0, regs)) -#ifdef CONFIG_RISCV_M_MODE -static inline int load_u8(struct pt_regs *regs, const u8 *addr, u8 *r_val) -{ - u8 val; - - asm volatile("lbu %0, %1" : "=&r" (val) : "m" (*addr)); - *r_val = val; - - return 0; -} - -static inline int store_u8(struct pt_regs *regs, u8 *addr, u8 val) -{ - asm volatile ("sb %0, %1\n" : : "r" (val), "m" (*addr)); - - return 0; -} - -static inline int get_insn(struct pt_regs *regs, ulong mepc, ulong *r_insn) -{ - register ulong __mepc asm ("a2") = mepc; - ulong val, rvc_mask = 3, tmp; - - asm ("and %[tmp], %[addr], 2\n" - "bnez %[tmp], 1f\n" -#if defined(CONFIG_64BIT) - __stringify(LWU) " %[insn], (%[addr])\n" -#else - __stringify(LW) " %[insn], (%[addr])\n" -#endif - "and %[tmp], %[insn], %[rvc_mask]\n" - "beq %[tmp], %[rvc_mask], 2f\n" - "sll %[insn], %[insn], %[xlen_minus_16]\n" - "srl %[insn], %[insn], %[xlen_minus_16]\n" - "j 2f\n" - "1:\n" - "lhu %[insn], (%[addr])\n" - "and %[tmp], %[insn], %[rvc_mask]\n" - "bne %[tmp], %[rvc_mask], 2f\n" - "lhu %[tmp], 2(%[addr])\n" - "sll %[tmp], %[tmp], 16\n" - "add %[insn], %[insn], %[tmp]\n" - "2:" - : [insn] "=&r" (val), [tmp] "=&r" (tmp) - : [addr] "r" (__mepc), [rvc_mask] "r" (rvc_mask), - [xlen_minus_16] "i" (XLEN_MINUS_16)); - - *r_insn = val; - - return 0; -} -#else -static inline int load_u8(struct pt_regs *regs, const u8 *addr, u8 *r_val) -{ - if (user_mode(regs)) { - return __get_user(*r_val, (u8 __user *)addr); - } else { - *r_val = *addr; - return 0; - } -} - -static inline int store_u8(struct pt_regs *regs, u8 *addr, u8 val) -{ - if (user_mode(regs)) { - return __put_user(val, (u8 __user *)addr); - } else { - *addr = val; - return 0; - } -} - -#define __read_insn(regs, insn, insn_addr) \ +#define __read_insn(regs, insn, insn_addr, type) \ ({ \ int __ret; \ \ if (user_mode(regs)) { \ - __ret = __get_user(insn, insn_addr); \ + __ret = __get_user(insn, (type __user *) insn_addr); \ } else { \ - insn = *(__force u16 *)insn_addr; \ + insn = *(type *)insn_addr; \ __ret = 0; \ } \ \ @@ -356,9 +284,8 @@ static inline int get_insn(struct pt_regs *regs, ulong epc, ulong *r_insn) if (epc & 0x2) { ulong tmp = 0; - u16 __user *insn_addr = (u16 __user *)epc; - if (__read_insn(regs, insn, insn_addr)) + if (__read_insn(regs, insn, epc, u16)) return -EFAULT; /* __get_user() uses regular "lw" which sign extend the loaded * value make sure to clear higher order bits in case we "or" it @@ -369,16 +296,14 @@ static inline int get_insn(struct pt_regs *regs, ulong epc, ulong *r_insn) *r_insn = insn; return 0; } - insn_addr++; - if (__read_insn(regs, tmp, insn_addr)) + epc += sizeof(u16); + if (__read_insn(regs, tmp, epc, u16)) return -EFAULT; *r_insn = (tmp << 16) | insn; return 0; } else { - u32 __user *insn_addr = (u32 __user *)epc; - - if (__read_insn(regs, insn, insn_addr)) + if (__read_insn(regs, insn, epc, u32)) return -EFAULT; if ((insn & __INSN_LENGTH_MASK) == __INSN_LENGTH_32) { *r_insn = insn; @@ -390,7 +315,6 @@ static inline int get_insn(struct pt_regs *regs, ulong epc, ulong *r_insn) return 0; } } -#endif union reg_data { u8 data_bytes[8]; @@ -409,7 +333,7 @@ int handle_misaligned_load(struct pt_regs *regs) unsigned long epc = regs->epc; unsigned long insn; unsigned long addr = regs->badaddr; - int i, fp = 0, shift = 0, len = 0; + int fp = 0, shift = 0, len = 0; perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, regs, addr); @@ -490,9 +414,11 @@ int handle_misaligned_load(struct pt_regs *regs) return -EOPNOTSUPP; val.data_u64 = 0; - for (i = 0; i < len; i++) { - if (load_u8(regs, (void *)(addr + i), &val.data_bytes[i])) + if (user_mode(regs)) { + if (raw_copy_from_user(&val, (u8 __user *)addr, len)) return -1; + } else { + memcpy(&val, (u8 *)addr, len); } if (!fp) @@ -513,7 +439,7 @@ int handle_misaligned_store(struct pt_regs *regs) unsigned long epc = regs->epc; unsigned long insn; unsigned long addr = regs->badaddr; - int i, len = 0, fp = 0; + int len = 0, fp = 0; perf_sw_event(PERF_COUNT_SW_ALIGNMENT_FAULTS, 1, regs, addr); @@ -586,9 +512,11 @@ int handle_misaligned_store(struct pt_regs *regs) if (!IS_ENABLED(CONFIG_FPU) && fp) return -EOPNOTSUPP; - for (i = 0; i < len; i++) { - if (store_u8(regs, (void *)(addr + i), val.data_bytes[i])) + if (user_mode(regs)) { + if (raw_copy_to_user((u8 __user *)addr, &val, len)) return -1; + } else { + memcpy((u8 *)addr, &val, len); } regs->epc = epc + INSN_LEN(insn); -- 2.43.0