From patchwork Sat Jun 3 09:19:24 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Filippov X-Patchwork-Id: 770760 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3wfwXf3cr6z9s74 for ; Sat, 3 Jun 2017 19:20:17 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Puhpw+v0"; dkim-atps=neutral Received: from localhost ([::1]:53015 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dH5EB-0001eW-LU for incoming@patchwork.ozlabs.org; Sat, 03 Jun 2017 05:20:11 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60007) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dH5Dj-0001eQ-W5 for qemu-devel@nongnu.org; Sat, 03 Jun 2017 05:19:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dH5Dg-0006pS-RL for qemu-devel@nongnu.org; Sat, 03 Jun 2017 05:19:43 -0400 Received: from mail-lf0-x243.google.com ([2a00:1450:4010:c07::243]:34969) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dH5Dg-0006o1-JQ; Sat, 03 Jun 2017 05:19:40 -0400 Received: by mail-lf0-x243.google.com with SMTP id v20so3307840lfa.2; Sat, 03 Jun 2017 02:19:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=YlcKsO7TtXKG/1ZfR23kK5eivb9nV8yDIH7Nd/4odDg=; b=Puhpw+v0Yv0UatD0y4lVZC9mgxvFXpkGtw+BRf630KTnWCfq8fdDrvj6rBiZPFN3BX +d9uC4sVT3NhjoLxZz8FT/69D1LF9MNN1jisr5sxXdtsUvPdEhDFaVgeJJP9yktMf0mx STjAPTOH3fJGN3qcAYnUgrsKKZg6qMjRDjaSVR1Sr7laUHXh9GnEoSpS9o2lKoZ9/UM/ wmNc3Sg6RfhmcKyO9FZu+H1xdAQmLL5QebaFCr1IR1Tg2tzs6CHS+X/iB+mrOqnevU/X ziZpWJr4H/Fbv7RHe1lB+czR+QfOsljq9enYqP/9htbsQRyFJsu4FC0ZgbX7ZVryoC/H 1Qcw== 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; bh=YlcKsO7TtXKG/1ZfR23kK5eivb9nV8yDIH7Nd/4odDg=; b=Wa/KREaQEHj3XOycY19cUPk7tDd7/t5R4cNtcbLO/zsFaDccX83u637msV34bxNHZK ex1PIzeP6q2GwDlvxtHiU5qZstMNj7sLWIo7KvQY30hl9ZtuhfiMqqdhlXGak4n2t2vF xn3/T6/GTV9pI8ddNoX9vPiSIVYzsTZMSZK6jrF5H/9q6rPAu6hvT116cK3o0jHIR8wG FZ98YgSwST5/ITWQ+jKrfWv0mJZ5JfncD4xOA2wW3M0c9QWOoZiiAivPbuPiKyjNKpJs NBQg2TMpbxGM8n8G512DeBPQsevVkA/gPsDH1UKUFNz2Z+cfn8vuVuT7uzKhVxy+ubfr hMpw== X-Gm-Message-State: AODbwcCsOli/qRp/TlP/aVa9sahWSjhJ0BYor9yC+/KsUj0GaLvlRhHa q7y6TF0b6mzpIJ3j X-Received: by 10.25.76.2 with SMTP id z2mr3488112lfa.183.1496481577518; Sat, 03 Jun 2017 02:19:37 -0700 (PDT) Received: from octofox.net ([5.19.183.212]) by smtp.gmail.com with ESMTPSA id u18sm5531641lff.10.2017.06.03.02.19.35 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 03 Jun 2017 02:19:37 -0700 (PDT) From: Max Filippov To: qemu-devel@nongnu.org Date: Sat, 3 Jun 2017 02:19:24 -0700 Message-Id: <1496481564-20545-1-git-send-email-jcmvbkbc@gmail.com> X-Mailer: git-send-email 2.1.4 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4010:c07::243 Subject: [Qemu-devel] [PATCH] target/xtensa: handle unknown registers in gdbstub 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: , Cc: Max Filippov , qemu-stable@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" Xtensa cores may have registers of types/sizes not supported by the gdbstub accessors. Ignore writes to such registers and return zero on read, but always return correct register size, so that gdb on the other side is able to access all registers in the packet holding unsupported registers in the middle. This fixes gdb interaction with cores that have vector/custom TIE registers. Cc: qemu-stable@nongnu.org Signed-off-by: Max Filippov --- target/xtensa/gdbstub.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/target/xtensa/gdbstub.c b/target/xtensa/gdbstub.c index fa5469a..da131ae 100644 --- a/target/xtensa/gdbstub.c +++ b/target/xtensa/gdbstub.c @@ -58,7 +58,10 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n) case 8: return gdb_get_reg64(mem_buf, float64_val(env->fregs[i].f64)); default: - return 0; + qemu_log_mask(LOG_UNIMP, "%s from reg %d of unsupported size %d\n", + __func__, n, reg->size); + memset(mem_buf, 0, reg->size); + return reg->size; } case 8: /*a*/ @@ -67,6 +70,8 @@ int xtensa_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n) default: qemu_log_mask(LOG_UNIMP, "%s from reg %d of unsupported type %d\n", __func__, n, reg->type); + memset(mem_buf, 0, reg->size); + return reg->size; return 0; } } @@ -111,7 +116,9 @@ int xtensa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) env->fregs[reg->targno & 0x0f].f64 = make_float64(tmp); return 8; default: - return 0; + qemu_log_mask(LOG_UNIMP, "%s to reg %d of unsupported size %d\n", + __func__, n, reg->size); + return reg->size; } case 8: /*a*/ @@ -121,7 +128,7 @@ int xtensa_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n) default: qemu_log_mask(LOG_UNIMP, "%s to reg %d of unsupported type %d\n", __func__, n, reg->type); - return 0; + return reg->size; } return 4;