From patchwork Wed May 4 00:59:07 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Filippov X-Patchwork-Id: 93942 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [140.186.70.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 8D9EDB6F54 for ; Wed, 4 May 2011 11:02:18 +1000 (EST) Received: from localhost ([::1]:55488 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHQTn-00073p-Ti for incoming@patchwork.ozlabs.org; Tue, 03 May 2011 21:02:15 -0400 Received: from eggs.gnu.org ([140.186.70.92]:52974) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHQRq-0004I9-GW for qemu-devel@nongnu.org; Tue, 03 May 2011 21:00:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QHQRp-0000jU-Gp for qemu-devel@nongnu.org; Tue, 03 May 2011 21:00:14 -0400 Received: from mail-ew0-f45.google.com ([209.85.215.45]:56465) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QHQRp-0000ZL-Bw for qemu-devel@nongnu.org; Tue, 03 May 2011 21:00:13 -0400 Received: by mail-ew0-f45.google.com with SMTP id 24so221435ewy.4 for ; Tue, 03 May 2011 18:00:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:from:to:cc:subject:date:message-id:x-mailer :in-reply-to:references; bh=WGC3JsDtFkXf7XUwjAXfYtuVueOr6YQsvdMlB09SHMk=; b=b2ZYvlzWEY5TEndlL+OuIxyrBtADE+mW0fTY9QA5NNx60F+9kEPtYuTtrfW34D9KKc gd/SlBdHv24eRxsoNYvbNYc7f6mMpxIRojdZcRRWOB03z6FRlB7kr7uxY7zfIg1/xUQa XXyKkl4KGZjMLkYyaZkWlv/IEMqWNDQkBl+iM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; b=iKjRS2znp2hwzeSIbUokG+SvpW+DxobvjsePUIF/MKAANGaDjj2sxpphNjIgGgIZKz D76xPMVxNxtIcdi0HYDu4+6zpPUbFw5VBkd0L9uEtWXZnmBOuy4UkPutEhFqKDtU8Qcz qUx7wjuo92JmOWIXM0EeWGtdPRhAxnOyX/ArE= Received: by 10.213.2.68 with SMTP id 4mr1708217ebi.38.1304470812876; Tue, 03 May 2011 18:00:12 -0700 (PDT) Received: from octofox.metropolis ([188.134.19.124]) by mx.google.com with ESMTPS id y18sm440896eeh.8.2011.05.03.18.00.11 (version=TLSv1/SSLv3 cipher=OTHER); Tue, 03 May 2011 18:00:12 -0700 (PDT) Received: by octofox.metropolis (sSMTP sendmail emulation); Wed, 4 May 2011 05:00:10 +0400 From: Max Filippov To: qemu-devel@nongnu.org Date: Wed, 4 May 2011 04:59:07 +0400 Message-Id: <1304470768-16924-7-git-send-email-jcmvbkbc@gmail.com> X-Mailer: git-send-email 1.7.3.4 In-Reply-To: <1304470768-16924-1-git-send-email-jcmvbkbc@gmail.com> References: <1304470768-16924-1-git-send-email-jcmvbkbc@gmail.com> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 209.85.215.45 Cc: Max Filippov Subject: [Qemu-devel] [RFC 07/28] target-xtensa: add gdb support X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Signed-off-by: Max Filippov --- configure | 1 + default-configs/xtensa-softmmu.mak | 1 + gdb-xml/xtensa-core.xml | 24 ++++++++++++++++++++++ gdbstub.c | 39 ++++++++++++++++++++++++++++++++++++ 4 files changed, 65 insertions(+), 0 deletions(-) create mode 100644 gdb-xml/xtensa-core.xml diff --git a/configure b/configure index d8c33b9..41a7007 100755 --- a/configure +++ b/configure @@ -3213,6 +3213,7 @@ case "$target_arch2" in ;; xtensa) TARGET_ARCH=xtensa + gdb_xml_files="xtensa-core.xml" target_phys_bits=32 ;; *) diff --git a/default-configs/xtensa-softmmu.mak b/default-configs/xtensa-softmmu.mak index e5faa09..57ad848 100644 --- a/default-configs/xtensa-softmmu.mak +++ b/default-configs/xtensa-softmmu.mak @@ -1 +1,2 @@ # Default configuration for Xtensa +CONFIG_GDBSTUB_XML=y diff --git a/gdb-xml/xtensa-core.xml b/gdb-xml/xtensa-core.xml new file mode 100644 index 0000000..e71d8bc --- /dev/null +++ b/gdb-xml/xtensa-core.xml @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gdbstub.c b/gdbstub.c index 0838948..9f6145f 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -1541,6 +1541,43 @@ static int cpu_gdb_write_register(CPUState *env, uint8_t *mem_buf, int n) } return 4; } +#elif defined(TARGET_XTENSA) + +#define GDB_CORE_XML "xtensa-core.xml" +#define NUM_CORE_REGS (45) + +static int cpu_gdb_read_register(CPUState *env, uint8_t *mem_buf, int n) +{ + if (n < 0 || n >= NUM_CORE_REGS) { + return 0; + } + if (n == 0) { + GET_REG32(env->pc); + } else if (n < 17) { + GET_REG32(env->regs[n - 1]); + } else { + GET_REG32(env->sregs[n - 17]); + } +} + +static int cpu_gdb_write_register(CPUState *env, uint8_t *mem_buf, int n) +{ + uint32_t tmp; + + if (n < 0 || n >= NUM_CORE_REGS) { + return 0; + } + tmp = ldl_p(mem_buf); + + if (n == 0) { + env->pc = tmp; + } else if (n < 17) { + env->regs[n - 1] = tmp; + } else { + env->sregs[n - 17] = tmp; + } + return 4; +} #else #define NUM_CORE_REGS 0 @@ -1818,6 +1855,8 @@ static void gdb_set_cpu_pc(GDBState *s, target_ulong pc) s->c_cpu->psw.addr = pc; #elif defined (TARGET_LM32) s->c_cpu->pc = pc; +#elif defined(TARGET_XTENSA) + s->c_cpu->pc = pc; #endif }