From patchwork Mon May 12 18:04:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Pierrick Bouvier X-Patchwork-Id: 889363 Delivered-To: patch@linaro.org Received: by 2002:adf:fd8a:0:b0:3a1:f579:ae88 with SMTP id d10csp1739375wrr; Mon, 12 May 2025 11:07:04 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWCsY/h4C/8uVjKefufP2qPJXDHWONbfkncSlw+BvzLgTMhD8b1fKdliX0JSTKFlSVdpB7wNw==@linaro.org X-Google-Smtp-Source: AGHT+IELantfNySsjbjSJbh7kjuhR4yK0h6fpWCpAYwg465z7nYnGsmcEtzi/4CxJ7AnoFhasOkm X-Received: by 2002:a05:620a:3188:b0:7c5:b0b4:2cea with SMTP id af79cd13be357-7cd011577a9mr2136806085a.38.1747073224203; Mon, 12 May 2025 11:07:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1747073224; cv=none; d=google.com; s=arc-20240605; b=U13dn45ECXNf0l8072tM1H0pwIZImoKrKcwYhyBSomR0IHKkrkIeZU0LWK3gEAkiXn foNYZGWwjZYDtCbQ9XAACh1Y1ttAFHNhMJX8UlrLcabRMzya0dLaT5wcxL9NzqEcP0G9 2SsS1Bx4E53B0bE8SiWbZtmxSUPDTbKhsPplnTTbnKYwEaCKMM1t91ac7S1mx/hdrH1E +lZrXvpQFZlhy7oy7Gudw5BNKCOuSx7m6MvnlovT6TfVUgtHEOoiMQRFrGxOCQku3b2F ABvLhT1u2q1Lbc2hjymeK/aYhLDM37//ZamNyDza5dgp0WfR07JEBJXSTqj0oBzvMXwQ 3JVg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:content-transfer-encoding :mime-version:message-id:date:subject:cc:to:from:dkim-signature; bh=4MW56a2N9JGW8XiFvlXolamnMWHQl+hL453c6R1PReI=; fh=PlN3fUhDtems6Bb7y59zYD8EwBcqcc7pnzqldojq+us=; b=cZpJvwLQ7yH9PdgcggN90DsCWBdnHJ5tZGZirS6A0UXnTpl03qVhRFSGYmgVnkzMJj D57GrPa/ht0PAyfHbDIlmDgEKHhUJ6JUg5NFx1p80pIZ8hCognePk6Xznh74msfK9/jv eG9JyST7Ncvz9S5TGOmiFwBwK26b7/XpuE57mRi+oqGAggkYPyaoC5TQMjs8XPGsXXEp /nx1R9McXElAar5N/y8s0WzjmCmv5IH8q3IJGMlAE0D5cPxEzH8VKnZpg0LYLPDAk3HH MZfFc4MGm2RVzXkuFcEMzCz9MI9vpwaoX02DqDjqKtal6st46+8YqjnRKuP3+swZkHxj co5A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GJtkrsRX; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id ada2fe7eead31-4deb20294d0si3393615137.501.2025.05.12.11.07.03 for (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Mon, 12 May 2025 11:07:04 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=GJtkrsRX; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom="qemu-devel-bounces+patch=linaro.org@nongnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org; dara=neutral header.i=@linaro.org Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1uEXWk-0002IS-25; Mon, 12 May 2025 14:05:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1uEXWg-000279-1I for qemu-devel@nongnu.org; Mon, 12 May 2025 14:05:18 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1uEXWc-0008QQ-7s for qemu-devel@nongnu.org; Mon, 12 May 2025 14:05:17 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-740b3a18e26so4015992b3a.2 for ; Mon, 12 May 2025 11:05:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1747073112; x=1747677912; darn=nongnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=4MW56a2N9JGW8XiFvlXolamnMWHQl+hL453c6R1PReI=; b=GJtkrsRX0lL/t7pMXOKQ4tEKv7s07KSmJv3S5DHxm43CiaAE0VWOr3Ue6I1xigKMfV A/SvWbtbLtvL+iSoKkO1Feskum8IdIckZnIERD3jHRYXvE4ohlZhmfk/hhgPKG7QrY40 br3R1IpJDL6e25Xa8zIZuIhYoC5HaVMJrFJh5N1ZSUm2AgIsUgeLZSztFkreYlSSmf/W mVhHPFzj8k2SAX9b+VrFotv1rnLtkDFu5I1AEMCy+JBHe1AvckdRdOKPtTyos6ehuy5C XN91Ng1jpmAoTWLtlhhXoZOvgKPIt6R8qOp+qsoyTesLtzs6HJQgHUi0+Pze1EAQr6KC QvfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747073112; x=1747677912; 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=4MW56a2N9JGW8XiFvlXolamnMWHQl+hL453c6R1PReI=; b=Si53+rK4A9oH3y2xVOPA35ql4v7kbrzOSJuIsxFk42MsW0MTH+4V5lBK4mju0YkPY9 0g4onJbawHIzoaX0+suDNutanr6p+aPHlQnyN4hKnPMcCGhmQOBpBthOuAmK2OMXrWzN Y9qnWRQhRZGbCbBpkxH/+zRZDjYMKvuU/Abouw3UiS7Mudgpgs9qr0+hvn7hbMAHE0LL 0IKgeauyXjhzL3DUvQJdX8oWnM4tiBE3OuYyxXgPIm+VDIl0wszppBFnumaYzH39yDhh dfOCMCifnR72bQ0nea+7Z3PHQae0zqdUWokxMaCUGwTQ1kDqQ847ha9IAtUbllTOyLLY sJ9A== X-Gm-Message-State: AOJu0YwP15uJHvHJpOP5TWfQyOaQHkgdPO8WO71EWwoJUGILyY8rfPOb 3S2DSiepJZQt1KDfunhIyOywbHZE9CP7KSfqG9KV7UHtxs/Ij84fSnxgh8FcoFZ9lkGFFSiOb+B Z X-Gm-Gg: ASbGncuLjqOBnLiiX5zT/Dj4TVLmfViF+4kn8IZ+d+N7gAX7iSfCI6vNPlHJa1Bkidw BPSAH5FufNOwQONHV8rQ13E7FmEzgS7CT9Bu4WVX3XKM9QmwSfqCY0blN7FDdHnOzYO3LtUBclO NUV7vlyB6pKHcXe3BChMQN02Bj2uf1mMqLNJxj7KzAMcT6uPzDM6f7pib1T13CiB8IagiLg/25W ymwIyIX/iebYhc8zo8mBOwagWFYzanBDxjog0sgWZNfrKoBMcQU4Ne6ijgkxXd50rNQsFhU5A6+ r4yYeharb0Q2T2QI0jpLlFxnOxZ+EN6u/808sHMWS7QudMuREGo= X-Received: by 2002:a17:902:f68f:b0:223:66a1:4503 with SMTP id d9443c01a7336-22fc8b73d0emr172327945ad.30.1747073111863; Mon, 12 May 2025 11:05:11 -0700 (PDT) Received: from pc.. ([38.41.223.211]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-22fc82a2e4fsm65792005ad.232.2025.05.12.11.05.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 May 2025 11:05:11 -0700 (PDT) From: Pierrick Bouvier To: qemu-devel@nongnu.org Cc: =?utf-8?q?Philippe_Mathieu-Daud=C3=A9?= , kvm@vger.kernel.org, alex.bennee@linaro.org, anjo@rev.ng, qemu-arm@nongnu.org, Peter Maydell , Paolo Bonzini , Richard Henderson , Pierrick Bouvier Subject: [PATCH v8 00/48] single-binary: compile target/arm twice Date: Mon, 12 May 2025 11:04:14 -0700 Message-ID: <20250512180502.2395029-1-pierrick.bouvier@linaro.org> X-Mailer: git-send-email 2.47.2 MIME-Version: 1.0 Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=pierrick.bouvier@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org More work toward single-binary. Some files have external dependencies for the single-binary: - target/arm/gdbstub.c: gdbhelpers - target/arm/arm-qmp-cmds.c: qapi - target/arm/tcg/translate*: need deep cleanup in include/tcg - target/arm/tcg/cpu*: need TargetInfo implemented for arm/aarch64 - target/arm/tcg/*-helper*: need deeper split between aarch64 and arm code They will not be ported in this series. Built on {linux, windows, macos} x {x86_64, aarch64} Fully tested on linux x {x86_64, aarch64} Series is now tested and fully reviewed. Thanks for pulling it. v8 --- - rebase on top of master v7 -- - rebase on top of master - removed patch to apply target config for picking files in libsystem/libuser, since it was the only one not reviewed. v6 -- CI: https://github.com/pbo-linaro/qemu/actions/runs/14844742069/job/41675865456 - Replace target_ulong -> vaddr for HWBreakpoint (Philippe) - build target/arm/tcg/crypto_helper.c once (Richard) - build target/arm/tcg/tlb-insns for system only (Richard) - build target/arm/tcg/arith_helper once (Richard) v5 -- CI: https://github.com/pbo-linaro/qemu/actions/runs/14825451208/job/41617949501 - Do not define a separate vaddr type in tcg, simply alias to i32/i64 (Richard) - target/arm/tcg/crypto_helper.c - target/arm/tcg/hflags.c - target/arm/tcg/iwmmxt_helper.c - target/arm/tcg/neon_helper.c - target/arm/tcg/tlb_helper.c - target/arm/tcg/tlb-insns.c - target/arm/tcg/arith_helper.c - target/arm/tcg/vfp_helper.c v4 -- CI: https://github.com/pbo-linaro/qemu/actions/runs/14816460393/job/41597560792 - add patch to apply target config for picking files in libsystem/libuser Useful for Philippe series for semihosting: https://lore.kernel.org/qemu-devel/20250502220524.81548-1-philmd@linaro.org/T/#me750bbaeeba4d16791121fe98b44202afaec4068 - update some patches description (Philippe & Richard) - tcg: introduce vaddr type (Richard) - modify concerned helpers to use vaddr instead of i64 (Richard) - use int64_t instead of uint64_t for top_bits in ptw.c (Philippe) - arm_casq_ptw: use CONFIG_ATOMIC64 instead of TARGET_AARCH64 and comment why (Richard) - target/arm/machine.c v3 -- CI: https://github.com/pbo-linaro/qemu/actions/runs/14765763846/job/41456754153 - Add missing license for new files (Richard) - target/arm/debug_helper.c - target/arm/helper.c - target/arm/vfp_fpscr.c - target/arm/arch_dump.c - target/arm/arm-powerctl.c - target/arm/cortex-regs.c - target/arm/ptw.c - target/arm/kvm-stub.c v2 -- - Remove duplication of kvm struct and constant (Alex) - Use target_big_endian() (Anton) v1 -- - target/arm/cpu.c Philippe Mathieu-Daudé (1): target/arm: Replace target_ulong -> vaddr for HWBreakpoint Pierrick Bouvier (47): include/system/hvf: missing vaddr include meson: add common libs for target and target_system target/arm: move kvm stubs and remove CONFIG_KVM from kvm_arm.h target/arm/kvm-stub: add kvm_arm_reset_vcpu stub target/arm/cpu: move arm_cpu_kvm_set_irq to kvm.c target/arm/cpu: remove TARGET_BIG_ENDIAN dependency target/arm/cpu: remove TARGET_AARCH64 around aarch64_cpu_dump_state common target/arm/cpu: remove TARGET_AARCH64 in arm_cpu_finalize_features target/arm/cpu: compile file twice (user, system) only target/arm/cpu32-stubs.c: compile file twice (user, system) tcg: add vaddr type for helpers target/arm/helper: use vaddr instead of target_ulong for exception_pc_alignment target/arm/helper: use vaddr instead of target_ulong for probe_access target/arm/helper: extract common helpers target/arm/debug_helper: only include common helpers target/arm/debug_helper: remove target_ulong target/arm/debug_helper: compile file twice (user, system) target/arm/helper: restrict include to common helpers target/arm/helper: replace target_ulong by vaddr target/arm/helper: expose aarch64 cpu registration target/arm/helper: remove remaining TARGET_AARCH64 target/arm/helper: compile file twice (user, system) target/arm/vfp_fpscr: compile file twice (user, system) target/arm/arch_dump: remove TARGET_AARCH64 conditionals target/arm/arch_dump: compile file once (system) target/arm/arm-powerctl: compile file once (system) target/arm/cortex-regs: compile file once (system) target/arm/ptw: replace target_ulong with int64_t target/arm/ptw: replace TARGET_AARCH64 by CONFIG_ATOMIC64 from arm_casq_ptw target/arm/ptw: compile file once (system) target/arm/meson: accelerator files are not needed in user mode target/arm/kvm-stub: compile file once (system) target/arm/machine: reduce migration include to avoid target specific definitions target/arm/machine: remove TARGET_AARCH64 from migration state target/arm/machine: move cpu_post_load kvm bits to kvm_arm_cpu_post_load function target/arm/kvm-stub: add missing stubs target/arm/machine: compile file once (system) target/arm/tcg/vec_internal: use forward declaration for CPUARMState target/arm/tcg/crypto_helper: compile file once target/arm/tcg/hflags: compile file twice (system, user) target/arm/tcg/iwmmxt_helper: compile file twice (system, user) target/arm/tcg/neon_helper: compile file twice (system, user) target/arm/tcg/tlb_helper: compile file twice (system, user) target/arm/helper: restrict define_tlb_insn_regs to system target target/arm/tcg/tlb-insns: compile file once (system) target/arm/tcg/arith_helper: compile file once target/arm/tcg/vfp_helper: compile file twice (system, user) meson.build | 78 ++- include/system/hvf.h | 1 + include/tcg/tcg-op-common.h | 1 + include/tcg/tcg.h | 14 + target/arm/helper.h | 1152 +------------------------------ target/arm/internals.h | 6 +- target/arm/kvm_arm.h | 87 +-- target/arm/tcg/helper.h | 1153 ++++++++++++++++++++++++++++++++ target/arm/tcg/vec_internal.h | 2 + include/exec/helper-head.h.inc | 11 + target/arm/arch_dump.c | 6 - target/arm/cpu.c | 47 +- target/arm/cpu32-stubs.c | 26 + target/arm/debug_helper.c | 6 +- target/arm/helper.c | 24 +- target/arm/hyp_gdbstub.c | 6 +- target/arm/kvm-stub.c | 97 +++ target/arm/kvm.c | 42 +- target/arm/machine.c | 15 +- target/arm/ptw.c | 6 +- target/arm/tcg/arith_helper.c | 5 +- target/arm/tcg/crypto_helper.c | 6 +- target/arm/tcg/hflags.c | 4 +- target/arm/tcg/iwmmxt_helper.c | 4 +- target/arm/tcg/neon_helper.c | 4 +- target/arm/tcg/op_helper.c | 2 +- target/arm/tcg/tlb-insns.c | 7 - target/arm/tcg/tlb_helper.c | 5 +- target/arm/tcg/translate-a64.c | 2 +- target/arm/tcg/translate.c | 2 +- target/arm/tcg/vfp_helper.c | 4 +- tcg/tcg.c | 5 + target/arm/meson.build | 41 +- target/arm/tcg/meson.build | 29 +- 34 files changed, 1519 insertions(+), 1381 deletions(-) create mode 100644 target/arm/tcg/helper.h create mode 100644 target/arm/cpu32-stubs.c