From patchwork Mon Nov 12 17:08:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 150857 Delivered-To: patch@linaro.org Received: by 2002:a2e:299d:0:0:0:0:0 with SMTP id p29-v6csp3395488ljp; Mon, 12 Nov 2018 09:18:27 -0800 (PST) X-Google-Smtp-Source: AJdET5f7NBJceXn0oG2897UB5m6GJwSm5RUX3A6Airy/X+1K9zzhT7vO415pBekrVYiNd/7P7N4N X-Received: by 2002:ac8:7518:: with SMTP id u24mr1777156qtq.75.1542043107805; Mon, 12 Nov 2018 09:18:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542043107; cv=none; d=google.com; s=arc-20160816; b=Y807gowqtKWGSGQ9i1eIrAqXM4bnPzyJCdFMDhFFDx91/DycHaOaSUnsAqykVdGOKP t7oX1gYKzYf1JE8AlC0kVErm2fqgBtzETo6RILm0ZqQeXjkx68c9FHCVF4TF8nnABEyW naHsF8bF4fav7YZe4gDaLaJQVV5t8WJ8rxFyjZmi1ctHwq+DYjA0huRrU/vgXChy1oTM iMXxDuI9bzJ5mvzJRl1XwM/pLI0xpnUR2oAbyeQje3jkhAKIhJvXyY7+gMjmfa49CEh3 smnS77JJPNPC/rURW4uTkv92oKJTCpNFsGginDY1YyqU2roOU6DTGenySOIInMjVJ5Pg QpdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to: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; bh=UhLRZ2/GAu2P1FVUAx1uPdxHeyqpHqQ0y2ebf0aeam8=; b=E9Ksi+dubmWHF4AU3amT3NZ9pkJWL5KKpHq3MEDeTB/GULgtw1qMPZNe9D3MOe5CgS qWpMRXGo/27yxBPG3uOhVbcrHA6ZtjD/dg+a6PP7v7VdybvaZIt8lRKQXMcljZPiGt3V MrfQ+EWRNkp+F/oIeajd3eaopR2k3PTfash+WblcnVW8R37s9FOk0yfaLCJEGBLfO+ri UrCGIrfYMar7vhr3rdiw7fhz1Zc3EcL9w08IrzVhNTJBzoJ9kj4mW8xJd90eQiv8/6zL tRCtXmuTScsDhoxlveAI2TlprV2w6hIQprZPOaF2s2W25rgyu76DRhzEIRz7mACsA4nx 8yiw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id y11si4483178qtm.124.2018.11.12.09.18.27 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 12 Nov 2018 09:18:27 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 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]:49813 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gMFr0-0003pj-BF for patch@linaro.org; Mon, 12 Nov 2018 12:18:26 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60643) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gMFhv-00048t-1Q for qemu-devel@nongnu.org; Mon, 12 Nov 2018 12:09:03 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gMFhu-0000gz-99 for qemu-devel@nongnu.org; Mon, 12 Nov 2018 12:09:03 -0500 Received: from orth.archaic.org.uk ([2001:8b0:1d0::2]:52546) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gMFht-0008MG-Vh for qemu-devel@nongnu.org; Mon, 12 Nov 2018 12:09:02 -0500 Received: from pm215 by orth.archaic.org.uk with local (Exim 4.89) (envelope-from ) id 1gMFhK-0005rz-Kl for qemu-devel@nongnu.org; Mon, 12 Nov 2018 17:08:26 +0000 From: Peter Maydell To: qemu-devel@nongnu.org Date: Mon, 12 Nov 2018 17:08:06 +0000 Message-Id: <20181112170816.500-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181112170816.500-1-peter.maydell@linaro.org> References: <20181112170816.500-1-peter.maydell@linaro.org> MIME-Version: 1.0 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2001:8b0:1d0::2 Subject: [Qemu-devel] [PULL 06/16] target/arm64: properly handle DBGVR RESS bits X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 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" From: Alex Bennée This only fails with some (broken) versions of gdb but we should treat the top bits of DBGBVR as RESS. Properly sign extend QEMU's reference copy of dbgbvr and also update the register descriptions in the comment. Signed-off-by: Alex Bennée Reviewed-by: Richard Henderson Message-id: 20181109152119.9242-2-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/kvm64.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) -- 2.19.1 diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c index 5de8ff0ac57..6351a54b287 100644 --- a/target/arm/kvm64.c +++ b/target/arm/kvm64.c @@ -103,7 +103,7 @@ static void kvm_arm_init_debug(CPUState *cs) * capable of fancier matching but that will require exposing that * fanciness to GDB's interface * - * D7.3.2 DBGBCR_EL1, Debug Breakpoint Control Registers + * DBGBCR_EL1, Debug Breakpoint Control Registers * * 31 24 23 20 19 16 15 14 13 12 9 8 5 4 3 2 1 0 * +------+------+-------+-----+----+------+-----+------+-----+---+ @@ -115,12 +115,25 @@ static void kvm_arm_init_debug(CPUState *cs) * SSC/HMC/PMC: Security, Higher and Priv access control (Table D-12) * BAS: Byte Address Select (RES1 for AArch64) * E: Enable bit + * + * DBGBVR_EL1, Debug Breakpoint Value Registers + * + * 63 53 52 49 48 2 1 0 + * +------+-----------+----------+-----+ + * | RESS | VA[52:49] | VA[48:2] | 0 0 | + * +------+-----------+----------+-----+ + * + * Depending on the addressing mode bits the top bits of the register + * are a sign extension of the highest applicable VA bit. Some + * versions of GDB don't do it correctly so we ensure they are correct + * here so future PC comparisons will work properly. */ + static int insert_hw_breakpoint(target_ulong addr) { HWBreakpoint brk = { .bcr = 0x1, /* BCR E=1, enable */ - .bvr = addr + .bvr = sextract64(addr, 0, 53) }; if (cur_hw_bps >= max_hw_bps) {