From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58452) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uc6vm-0007Oc-JK for qemu-devel@nongnu.org; Tue, 14 May 2013 00:33:45 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uc6vj-0008Mp-Mx for qemu-devel@nongnu.org; Tue, 14 May 2013 00:33:42 -0400 Received: from mail-pb0-x22b.google.com ([2607:f8b0:400e:c01::22b]:50500) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uc6vj-0008Ml-Cg for qemu-devel@nongnu.org; Tue, 14 May 2013 00:33:39 -0400 Received: by mail-pb0-f43.google.com with SMTP id md12so80586pbc.16 for ; Mon, 13 May 2013 21:33:38 -0700 (PDT) From: John Rigby Date: Mon, 13 May 2013 22:32:53 -0600 Message-Id: <1368505980-17151-6-git-send-email-john.rigby@linaro.org> In-Reply-To: <1368505980-17151-1-git-send-email-john.rigby@linaro.org> References: <1368505980-17151-1-git-send-email-john.rigby@linaro.org> Subject: [Qemu-devel] [PATCH v4 05/12] AArch64: Add gdb stub List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: 'Peter Maydell , John Rigby , 'Alexander Graf From: Alexander Graf We want to be able to debug AArch64 guests. So let's add the respective gdb stub functions and xml descriptions that allow us to do so. Signed-off-by: Alexander Graf Signed-off-by: John Rigby --- Changes in v3: - fix checkpatch.pl issues Changes in v4: - env->sp --> env->xregs[31] gdb-xml/aarch64-core.xml | 46 ++++++++++++++++++++++++++ gdb-xml/aarch64-fpu.xml | 86 ++++++++++++++++++++++++++++++++++++++++++++++++ gdbstub.c | 53 +++++++++++++++++++++++++++++ 3 files changed, 185 insertions(+) create mode 100644 gdb-xml/aarch64-core.xml create mode 100644 gdb-xml/aarch64-fpu.xml diff --git a/gdb-xml/aarch64-core.xml b/gdb-xml/aarch64-core.xml new file mode 100644 index 0000000..e1e9dc3 --- /dev/null +++ b/gdb-xml/aarch64-core.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gdb-xml/aarch64-fpu.xml b/gdb-xml/aarch64-fpu.xml new file mode 100644 index 0000000..997197e --- /dev/null +++ b/gdb-xml/aarch64-fpu.xml @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gdbstub.c b/gdbstub.c index e80e1d3..e85f34a 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -935,6 +935,59 @@ static int cpu_gdb_write_register(CPUSPARCState *env, uint8_t *mem_buf, int n) return 8; #endif } +#elif defined(TARGET_AARCH64) + +#define NUM_CORE_REGS 34 +#define GDB_CORE_XML "aarch64-core.xml" + +static int cpu_gdb_read_register(CPUARMState *env, uint8_t *mem_buf, int n) +{ + if (n < 31) { + /* Core integer register. */ + GET_REG64(env->xregs[n]); + } + switch (n) { + case 31: + GET_REG64(env->xregs[31]); + break; + case 32: + GET_REG64(env->pc); + break; + case 33: + GET_REG32(env->pstate); + break; + } + /* Unknown register. */ + return 0; +} + +static int cpu_gdb_write_register(CPUARMState *env, uint8_t *mem_buf, int n) +{ + uint64_t tmp; + + tmp = ldq_p(mem_buf); + + if (n < 31) { + /* Core integer register. */ + env->xregs[n] = tmp; + return 8; + } + switch (n) { + case 31: + env->xregs[31] = tmp; + return 8; + case 32: + env->pc = tmp; + return 8; + case 33: + /* CPSR */ + env->pstate = tmp; + return 4; + } + /* Unknown register. */ + return 0; +} + #elif defined (TARGET_ARM) /* Old gdb always expect FPA registers. Newer (xml-aware) gdb only expect -- 1.8.2.2