From patchwork Wed Jul 3 15:52:41 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 168424 Delivered-To: patch@linaro.org Received: by 2002:ac9:6410:0:0:0:0:0 with SMTP id r16csp1043154ock; Wed, 3 Jul 2019 08:59:33 -0700 (PDT) X-Google-Smtp-Source: APXvYqy4gT+5+c6BeNZt+dTveoyHwzvWS8/Ah3l2jq6U4JW9ETCrC1cRFSzrf4BLy024OyXVYDeO X-Received: by 2002:a17:906:838a:: with SMTP id p10mr33840277ejx.237.1562169573295; Wed, 03 Jul 2019 08:59:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562169573; cv=none; d=google.com; s=arc-20160816; b=a1IGtPI/lbVO+YW9l4FNRYu2Y+j7fF1xmb/XdChiSZzW1lboHc899pB3TUBEQXWmbG FVJQUTD1nr6VBrO3aGOynwy4QtPzCoRxCAYrsUyxg1r+8TITofMTDi9BPnl8A94/qm+M qajHeWQzIhsiEtS3M8QqedMtoqSU4D+YXdVU4IL+cnFdYRufBIBUYnLc4kcxNztaaYpv oF7eCLGnF/KkXpjlt5aUlS4+vtQ/V1jhz0NNSvdvWjsWDfNA0HooqbmgEOrGV6EBFEIP C4Ro15GeUlkivTZ//URmFcPwy9mR4DJGDanHoKEobx5Y621swq0ztfNx4lXqn9Lfvc7z 7bJg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=//Wpc08mM5q/cSaFPICPcz9+DodTG0MeCuuW1XebhP8=; b=yU8VlfdarlBk4bKav2JWdyN/IwEsreTPbS6mQLOMJpATZIetQwmAwBTlZQGae+AllF Of50bltG+jBuoFUQUibYq6eWKm07wUftSCjLK5AFyA349IkVpRSno4fEGFvODlbzzoPd uaZMYvN8WYsNnOlycW64WGdvmpM9giuGlUIgQAUZCkY3egPmpsv3GhbMH0uLksemy0u6 3nLvDHVlHhFjgzBOVokXk2BtGbsvKHZaQ0vKO8ZO7N4pegIyzKjRIp3obT5gPpwaHUtH f8ayX3M5Xgna5PMuatXQ+GTMwBwwR++Ivk6iGSwHsp+draOUOnRrp9aFCLXXtGk7PPzh X6Vw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=r2Tc0jV3; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h10si2618393edh.88.2019.07.03.08.59.33 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Jul 2019 08:59:33 -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=fail header.i=@linaro.org header.s=google header.b=r2Tc0jV3; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:37070 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihfQ-0006vj-9R for patch@linaro.org; Wed, 03 Jul 2019 11:59:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53215) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihZS-0002iv-T6 for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hihZR-0007Co-Lb for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:22 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:44029) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hihZQ-0006vZ-JF for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:21 -0400 Received: by mail-wr1-x442.google.com with SMTP id p13so3385144wru.10 for ; Wed, 03 Jul 2019 08:52:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=//Wpc08mM5q/cSaFPICPcz9+DodTG0MeCuuW1XebhP8=; b=r2Tc0jV3jXYmUHw/XhFIYmFA7bk0IbvAdH+XlCTUwhKfS66u/qbq1WIh2O9aIow4sR hmhg8ZobtYV5Hm5XfHqCdh1Qs8QaQ4vv93SQA8gknih9AdeOO2rBtkxF2GX9seK+8OuJ O0NsaD7VTDG/EOSA4u1mh1kR8fYmuIDfFm3DfvbGCGXeEoHO7tAk7askTTQXxPl/GNjr tzIEILwygns2ATK8pwOevtuo3yaTwoB2jIONF26EPhP/zPS70pXl1nUTCbBx54Tqk04G fZqXY4nllVICnw+y8WWg28T7HB7ZM3m472gHA0U5HkaJZ0C578bkgsVB3OC8RNba1Swl rzJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=//Wpc08mM5q/cSaFPICPcz9+DodTG0MeCuuW1XebhP8=; b=LpRchaEKUPt3TDIoJCM7Bs6y56rELkp0UbDQhkFVZPiaW5/ousX3LAygTymYO1LZ7g w1nGXU2fllN5FpCdFLoik+y7ri9EB6Y+eL5zpXDGooHx+BkjM68D50PeKdhfcUel+NkE JxhLMc8Cey31+PZAcHuYdX24AdVNkvJq9jkl4YI2tFDhH13YeSBLQSkLyLwAukE22k4I vroEMaoyIu34ZYIMdFzv/xDS7dpi2Q8C4ssIBAmy+bKrWLz60qDrcOVHVJqeCvgCUIAS SN0m/B1KoSJXW5PGaQe7Qoh5nQHHWudhU5MYYlKnZzKSQLhLSBu43DI9dEySQtDpn7Aj 5Iig== X-Gm-Message-State: APjAAAVQ7jMf56Fkodu2PcdXeFL4883momMVJSaJZkyBVExI0aGN10kI RlSYZerPYbHSlxtDk7kol0rBEw== X-Received: by 2002:adf:aa93:: with SMTP id h19mr27153178wrc.3.1562169165617; Wed, 03 Jul 2019 08:52:45 -0700 (PDT) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id f7sm2450062wrp.55.2019.07.03.08.52.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 03 Jul 2019 08:52:44 -0700 (PDT) Received: from zen.linaroharston. (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 68D361FF8C; Wed, 3 Jul 2019 16:52:44 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Date: Wed, 3 Jul 2019 16:52:41 +0100 Message-Id: <20190703155244.28166-2-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190703155244.28166-1-alex.bennee@linaro.org> References: <20190703155244.28166-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PATCH v1 1/4] target/arm: handle M-profile semihosting at translate time X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" We do this for other semihosting calls so we might as well do it for M-profile as well. Signed-off-by: Alex Bennée --- target/arm/helper.c | 18 ++++++------------ target/arm/translate.c | 20 +++++++++++++++++++- 2 files changed, 25 insertions(+), 13 deletions(-) -- 2.20.1 Reviewed-by: Richard Henderson diff --git a/target/arm/helper.c b/target/arm/helper.c index df4276f5f6..ad29dc4072 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9692,19 +9692,13 @@ void arm_v7m_cpu_do_interrupt(CPUState *cs) break; } break; + case EXCP_SEMIHOST: + qemu_log_mask(CPU_LOG_INT, + "...handling as semihosting call 0x%x\n", + env->regs[0]); + env->regs[0] = do_arm_semihosting(env); + return; case EXCP_BKPT: - if (semihosting_enabled()) { - int nr; - nr = arm_lduw_code(env, env->regs[15], arm_sctlr_b(env)) & 0xff; - if (nr == 0xab) { - env->regs[15] += 2; - qemu_log_mask(CPU_LOG_INT, - "...handling as semihosting call 0x%x\n", - env->regs[0]); - env->regs[0] = do_arm_semihosting(env); - return; - } - } armv7m_nvic_set_pending(env->nvic, ARMV7M_EXCP_DEBUG, false); break; case EXCP_IRQ: diff --git a/target/arm/translate.c b/target/arm/translate.c index 4750b9fa1b..aaab043636 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -10977,6 +10977,24 @@ illegal_op: default_exception_el(s)); } +/* + * Thumb BKPT. On M-profile CPUs this may be a semihosting call which + * we can process much the same way as gen_hlt() above. + */ +static inline void gen_thumb_bkpt(DisasContext *s, int imm8) +{ + if (arm_dc_feature(s, ARM_FEATURE_M) && + semihosting_enabled() && +#ifndef CONFIG_USER_ONLY + s->current_el != 0 && +#endif + (imm8 == 0xab)) { + gen_exception_internal_insn(s, 0, EXCP_SEMIHOST); + return; + } + gen_exception_bkpt_insn(s, 2, syn_aa32_bkpt(imm8, true)); +} + static void disas_thumb_insn(DisasContext *s, uint32_t insn) { uint32_t val, op, rm, rn, rd, shift, cond; @@ -11605,7 +11623,7 @@ static void disas_thumb_insn(DisasContext *s, uint32_t insn) { int imm8 = extract32(insn, 0, 8); ARCH(5); - gen_exception_bkpt_insn(s, 2, syn_aa32_bkpt(imm8, true)); + gen_thumb_bkpt(s, imm8); break; } From patchwork Wed Jul 3 15:52:42 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 168426 Delivered-To: patch@linaro.org Received: by 2002:ac9:6410:0:0:0:0:0 with SMTP id r16csp1053831ock; Wed, 3 Jul 2019 09:08:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqwJmAHcql8FPCuFfHgiimBrxz3hNLRxXS1+f0nPSNfqjk3ScXTrqdIa2ZALs37GFMNAGKLG X-Received: by 2002:a05:6402:14d4:: with SMTP id f20mr42676492edx.125.1562170086810; Wed, 03 Jul 2019 09:08:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562170086; cv=none; d=google.com; s=arc-20160816; b=do7+M6E2A2VXWfgmxAwwMd3uvK9IsvRrLHuFUvT7XEpKllfR1cok2R4ogV8AKnPMbW 8QBT2fGOzoCYD5q8nVbuIasRDtx4a+GbGfKTC8AKPN9e1Vcg4280dkbK3n/UJIuViSIw KD8ucUbRwwjRrARmXUjD8ZRfeYXmTogDUhXoFb7PqQ/Zkqebxqqag6YbBpcvvLZ9Czwt uNcgUnpmJNQiy8Alp2KTCS7NUxvdnpv/sRZnLYkhoGXaWnxFhSRoDYJeJpn2yd644GaI 8IBY8da2+8iZQX++rKqicmOaxq4M8vtQ4Vu73xBi8GcVprnFF9iWkSLrt5CCos+ZC/tN r6KA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=C07JYTlYo1eRUyog0KlI6elnxskISjJIiJwzTqYbA+8=; b=t1/ZZrre/glCaFO0O1BhgzjE0Ome+Q43OoYN2rjGBe0jFLsgeOs/ezcGacFtSDUIZy nS0VejewCFJfWtjvED2GTw+1hgR7W39gfQIXDR1k+rNCMX+zMmoETmu8rmc5qOyC85gy 8N1uFcumhBt9egkZ61wPTnleKVOJXjc3Iq/ylJpchA4rHNCqUnxOs642IK8zuYHPsk9f ukB5Wdp4oZ1I4SkQOD7mLUGow9AUGgpsY5U/bOwWDpm7FQi+jKPPq3cfevHkpVycBcaf 1pZT9MRhSwolRkTC8xSLEDuQQTrfAcPuFY+U6iMMZ8USizDzclFZ4DKmr8YfkH/eyJGm 0bgA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=UtJvVyLQ; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id d22si2711439edb.421.2019.07.03.09.08.06 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Jul 2019 09:08:06 -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=fail header.i=@linaro.org header.s=google header.b=UtJvVyLQ; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:37122 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihnh-0004qn-Qo for patch@linaro.org; Wed, 03 Jul 2019 12:08:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53167) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihZK-0002hr-Lw for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hihZI-00079x-Su for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:13 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:45364) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hihZF-0006w6-Gh for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:10 -0400 Received: by mail-wr1-x443.google.com with SMTP id f9so3383636wre.12 for ; Wed, 03 Jul 2019 08:52:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=C07JYTlYo1eRUyog0KlI6elnxskISjJIiJwzTqYbA+8=; b=UtJvVyLQpFu+8IgfqaAEMNMXJWLmQyXi+bDVxiCfPuwPqgKn002GhB+RB+WCgmtwJS TsEpn8lLQnlbq2E0s9MXi1OPnHM6+alece4fBnrrIsTUvtx5zm4iTXVn8MqWyavDbZj9 8Hhn8MFlQ0GDEvlWXOAYR26dURU3/EjICp7kRcjNfiI6mXipb0qXJlefUeQdl4xlg+KW B85WWKyksDDgkPa+h2SKbTh4j5tSgonXS/KCQCs0psHRjbuib/zVXZNp307gJkvdtqre HUD/zePH4Kteu1+xOlARFpbHLJBX+lPG9/lh7tKZ15NLRpDa3Amh7tM4ZpbCmsyg+HDg aGmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=C07JYTlYo1eRUyog0KlI6elnxskISjJIiJwzTqYbA+8=; b=qkppvTYUdyJ9FuTXsAaXCM3+M0Y9HtckKM66kc1NLPTkB3NedYL6YuE3jlpfR7f4Dj eZxS+aMGKc/aMNGJuHNrFffw5oJT5Ok90Mge75IiQRvd0QfdwOfyCL3vavEMZYLft3na Pst9FWSz+dEDQTWnFLb7dck5AXYsiSSvoPLdTPXEF23sk7+23IIzsSV8eQS0F/sI4d9A a7SMcBct3PNJF1IakgiiumbuCqkXytb8I6R2SfNKgI4c9tXmDB+MXG0zFNoQwD+9l6ab W+48gz8cEMsgkhkGWIrIIdwqHNVZwXoQV313vy1ZE66IUIxNdeYH3KG4qWLWI/Vn50zz WNMA== X-Gm-Message-State: APjAAAXxldG494MbW+Z5Irv25097iudtGHz3DtFY5imX7XnnJGMCpsqK OwdqzL9yH6Q4THSX635akzKszA== X-Received: by 2002:adf:ed41:: with SMTP id u1mr28077120wro.162.1562169167053; Wed, 03 Jul 2019 08:52:47 -0700 (PDT) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id f204sm4014304wme.18.2019.07.03.08.52.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 03 Jul 2019 08:52:45 -0700 (PDT) Received: from zen.linaroharston. (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 7BE1A1FF8F; Wed, 3 Jul 2019 16:52:44 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Date: Wed, 3 Jul 2019 16:52:42 +0100 Message-Id: <20190703155244.28166-3-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190703155244.28166-1-alex.bennee@linaro.org> References: <20190703155244.28166-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::443 Subject: [Qemu-devel] [PATCH v1 2/4] target/arm: handle A-profile T32 semihosting at translate time X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" As for the other semihosting calls we can resolve this at translate time. Signed-off-by: Alex Bennée --- target/arm/translate.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) -- 2.20.1 Reviewed-by: Richard Henderson diff --git a/target/arm/translate.c b/target/arm/translate.c index aaab043636..8e2e955cbe 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -10995,6 +10995,24 @@ static inline void gen_thumb_bkpt(DisasContext *s, int imm8) gen_exception_bkpt_insn(s, 2, syn_aa32_bkpt(imm8, true)); } +/* + * Thumb SWI. On A-profile CPUs this may be a semihosting call. + */ +static inline void gen_thumb_swi(DisasContext *s, int imm8) +{ + if (semihosting_enabled() && +#ifndef CONFIG_USER_ONLY + s->current_el != 0 && +#endif + (imm8 == 0xab)) { + gen_exception_internal_insn(s, 0, EXCP_SEMIHOST); + return; + } + gen_set_pc_im(s, s->pc); + s->svc_imm = imm8; + s->base.is_jmp = DISAS_SWI; +} + static void disas_thumb_insn(DisasContext *s, uint32_t insn) { uint32_t val, op, rm, rn, rd, shift, cond; @@ -11752,10 +11770,8 @@ static void disas_thumb_insn(DisasContext *s, uint32_t insn) goto undef; if (cond == 0xf) { - /* swi */ - gen_set_pc_im(s, s->pc); - s->svc_imm = extract32(insn, 0, 8); - s->base.is_jmp = DISAS_SWI; + /* swi/svc */ + gen_thumb_swi(s, extract32(insn, 0, 8)); break; } /* generate a conditional jump to next instruction */ From patchwork Wed Jul 3 15:52:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 168423 Delivered-To: patch@linaro.org Received: by 2002:ac9:6410:0:0:0:0:0 with SMTP id r16csp1040073ock; Wed, 3 Jul 2019 08:56:10 -0700 (PDT) X-Google-Smtp-Source: APXvYqw/n6jJ7d4bB6f8lx4maaV7kK//E25pjh53J5JC6eebjGsPtxHlOspAqcCyVlrotqPVVIsU X-Received: by 2002:a17:906:190e:: with SMTP id a14mr15467559eje.69.1562169370177; Wed, 03 Jul 2019 08:56:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562169370; cv=none; d=google.com; s=arc-20160816; b=0BLXaszoK48vPSwq0Z9lre9ZJp5sAI7Lky3mX3hW59iRuOfeblcWOu0IKuxuqNGDPl /H5PkouTp7CRx5KpwA1yXuWbR3YyjqvmopsDx1hWwEggwiRij+mi0QSWWUMGFcCMDygI TGWiU7Hw89fVvaiGYo7yFG3tQWV3lFfS8TYVJF8HyVeKQZtOM8lVwCHDwTikw56CiR/j 4mwiK6d8KLSsQ/1i5hsJCXd4I5vyxA/21L5DI1K+rrzzNVccKC66lObmYS4N4kWwTlCm pdK0FjBuZVqfo0y6Q1YUtnW/E+dihH55wb/++c9dCn/P5LZ6coEuSUbeY/APXahqsCen 6U8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=m+82LmGiTUR8ft7yGco+ML19JHV1vi8nCqyq/raGSyc=; b=EF5zaY/OaNjmNpYDjDUi1kKMJPq/bZIAGuubP6jwP6PUtPniV04KAS4w2d/Y+qvTV0 Xm3bxBKEpkmQnTAAkUT+KVF3a+8k5VU1dkRORG7X6nPTTpBi4+sJAwKDg1W/OdcSYAKf Z1/ID77IXDCmm00ozA7Wjx6ITfRfk7hFOuMyuTe9doxTp9fHuemrhaxalyTQTbVrP5EB hL6eR0SgkXtAjxKwjjJyzU7qblokd4/qarGHNi5p411oVVu1FLes7gR4W289NSdAPf2/ RcMrv3feD1Y7doIOjmirBb3+geNilHxyiDcmpU/FXlU6DqMraskafu9wmnoqG1lRiadh CH7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=amRPd7cN; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id v17si1997179eju.326.2019.07.03.08.56.09 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Jul 2019 08:56:10 -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=fail header.i=@linaro.org header.s=google header.b=amRPd7cN; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:37058 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihc9-0003tl-4g for patch@linaro.org; Wed, 03 Jul 2019 11:56:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53155) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihZI-0002hn-Tk for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hihZF-00078s-HL for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:12 -0400 Received: from mail-wm1-x342.google.com ([2a00:1450:4864:20::342]:39524) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hihZ8-0006vo-T4 for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:04 -0400 Received: by mail-wm1-x342.google.com with SMTP id z23so2960627wma.4 for ; Wed, 03 Jul 2019 08:52:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=m+82LmGiTUR8ft7yGco+ML19JHV1vi8nCqyq/raGSyc=; b=amRPd7cNQqjH1DB4/gfYLm89jy4FPHMN4SDAOTlYl49UMvlwIzlxX3i6kWzHPXmiSc DjKL/i1ujAS4CCsnKlOMTPnLlTnQHXVoF8BDVBJPFQFoUMEgaPfiDrun/2Na4t5itmvD v/6bacFZ8tKCvqrXcua92SnsoRUlVwktfxet3QTAZ4GWlLn9WLAA8oGxuU+J79DSkb7D Jt1KbOXQt2I4bI6ow2MGaVttzfG6pRVbr4cj18WVXKpeYjbk4ZkHCh56kzbaZIktY8yl M3rKxqPT6yGXUgFJfEwRsP7h0HolWwfR0eI27elV5CciYyJFvmd/mezmV9LOrVJzlYM6 eXSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=m+82LmGiTUR8ft7yGco+ML19JHV1vi8nCqyq/raGSyc=; b=ocmQfh2MlBKcOfp1jdRHlUa9RIa2mq+EXhwS/9I/LG0ZcR8H+LGKh4jkM/nQB+oPph 7OWQxnmhURCHY61bPN0PJwoq1ix3DlEtU/kmGiXo1XwX49MbJsRzpwxx/Uqhmekgydw0 cI7k3cVGeA7Vt3SDrygHbLmZt95KRIYdY7XNrBzDKsfIT2aNP2l1MkPgIWtxwj9eoVN5 wIf6qwDIUVdLu4xxMOcqIAgAQ1lq0OLzBf1j+0Wn38gH1wPN8IQuJ0/+7qxP+LdZRPpd 04rZcc+ylOhw2QICDgdi2WYSg74iWUgJBKtG6sGEiESBD3HaqlBH1BeXK4UuZQwJ6OHS xDwA== X-Gm-Message-State: APjAAAXIBfCH9j+V/AHMwatsBlF70tGogiwAHkMvvx5zfi6FdSZPaln5 L6vrWEH/XQadI+aJg7K+wOKj7g== X-Received: by 2002:a1c:7d56:: with SMTP id y83mr8879731wmc.77.1562169166227; Wed, 03 Jul 2019 08:52:46 -0700 (PDT) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id z17sm2708049wrr.13.2019.07.03.08.52.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 03 Jul 2019 08:52:45 -0700 (PDT) Received: from zen.linaroharston. (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id 8E6791FF90; Wed, 3 Jul 2019 16:52:44 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Date: Wed, 3 Jul 2019 16:52:43 +0100 Message-Id: <20190703155244.28166-4-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190703155244.28166-1-alex.bennee@linaro.org> References: <20190703155244.28166-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::342 Subject: [Qemu-devel] [PATCH v1 3/4] target/arm: handle A-profile A32 semihosting at translate time X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" As for the other semihosting calls we can resolve this at translate time. Signed-off-by: Alex Bennée --- target/arm/translate.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) -- 2.20.1 Reviewed-by: Richard Henderson diff --git a/target/arm/translate.c b/target/arm/translate.c index 8e2e955cbe..139b2f6765 100644 --- a/target/arm/translate.c +++ b/target/arm/translate.c @@ -7699,6 +7699,22 @@ static void arm_skip_unless(DisasContext *s, uint32_t cond) arm_gen_test_cc(cond ^ 1, s->condlabel); } +static inline void gen_arm_swi(DisasContext *s, int imm24) +{ + if (semihosting_enabled() && +#ifndef CONFIG_USER_ONLY + s->current_el != 0 && +#endif + (imm24 == 0x123456)) { + gen_exception_internal_insn(s, 0, EXCP_SEMIHOST); + return; + } + + gen_set_pc_im(s, s->pc); + s->svc_imm = imm24; + s->base.is_jmp = DISAS_SWI; +} + static void disas_arm_insn(DisasContext *s, unsigned int insn) { unsigned int cond, val, op1, i, shift, rm, rs, rn, rd, sh; @@ -9249,9 +9265,7 @@ static void disas_arm_insn(DisasContext *s, unsigned int insn) break; case 0xf: /* swi */ - gen_set_pc_im(s, s->pc); - s->svc_imm = extract32(insn, 0, 24); - s->base.is_jmp = DISAS_SWI; + gen_arm_swi(s, extract32(insn, 0, 24)); break; default: illegal_op: From patchwork Wed Jul 3 15:52:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Alex_Benn=C3=A9e?= X-Patchwork-Id: 168427 Delivered-To: patch@linaro.org Received: by 2002:ac9:6410:0:0:0:0:0 with SMTP id r16csp1065002ock; Wed, 3 Jul 2019 09:18:09 -0700 (PDT) X-Google-Smtp-Source: APXvYqy570sX47aRCmDnaKPX1V8ybEn4R8ZLRf4ZipqXyk3SnJCitYoXIb9/5rT8KdEORmKEy14e X-Received: by 2002:aa7:da03:: with SMTP id r3mr43376684eds.130.1562170689528; Wed, 03 Jul 2019 09:18:09 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1562170689; cv=none; d=google.com; s=arc-20160816; b=F9G9qE30hKehAbad+nYr4Y8IChURuoNnYfV6XFFlAFZue1LmmQos/4usF4FbM/puqo tDq8eCVO95R4Ogj63bJSeSnSwccdpz50iskBWEji4N2Ae10myoNcggJD1MRQjPYmunOP x+f0zQ/gIHOW7pLAK/lxdtajHZo3g125+eVOFmzGdC8wnDqvtbHLaPWWTH13KGbrIoUD BNO6gOHCB5R8tBxoUMnEMEd1WkD8kO3I3UrXZlZspADcGRR5OOJMjT0VmaaNHla23F4N E40h1gXFpKqLZ/WlrjfLf/0rCDkUC+vboMm4qT/KR1ml4ZTAduAks5/3p9iy2j0fYDIb WUxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature; bh=ovqcHq6dsGzX/8beQxDdY0vSbGoLnH7AOUmxQcUlSms=; b=LFpZjfSE0T/3boBbCdSFUgxvfmoII/zNIIHV66ckNVwQQtOkmmYecCNih5KCPWB5VB IREImkPqJqOUj77bwDkNGKXoSLo7F6kZ9o9I9BCK5flpHwb87jxdOFZyMFKkFZ3y8Snm Ydv6mxGGYty5YdtpEizNVNRzfG5u5cgly/w6ujVkPv2d+crr+cY04gLaF0OScEDrQjUV Sr/UHBsbqYfySVqYaYURWstpBdfFeUPTmthlAW76h0Mp/JblmW4V6GuQQEh1bezSt6dI DUTNzdu/6fqjihTIEhSYjEfQkCCJ0PqHpGwfuinnMgjI6u2Bz1GRToHL6PyF/gpOF/g+ 1QBA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@linaro.org header.s=google header.b=S2XjhLfS; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org. [209.51.188.17]) by mx.google.com with ESMTPS id h18si2003343eja.313.2019.07.03.09.18.09 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 03 Jul 2019 09:18:09 -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=fail header.i=@linaro.org header.s=google header.b=S2XjhLfS; 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=fail (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: from localhost ([::1]:37282 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihxP-000478-Fw for patch@linaro.org; Wed, 03 Jul 2019 12:18:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53361) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hihZX-0002p4-Sz for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hihZT-0007EN-OH for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:25 -0400 Received: from mail-wr1-x443.google.com ([2a00:1450:4864:20::443]:34306) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hihZT-0006wJ-Gw for qemu-devel@nongnu.org; Wed, 03 Jul 2019 11:53:23 -0400 Received: by mail-wr1-x443.google.com with SMTP id u18so3432216wru.1 for ; Wed, 03 Jul 2019 08:52:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=ovqcHq6dsGzX/8beQxDdY0vSbGoLnH7AOUmxQcUlSms=; b=S2XjhLfSLHaLbB6KoVWUmWxTCSLVAZfvdVBC2zPoO6aO/5mMhuZF1XXJDl1FswHvf/ nKa2bCFG+A2NDIa0Qg5aOAlNbpyVDvF+1nQg0tguiRRF0NzTQFBJCtqCOumJN0UTSZ1K y/vrdzEYq53Xlr32sIm0R3V1XAKwoGa09Hg18xurZOFBCH43QVIV+9ZrfnzNE/aStKwK dmz59rCzAPW0MEb7cGnHcT60i5VmYMi4F6IjAENTY3WJq8r5Q1gCSgJl0EGpyc3NhKTe pNvA5l1woBhSdVC+ZKiZTI4mREsvC29Ar6ZF7WpB0b5ZWf61+//8XJqmvxSUazHcUpTc CL8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=ovqcHq6dsGzX/8beQxDdY0vSbGoLnH7AOUmxQcUlSms=; b=iMCbVWJErm04jMxn83Ns3vgtGoHRy4tvjlHADNp4poJlz5gb/9jbvtzehk/+yC3Hub LaSUaVOLhB4mP9dCaDcbLCbTob13vEccjji6luUYWr7WaiRr1SY5ypqb26oyHjYTjV/U nKGbwxv1HNm4ArEFVenGtvWAMB7OjV2MoBldfGpylGEDvdE0MRQShCYP1Rm+XBWH28cO 5+QzeXJysK/YENMkN5EJXOS+Z8t320p/BJdRV/InPFlHmCO+7SzrfrF69f/tDmw4T7KD yXVYUNkwccQ8SwCSZTolectj6+waKwZCMiD4nNTe8LXJvbdriwEAco6Uo2aOscZrJR9y lZaQ== X-Gm-Message-State: APjAAAUqHirCYtXpae1W9lOMwmlo/Yfx1QXCkRut6pr02xEeU0B+UJ5G 71fhLQn78pJrFaLNnKfZeGIXgQ== X-Received: by 2002:a5d:4609:: with SMTP id t9mr268861wrq.85.1562169167506; Wed, 03 Jul 2019 08:52:47 -0700 (PDT) Received: from zen.linaroharston ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id p140sm1806472wme.31.2019.07.03.08.52.44 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Wed, 03 Jul 2019 08:52:45 -0700 (PDT) Received: from zen.linaroharston. (localhost [127.0.0.1]) by zen.linaroharston (Postfix) with ESMTP id A17A71FF91; Wed, 3 Jul 2019 16:52:44 +0100 (BST) From: =?utf-8?q?Alex_Benn=C3=A9e?= To: qemu-devel@nongnu.org Date: Wed, 3 Jul 2019 16:52:44 +0100 Message-Id: <20190703155244.28166-5-alex.bennee@linaro.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190703155244.28166-1-alex.bennee@linaro.org> References: <20190703155244.28166-1-alex.bennee@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::443 Subject: [Qemu-devel] [PATCH v1 4/4] target/arm: remove run time semihosting checks X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , qemu-arm@nongnu.org, =?utf-8?q?Alex_Benn=C3=A9e?= Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" Now we do all our checking and use a common EXCP_SEMIHOST for semihosting operations we can make helper code a lot simpler. Signed-off-by: Alex Bennée --- target/arm/helper.c | 84 +++++++++------------------------------------ 1 file changed, 17 insertions(+), 67 deletions(-) -- 2.20.1 diff --git a/target/arm/helper.c b/target/arm/helper.c index ad29dc4072..5c1f741380 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -10364,83 +10364,33 @@ static void arm_cpu_do_interrupt_aarch64(CPUState *cs) new_el, env->pc, pstate_read(env)); } -static inline bool check_for_semihosting(CPUState *cs) +/* + * Check whether this exception is a semihosting call; if so + * then handle it and return true; otherwise return false. + * + * All the permission and validity checks are done at translate time. + */ +static inline bool handle_semihosting(CPUState *cs) { - /* Check whether this exception is a semihosting call; if so - * then handle it and return true; otherwise return false. - */ ARMCPU *cpu = ARM_CPU(cs); CPUARMState *env = &cpu->env; - if (is_a64(env)) { - if (cs->exception_index == EXCP_SEMIHOST) { - /* This is always the 64-bit semihosting exception. - * The "is this usermode" and "is semihosting enabled" - * checks have been done at translate time. - */ + if (cs->exception_index == EXCP_SEMIHOST) { + if (is_a64(env)) { qemu_log_mask(CPU_LOG_INT, "...handling as semihosting call 0x%" PRIx64 "\n", env->xregs[0]); env->xregs[0] = do_arm_semihosting(env); - return true; - } - return false; - } else { - uint32_t imm; - - /* Only intercept calls from privileged modes, to provide some - * semblance of security. - */ - if (cs->exception_index != EXCP_SEMIHOST && - (!semihosting_enabled() || - ((env->uncached_cpsr & CPSR_M) == ARM_CPU_MODE_USR))) { - return false; - } - - switch (cs->exception_index) { - case EXCP_SEMIHOST: - /* This is always a semihosting call; the "is this usermode" - * and "is semihosting enabled" checks have been done at - * translate time. - */ - break; - case EXCP_SWI: - /* Check for semihosting interrupt. */ - if (env->thumb) { - imm = arm_lduw_code(env, env->regs[15] - 2, arm_sctlr_b(env)) - & 0xff; - if (imm == 0xab) { - break; - } - } else { - imm = arm_ldl_code(env, env->regs[15] - 4, arm_sctlr_b(env)) - & 0xffffff; - if (imm == 0x123456) { - break; - } - } - return false; - case EXCP_BKPT: - /* See if this is a semihosting syscall. */ - if (env->thumb) { - imm = arm_lduw_code(env, env->regs[15], arm_sctlr_b(env)) - & 0xff; - if (imm == 0xab) { - env->regs[15] += 2; - break; - } - } - return false; - default: - return false; + } else { + qemu_log_mask(CPU_LOG_INT, + "...handling as semihosting call 0x%x\n", + env->regs[0]); + env->regs[0] = do_arm_semihosting(env); } - - qemu_log_mask(CPU_LOG_INT, - "...handling as semihosting call 0x%x\n", - env->regs[0]); - env->regs[0] = do_arm_semihosting(env); return true; } + + return false; } /* Handle a CPU exception for A and R profile CPUs. @@ -10476,7 +10426,7 @@ void arm_cpu_do_interrupt(CPUState *cs) * code that caused the exception, not the target exception level, * so must be handled here. */ - if (check_for_semihosting(cs)) { + if (handle_semihosting(cs)) { return; }