From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34282) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2q9W-0000Ju-Ed for qemu-devel@nongnu.org; Fri, 26 Jul 2013 18:06:27 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1V2q9O-0002GM-ME for qemu-devel@nongnu.org; Fri, 26 Jul 2013 18:06:22 -0400 Received: from cantor2.suse.de ([195.135.220.15]:47403 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1V2q9O-0002G4-Ap for qemu-devel@nongnu.org; Fri, 26 Jul 2013 18:06:14 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sat, 27 Jul 2013 00:05:44 +0200 Message-Id: <1374876350-32189-20-git-send-email-afaerber@suse.de> In-Reply-To: <1374876350-32189-1-git-send-email-afaerber@suse.de> References: <1374876350-32189-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PULL 19/25] target-s390x: Move cpu_gdb_{read, write}_register() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Alexander Graf , =?UTF-8?q?Andreas=20F=C3=A4rber?= , Richard Henderson Signed-off-by: Andreas F=C3=A4rber --- gdbstub.c | 60 +------------------------------------ target-s390x/gdbstub.c | 80 ++++++++++++++++++++++++++++++++++++++++++++= ++++++ 2 files changed, 81 insertions(+), 59 deletions(-) create mode 100644 target-s390x/gdbstub.c diff --git a/gdbstub.c b/gdbstub.c index 51e64bb..58502f3 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -574,66 +574,8 @@ static int put_packet(GDBState *s, const char *buf) =20 #elif defined (TARGET_S390X) =20 -static int cpu_gdb_read_register(CPUS390XState *env, uint8_t *mem_buf, i= nt n) -{ - uint64_t val; - int cc_op; - - switch (n) { - case S390_PSWM_REGNUM: - cc_op =3D calc_cc(env, env->cc_op, env->cc_src, env->cc_dst, env= ->cc_vr); - val =3D deposit64(env->psw.mask, 44, 2, cc_op); - GET_REGL(val); - case S390_PSWA_REGNUM: - GET_REGL(env->psw.addr); - case S390_R0_REGNUM ... S390_R15_REGNUM: - GET_REGL(env->regs[n-S390_R0_REGNUM]); - case S390_A0_REGNUM ... S390_A15_REGNUM: - GET_REG32(env->aregs[n-S390_A0_REGNUM]); - case S390_FPC_REGNUM: - GET_REG32(env->fpc); - case S390_F0_REGNUM ... S390_F15_REGNUM: - GET_REG64(env->fregs[n-S390_F0_REGNUM].ll); - } - - return 0; -} +#include "target-s390x/gdbstub.c" =20 -static int cpu_gdb_write_register(CPUS390XState *env, uint8_t *mem_buf, = int n) -{ - target_ulong tmpl; - uint32_t tmp32; - int r =3D 8; - tmpl =3D ldtul_p(mem_buf); - tmp32 =3D ldl_p(mem_buf); - - switch (n) { - case S390_PSWM_REGNUM: - env->psw.mask =3D tmpl; - env->cc_op =3D extract64(tmpl, 44, 2); - break; - case S390_PSWA_REGNUM: - env->psw.addr =3D tmpl; - break; - case S390_R0_REGNUM ... S390_R15_REGNUM: - env->regs[n-S390_R0_REGNUM] =3D tmpl; - break; - case S390_A0_REGNUM ... S390_A15_REGNUM: - env->aregs[n-S390_A0_REGNUM] =3D tmp32; - r =3D 4; - break; - case S390_FPC_REGNUM: - env->fpc =3D tmp32; - r =3D 4; - break; - case S390_F0_REGNUM ... S390_F15_REGNUM: - env->fregs[n-S390_F0_REGNUM].ll =3D tmpl; - break; - default: - return 0; - } - return r; -} #elif defined (TARGET_LM32) =20 #include "hw/lm32/lm32_pic.h" diff --git a/target-s390x/gdbstub.c b/target-s390x/gdbstub.c new file mode 100644 index 0000000..c966143 --- /dev/null +++ b/target-s390x/gdbstub.c @@ -0,0 +1,80 @@ +/* + * s390x gdb server stub + * + * Copyright (c) 2003-2005 Fabrice Bellard + * Copyright (c) 2013 SUSE LINUX Products GmbH + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, see . + */ + +static int cpu_gdb_read_register(CPUS390XState *env, uint8_t *mem_buf, i= nt n) +{ + uint64_t val; + int cc_op; + + switch (n) { + case S390_PSWM_REGNUM: + cc_op =3D calc_cc(env, env->cc_op, env->cc_src, env->cc_dst, env= ->cc_vr); + val =3D deposit64(env->psw.mask, 44, 2, cc_op); + GET_REGL(val); + case S390_PSWA_REGNUM: + GET_REGL(env->psw.addr); + case S390_R0_REGNUM ... S390_R15_REGNUM: + GET_REGL(env->regs[n-S390_R0_REGNUM]); + case S390_A0_REGNUM ... S390_A15_REGNUM: + GET_REG32(env->aregs[n-S390_A0_REGNUM]); + case S390_FPC_REGNUM: + GET_REG32(env->fpc); + case S390_F0_REGNUM ... S390_F15_REGNUM: + GET_REG64(env->fregs[n-S390_F0_REGNUM].ll); + } + + return 0; +} + +static int cpu_gdb_write_register(CPUS390XState *env, uint8_t *mem_buf, = int n) +{ + target_ulong tmpl; + uint32_t tmp32; + int r =3D 8; + tmpl =3D ldtul_p(mem_buf); + tmp32 =3D ldl_p(mem_buf); + + switch (n) { + case S390_PSWM_REGNUM: + env->psw.mask =3D tmpl; + env->cc_op =3D extract64(tmpl, 44, 2); + break; + case S390_PSWA_REGNUM: + env->psw.addr =3D tmpl; + break; + case S390_R0_REGNUM ... S390_R15_REGNUM: + env->regs[n-S390_R0_REGNUM] =3D tmpl; + break; + case S390_A0_REGNUM ... S390_A15_REGNUM: + env->aregs[n-S390_A0_REGNUM] =3D tmp32; + r =3D 4; + break; + case S390_FPC_REGNUM: + env->fpc =3D tmp32; + r =3D 4; + break; + case S390_F0_REGNUM ... S390_F15_REGNUM: + env->fregs[n-S390_F0_REGNUM].ll =3D tmpl; + break; + default: + return 0; + } + return r; +} --=20 1.8.1.4