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 lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 16E7ECCF9EA for ; Mon, 27 Oct 2025 11:07:02 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1vDL2R-0001h4-OG; Mon, 27 Oct 2025 07:05:23 -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 1vDL2P-0001er-FD for qemu-riscv@nongnu.org; Mon, 27 Oct 2025 07:05:22 -0400 Received: from mail-ed1-x536.google.com ([2a00:1450:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1vDL1a-0005gN-GL for qemu-riscv@nongnu.org; Mon, 27 Oct 2025 07:05:21 -0400 Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-63e076e24f2so489062a12.3 for ; Mon, 27 Oct 2025 04:03:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1761563037; x=1762167837; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=S+B5t2CS/T8KjhtvrkR91LD1xXhHenjI0bMGIecipr8=; b=GgXLmexawwlsv/1igkmwbYEFBzAoXdecLpStTG1L3LsljiasGqe4uPKBmgV1kbQuQE G0ThAwNrXqXtm9ncpITlV0XBqnIlacEhBhjCmvc/BgQIYNfb9ofYmYZRwO7cgJTHda0d yzvd3C/Y3AJD0tJOgh73/Jx4TRFecgWg9htWO4P7e3OZZE930pXN8HMFNLV1pNMt9CoS dLX9ciEgX9a7lVjKQ1F+aujPJC7Ot0jk3Ou4XpnyQNJHr+wTEOU6jmIZdSkLBLdWLTR5 DrDwId+mZ8hXcWSQIrwj1/ZgHb896cMKEvPGIBJxsJthEuYNanQObj3K/id5odYZF4mo X/eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1761563037; x=1762167837; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=S+B5t2CS/T8KjhtvrkR91LD1xXhHenjI0bMGIecipr8=; b=C8jEOpoKky4SQWcOIxmgYIyZyxuh/06LTTAA/dtkT8YnU+qhhFsFY52SJcnrdlPexG njIt5tcET9XCZJN6bKFBsBhaWVSmvLtOe6fxIxNQvbw3kT8+qUfUcRBQxSod4LqYzqGQ PZ8ofLyqIQNsg8CPoMq7niQoQ/GA+N2Z0m9JOqt7vqtaaJdVkPmeXOMI050y+Bs9YWXO Sk1jGcXF/JGVGZDgbmvRJKugg8a2/wisMUWqxug68hBFk9oAabQ/a/w69sv0hbpQaSjd fep/h8GM0o1qn/O6kr1dEQyPsL6ptULDU6sftMHa29GOa25SdondehlDASDmI6o/PCeY 5IHg== X-Forwarded-Encrypted: i=1; AJvYcCVLVBaBaWYa+RrezpB9p8mmVaIgjgBkm0w441LHhzXycas0naBBpmYSAphXXLZODhomztvwLRi0LPlE@nongnu.org X-Gm-Message-State: AOJu0YwuSmDnQXLBczoUTi87u86EqlUhumiXZTZMHSpRI/zpdiQQBFcr Md/ME5RqNqNCgSqQsNrgP1BGPpZB/PZDMty6wKcRMrX2VmXgDuB1k3zpmat6RH3RKOw= X-Gm-Gg: ASbGncv60/KG/n/mQh4jt4P/SIMjQhfaKHPbR2LBWXvGQzx3Y6bRmHjhdeViD2nXBBX AouWtLAETB1i7zL5ZoN7THzlxNDWzWrZuroBJ3lJfu7oOCNfcXNnOmltwbLJj54ZxqWnKOEUzz+ /oXq0y73CQW639Fu+GrYFT6ftCyzrrbTb+soXNRvxFcjIsI0RcDzik19LCVM3DXYkg80YUmiV+H E43ZLPzvT/7Wyix/CLLJoLmXvMx8kfzmt5nlG9pxeF+Bkecvn5/GqWO4yqe6WRCRc9u2TSmdpgz RefimMvcPZQAftTmo5rOJK9CFIlB3aP8m5PNhzUutiQ2a5z8fVpe6EftImlTXcg5kt7p3ELdk3K BkV7jb5Y7gNZ3k8VkbdnNtD+npAGSzpD+9PmfKRgyQ85R5gQcpVN7wYtQHwSZvngpyzFQvpogZ1 DiXgBFzIZt8Xs= X-Google-Smtp-Source: AGHT+IFOqsFhi++XSrIN3tvwX7vv/Rng/GC5ur0yItPZWJFnvIrwnw8USTNuYmK9pTg/cUeHEl2iog== X-Received: by 2002:a05:6402:5650:b0:636:6801:eed7 with SMTP id 4fb4d7f45d1cf-63c1f6d05b1mr25599778a12.32.1761563037184; Mon, 27 Oct 2025 04:03:57 -0700 (PDT) Received: from draig.lan ([185.126.160.19]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-63e7efb97b3sm5942298a12.30.2025.10.27.04.03.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Oct 2025 04:03:53 -0700 (PDT) Received: from draig.lan (localhost [IPv6:::1]) by draig.lan (Postfix) with ESMTP id A56E160C1B; Mon, 27 Oct 2025 11:03:45 +0000 (GMT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Cc: Liu Zhiwei , Alexandre Iooss , Chinmay Rath , qemu-arm@nongnu.org, Peter Maydell , Nicholas Piggin , Ilya Leoshkevich , David Hildenbrand , qemu-ppc@nongnu.org, Paolo Bonzini , qemu-s390x@nongnu.org, Pierrick Bouvier , Bastian Koppelmann , Helge Deller , =?UTF-8?q?Alex=20Benn=C3=A9e?= , Stafford Horne , Mahmoud Mandour , Artyom Tarasenko , Eduardo Habkost , Palmer Dabbelt , Alistair Francis , Laurent Vivier , Weiwei Li , Daniel Henrique Barboza , Mark Cave-Ayland , Yoshinori Sato , "Edgar E. Iglesias" , Aurelien Jarno , Richard Henderson , Thomas Huth , Max Filippov , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Jiaxun Yang , Michael Rolnik , Song Gao , qemu-riscv@nongnu.org, Aleksandar Rikalo , Julian Ganz Subject: [PATCH 17/35] target/m68k: call plugin trap callbacks Date: Mon, 27 Oct 2025 11:03:24 +0000 Message-ID: <20251027110344.2289945-18-alex.bennee@linaro.org> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251027110344.2289945-1-alex.bennee@linaro.org> References: <20251027110344.2289945-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=2a00:1450:4864:20::536; envelope-from=alex.bennee@linaro.org; helo=mail-ed1-x536.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-riscv@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-riscv-bounces+qemu-riscv=archiver.kernel.org@nongnu.org Sender: qemu-riscv-bounces+qemu-riscv=archiver.kernel.org@nongnu.org From: Julian Ganz We recently introduced API for registering callbacks for trap related events as well as the corresponding hook functions. Due to differences between architectures, the latter need to be called from target specific code. This change places hooks for Motorola 68000 targets. Signed-off-by: Julian Ganz Reviewed-by: Philippe Mathieu-Daudé Signed-off-by: Alex Bennée --- target/m68k/op_helper.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c index f29ae12af84..e9c20a8e032 100644 --- a/target/m68k/op_helper.c +++ b/target/m68k/op_helper.c @@ -22,6 +22,7 @@ #include "exec/helper-proto.h" #include "accel/tcg/cpu-ldst.h" #include "semihosting/semihost.h" +#include "qemu/plugin.h" #if !defined(CONFIG_USER_ONLY) @@ -183,6 +184,21 @@ static const char *m68k_exception_name(int index) return "Unassigned"; } +static void do_plugin_vcpu_interrupt_cb(CPUState *cs, uint64_t from) +{ + switch (cs->exception_index) { + case EXCP_SPURIOUS ... EXCP_INT_LEVEL_7: + qemu_plugin_vcpu_interrupt_cb(cs, from); + break; + case EXCP_SEMIHOSTING: + qemu_plugin_vcpu_hostcall_cb(cs, from); + break; + default: + qemu_plugin_vcpu_exception_cb(cs, from); + break; + } +} + static void cf_interrupt_all(CPUM68KState *env, int is_hw) { CPUState *cs = env_cpu(env); @@ -203,6 +219,7 @@ static void cf_interrupt_all(CPUM68KState *env, int is_hw) return; case EXCP_SEMIHOSTING: do_m68k_semihosting(env, env->dregs[0]); + qemu_plugin_vcpu_hostcall_cb(cs, retaddr); return; } } @@ -239,6 +256,8 @@ static void cf_interrupt_all(CPUM68KState *env, int is_hw) env->aregs[7] = sp; /* Jump to vector. */ env->pc = cpu_ldl_mmuidx_ra(env, env->vbr + vector, MMU_KERNEL_IDX, 0); + + do_plugin_vcpu_interrupt_cb(cs, retaddr); } static inline void do_stack_frame(CPUM68KState *env, uint32_t *sp, @@ -277,6 +296,7 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) uint32_t sp; uint32_t vector; uint16_t sr, oldsr; + uint64_t last_pc = env->pc; if (!is_hw) { switch (cs->exception_index) { @@ -417,6 +437,8 @@ static void m68k_interrupt_all(CPUM68KState *env, int is_hw) env->aregs[7] = sp; /* Jump to vector. */ env->pc = cpu_ldl_mmuidx_ra(env, env->vbr + vector, MMU_KERNEL_IDX, 0); + + do_plugin_vcpu_interrupt_cb(cs, last_pc); } static void do_interrupt_all(CPUM68KState *env, int is_hw) -- 2.47.3