From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:54194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UX4CQ-0003Jx-8j for qemu-devel@nongnu.org; Tue, 30 Apr 2013 02:38:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UX4CM-0003JK-Ts for qemu-devel@nongnu.org; Tue, 30 Apr 2013 02:38:02 -0400 Received: from mail-pd0-f181.google.com ([209.85.192.181]:56963) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UX4CM-0003J3-LC for qemu-devel@nongnu.org; Tue, 30 Apr 2013 02:37:58 -0400 Received: by mail-pd0-f181.google.com with SMTP id q10so128740pdj.40 for ; Mon, 29 Apr 2013 23:37:58 -0700 (PDT) From: John Rigby Date: Tue, 30 Apr 2013 00:37:09 -0600 Message-Id: <1367303829-9631-1-git-send-email-john.rigby@linaro.org> Subject: [Qemu-devel] [PATCH v2 04/12] AArch64: Add gdb stub List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel Cc: Peter Maydell , 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 --- 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..92b6b2d 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->sp); + 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->sp = 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.7.9.5