From nobody Wed Mar 1 14:44:39 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4PRcT32k88z3txCW; Wed, 1 Mar 2023 14:44:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4PRcT32Djhz3L10; Wed, 1 Mar 2023 14:44:39 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1677681879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LGg0Nc5nRtkgUTYi2vRxiGpYNKPnqbrP5DnhmS9mg4Y=; b=VYfN6jSVIOPtbhlbIJQCAmNHuPgNj+Hdiwo1Z3NWfyeXHEbnm1AZOKurBXnnqJNXC60AlG 0IihlGgSj0CrU/Pn++vOPV+eta7Vrz8K37CdK4OVNMyXyNk3uT4S1ALsbYXvN6j4qEWryt zrBVEnCBGBD4gJVDzjxc+WqY4ajrY6/LZKFGsQWmyzIfsVecIaK29iOUCBJYNTNL7XNA6C ntHfCVkGW9RD9r0KyElsuGWgX2Gt7IcnZ1zXxD+2qyd87cW+S22Uo9zeHyEuGLZC47wgU+ 3VrIpGNIZ2AfPA7wXvhdxOmgL1Xo1yQu0hlp4tDkwFvvDRIgdlDMR3dLuPl3NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1677681879; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=LGg0Nc5nRtkgUTYi2vRxiGpYNKPnqbrP5DnhmS9mg4Y=; b=oqSnEukngP9HGJOh32pdTUfxkNlKDCVK4Jl0dCF0OA4z2mwSgvqhiVe+CP0hbqGQb303Qx 8ewyHnCnFrBbG9WbYFycaQNQqp7sZBNgjM8QSz1XZSzQRaCDvgg4g8f3q/dtsKZ80/sFko tKu3pJYWSXFCr0tWms0dCeMcfIWDQerLRkbacyNqDhr6rzoqrGrN2xlxETDaYzRC2P5YYh mBKX5hbFdeSVmwc8oIIFUb+o+Lw7ajYZ9Fu9GJGqlrg+qQj1d5fjxq3mFtaJv0UgXO7TEm ln1uw1oh+uSQvIkKwAzJtT8e/MsuEQ+NHtvwXz3q05mCdYqYLHpgE3UT6pomBQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1677681879; a=rsa-sha256; cv=none; b=Jw6MWKLzB9/TvnEoMBM6jwCSY7ag67+BsqnudgbWN8NXfas/gG/BPt3t+kgtC5OPpWZGeJ ilMRLpuBo/XkCwplBbPjVyqQjYiqKHLnFJ9+K/VaZ4M9UUkG3DcdGAZ2xKpXYMKCsl49y6 FOKHDdk6hoU6FiK00J79OcX8rJYaphqGIpRDctg3Fj/Mulptr+i2FrLrlieWeJYqFRHfHq AcFwDGOYATm9FVwCF7upA0bsyCXyF0J2ezxONDbmsJ5Vd5P73ObF7ASAyPC4LBsT86m0Ww iUEqi9BPEMLDb2tHSjo46WqyQnjvuEzUOkopjnO/ytycNF984/Ku6hCje63s5g== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4PRcT31HBWzdf4; Wed, 1 Mar 2023 14:44:39 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 321EidSs020242; Wed, 1 Mar 2023 14:44:39 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 321Eidmr020241; Wed, 1 Mar 2023 14:44:39 GMT (envelope-from git) Date: Wed, 1 Mar 2023 14:44:39 GMT Message-Id: <202303011444.321Eidmr020241@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Andrew Turner Subject: git: 281402e0a563 - main - arm64: Shave off two instructions in exceptions List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: andrew X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: 281402e0a5638108ead2529c63e34f3d1771d05e Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by andrew: URL: https://cgit.FreeBSD.org/src/commit/?id=281402e0a5638108ead2529c63e34f3d1771d05e commit 281402e0a5638108ead2529c63e34f3d1771d05e Author: Dapeng Gao AuthorDate: 2023-03-01 14:28:53 +0000 Commit: Andrew Turner CommitDate: 2023-03-01 14:43:43 +0000 arm64: Shave off two instructions in exceptions This patch shaves off up to two three instructions in save_registers_head in exception.S for arm64, which would make more space for instructions that could be added in CheriBSD. This is done by: 1. Combining pointer arithmetic with pre-incrementing STP instructions 2. Removing the instruction that sets the frame pointer (x29) as its content is unused Differential Revision: https://reviews.freebsd.org/D34631 --- sys/arm64/arm64/exception.S | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/sys/arm64/arm64/exception.S b/sys/arm64/arm64/exception.S index 55bac5e5228a..fd55e1f39b58 100644 --- a/sys/arm64/arm64/exception.S +++ b/sys/arm64/arm64/exception.S @@ -41,35 +41,34 @@ __FBSDID("$FreeBSD$"); .macro save_registers_head el .if \el == 1 mov x18, sp - sub sp, sp, #128 + stp x0, x1, [sp, #(TF_X - TF_SIZE - 128)]! +.else + stp x0, x1, [sp, #(TF_X - TF_SIZE)]! .endif - sub sp, sp, #(TF_SIZE) - stp x28, x29, [sp, #(TF_X + 28 * 8)] - stp x26, x27, [sp, #(TF_X + 26 * 8)] - stp x24, x25, [sp, #(TF_X + 24 * 8)] - stp x22, x23, [sp, #(TF_X + 22 * 8)] - stp x20, x21, [sp, #(TF_X + 20 * 8)] - stp x18, x19, [sp, #(TF_X + 18 * 8)] - stp x16, x17, [sp, #(TF_X + 16 * 8)] - stp x14, x15, [sp, #(TF_X + 14 * 8)] - stp x12, x13, [sp, #(TF_X + 12 * 8)] - stp x10, x11, [sp, #(TF_X + 10 * 8)] - stp x8, x9, [sp, #(TF_X + 8 * 8)] - stp x6, x7, [sp, #(TF_X + 6 * 8)] - stp x4, x5, [sp, #(TF_X + 4 * 8)] - stp x2, x3, [sp, #(TF_X + 2 * 8)] - stp x0, x1, [sp, #(TF_X + 0 * 8)] - mrs x10, elr_el1 - mrs x11, spsr_el1 - mrs x12, esr_el1 + stp x2, x3, [sp, #(2 * 8)] + stp x4, x5, [sp, #(4 * 8)] + stp x6, x7, [sp, #(6 * 8)] + stp x8, x9, [sp, #(8 * 8)] + stp x10, x11, [sp, #(10 * 8)] + stp x12, x13, [sp, #(12 * 8)] + stp x14, x15, [sp, #(14 * 8)] + stp x16, x17, [sp, #(16 * 8)] + stp x18, x19, [sp, #(18 * 8)] + stp x20, x21, [sp, #(20 * 8)] + stp x22, x23, [sp, #(22 * 8)] + stp x24, x25, [sp, #(24 * 8)] + stp x26, x27, [sp, #(26 * 8)] + stp x28, x29, [sp, #(28 * 8)] .if \el == 0 mrs x18, sp_el0 .endif + mrs x10, elr_el1 + mrs x11, spsr_el1 + mrs x12, esr_el1 + stp x18, lr, [sp, #(TF_SP - TF_X)]! str x10, [sp, #(TF_ELR)] stp w11, w12, [sp, #(TF_SPSR)] - stp x18, lr, [sp, #(TF_SP)] mrs x18, tpidr_el1 - add x29, sp, #(TF_SIZE) .endm .macro save_registers el