remote_gdb.cc revision 12449:2260f4a68210
112239Sandreas.sandberg@arm.com/* 214249Sgiacomo.travaglini@arm.com * Copyright 2015 LabWare 314249Sgiacomo.travaglini@arm.com * Copyright 2014 Google Inc. 414249Sgiacomo.travaglini@arm.com * Copyright (c) 2010, 2013, 2016 ARM Limited 514249Sgiacomo.travaglini@arm.com * All rights reserved 614249Sgiacomo.travaglini@arm.com * 714249Sgiacomo.travaglini@arm.com * The license below extends only to copyright in the software and shall 814249Sgiacomo.travaglini@arm.com * not be construed as granting a license to any other intellectual 914249Sgiacomo.travaglini@arm.com * property including but not limited to intellectual property relating 1014249Sgiacomo.travaglini@arm.com * to a hardware implementation of the functionality of the software 1114249Sgiacomo.travaglini@arm.com * licensed hereunder. You may use the software subject to the license 1214249Sgiacomo.travaglini@arm.com * terms below provided that you ensure that this notice is replicated 1314249Sgiacomo.travaglini@arm.com * unmodified and in its entirety in all distributions of the software, 1412239Sandreas.sandberg@arm.com * modified or unmodified, in source code or in binary form. 1512239Sandreas.sandberg@arm.com * 1612239Sandreas.sandberg@arm.com * Copyright (c) 2002-2005 The Regents of The University of Michigan 1712239Sandreas.sandberg@arm.com * All rights reserved. 1812239Sandreas.sandberg@arm.com * 1912239Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 2012239Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions are 2112239Sandreas.sandberg@arm.com * met: redistributions of source code must retain the above copyright 2212239Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer; 2312239Sandreas.sandberg@arm.com * redistributions in binary form must reproduce the above copyright 2412239Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 2512239Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution; 2612239Sandreas.sandberg@arm.com * neither the name of the copyright holders nor the names of its 2712239Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived from 2812239Sandreas.sandberg@arm.com * this software without specific prior written permission. 2912239Sandreas.sandberg@arm.com * 3012239Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 3112239Sandreas.sandberg@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 3212239Sandreas.sandberg@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 3312239Sandreas.sandberg@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 3412239Sandreas.sandberg@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 3512239Sandreas.sandberg@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 3612239Sandreas.sandberg@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 3712239Sandreas.sandberg@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 3812239Sandreas.sandberg@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 3912239Sandreas.sandberg@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 4012239Sandreas.sandberg@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 4112239Sandreas.sandberg@arm.com * 4212239Sandreas.sandberg@arm.com * Authors: Nathan Binkert 4312239Sandreas.sandberg@arm.com * William Wang 4412239Sandreas.sandberg@arm.com * Boris Shingarov 4512239Sandreas.sandberg@arm.com */ 4612239Sandreas.sandberg@arm.com 4712239Sandreas.sandberg@arm.com/* 4812239Sandreas.sandberg@arm.com * Copyright (c) 1990, 1993 The Regents of the University of California 4912239Sandreas.sandberg@arm.com * All rights reserved 5012239Sandreas.sandberg@arm.com * 5112239Sandreas.sandberg@arm.com * This software was developed by the Computer Systems Engineering group 5212239Sandreas.sandberg@arm.com * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and 5312239Sandreas.sandberg@arm.com * contributed to Berkeley. 5412239Sandreas.sandberg@arm.com * 5512239Sandreas.sandberg@arm.com * All advertising materials mentioning features or use of this software 5612239Sandreas.sandberg@arm.com * must display the following acknowledgement: 5712239Sandreas.sandberg@arm.com * This product includes software developed by the University of 5812239Sandreas.sandberg@arm.com * California, Lawrence Berkeley Laboratories. 5912239Sandreas.sandberg@arm.com * 6012239Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 6112239Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions 6212239Sandreas.sandberg@arm.com * are met: 6312239Sandreas.sandberg@arm.com * 1. Redistributions of source code must retain the above copyright 6412239Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer. 6512239Sandreas.sandberg@arm.com * 2. Redistributions in binary form must reproduce the above copyright 6612239Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 6712239Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution. 6812239Sandreas.sandberg@arm.com * 3. All advertising materials mentioning features or use of this software 6912239Sandreas.sandberg@arm.com * must display the following acknowledgement: 7012334Sgabeblack@google.com * This product includes software developed by the University of 7112239Sandreas.sandberg@arm.com * California, Berkeley and its contributors. 7212239Sandreas.sandberg@arm.com * 4. Neither the name of the University nor the names of its contributors 7312239Sandreas.sandberg@arm.com * may be used to endorse or promote products derived from this software 7412239Sandreas.sandberg@arm.com * without specific prior written permission. 7512239Sandreas.sandberg@arm.com * 7612239Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 7712239Sandreas.sandberg@arm.com * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 7812239Sandreas.sandberg@arm.com * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 7912239Sandreas.sandberg@arm.com * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 8012239Sandreas.sandberg@arm.com * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 8112239Sandreas.sandberg@arm.com * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 8212239Sandreas.sandberg@arm.com * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 8312239Sandreas.sandberg@arm.com * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 8412239Sandreas.sandberg@arm.com * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 8512239Sandreas.sandberg@arm.com * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 8612239Sandreas.sandberg@arm.com * SUCH DAMAGE. 8712239Sandreas.sandberg@arm.com * 8812239Sandreas.sandberg@arm.com * @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94 8912239Sandreas.sandberg@arm.com */ 9012239Sandreas.sandberg@arm.com 9112239Sandreas.sandberg@arm.com/*- 9212239Sandreas.sandberg@arm.com * Copyright (c) 2001 The NetBSD Foundation, Inc. 9312239Sandreas.sandberg@arm.com * All rights reserved. 9412239Sandreas.sandberg@arm.com * 9512239Sandreas.sandberg@arm.com * This code is derived from software contributed to The NetBSD Foundation 9612239Sandreas.sandberg@arm.com * by Jason R. Thorpe. 9712239Sandreas.sandberg@arm.com * 9812239Sandreas.sandberg@arm.com * Redistribution and use in source and binary forms, with or without 9912239Sandreas.sandberg@arm.com * modification, are permitted provided that the following conditions 10012239Sandreas.sandberg@arm.com * are met: 10112239Sandreas.sandberg@arm.com * 1. Redistributions of source code must retain the above copyright 10212239Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer. 10312239Sandreas.sandberg@arm.com * 2. Redistributions in binary form must reproduce the above copyright 10412239Sandreas.sandberg@arm.com * notice, this list of conditions and the following disclaimer in the 10512239Sandreas.sandberg@arm.com * documentation and/or other materials provided with the distribution. 10612239Sandreas.sandberg@arm.com * 3. All advertising materials mentioning features or use of this software 10712239Sandreas.sandberg@arm.com * must display the following acknowledgement: 10812239Sandreas.sandberg@arm.com * This product includes software developed by the NetBSD 10912239Sandreas.sandberg@arm.com * Foundation, Inc. and its contributors. 11012239Sandreas.sandberg@arm.com * 4. Neither the name of The NetBSD Foundation nor the names of its 11112239Sandreas.sandberg@arm.com * contributors may be used to endorse or promote products derived 11212239Sandreas.sandberg@arm.com * from this software without specific prior written permission. 11312239Sandreas.sandberg@arm.com * 11412239Sandreas.sandberg@arm.com * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 11512239Sandreas.sandberg@arm.com * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 11612239Sandreas.sandberg@arm.com * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 11712239Sandreas.sandberg@arm.com * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 11812239Sandreas.sandberg@arm.com * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 11912239Sandreas.sandberg@arm.com * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 12012239Sandreas.sandberg@arm.com * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 12112239Sandreas.sandberg@arm.com * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 12212239Sandreas.sandberg@arm.com * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 12312239Sandreas.sandberg@arm.com * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 12414249Sgiacomo.travaglini@arm.com * POSSIBILITY OF SUCH DAMAGE. 12512239Sandreas.sandberg@arm.com */ 12612239Sandreas.sandberg@arm.com 12712239Sandreas.sandberg@arm.com/* 12812239Sandreas.sandberg@arm.com * $NetBSD: kgdb_stub.c,v 1.8 2001/07/07 22:58:00 wdk Exp $ 12912239Sandreas.sandberg@arm.com * 13012239Sandreas.sandberg@arm.com * Taken from NetBSD 13112239Sandreas.sandberg@arm.com * 13212239Sandreas.sandberg@arm.com * "Stub" to allow remote cpu to debug over a serial line using gdb. 13312239Sandreas.sandberg@arm.com */ 13412239Sandreas.sandberg@arm.com 13512239Sandreas.sandberg@arm.com#include "arch/arm/remote_gdb.hh" 13612239Sandreas.sandberg@arm.com 13712239Sandreas.sandberg@arm.com#include <sys/signal.h> 13812239Sandreas.sandberg@arm.com#include <unistd.h> 13912239Sandreas.sandberg@arm.com 14012239Sandreas.sandberg@arm.com#include <string> 14112239Sandreas.sandberg@arm.com 14212239Sandreas.sandberg@arm.com#include "arch/arm/decoder.hh" 14312239Sandreas.sandberg@arm.com#include "arch/arm/pagetable.hh" 14412239Sandreas.sandberg@arm.com#include "arch/arm/registers.hh" 14512239Sandreas.sandberg@arm.com#include "arch/arm/system.hh" 14612239Sandreas.sandberg@arm.com#include "arch/arm/utility.hh" 14712239Sandreas.sandberg@arm.com#include "arch/arm/vtophys.hh" 14814249Sgiacomo.travaglini@arm.com#include "base/chunk_generator.hh" 14914249Sgiacomo.travaglini@arm.com#include "base/intmath.hh" 15014249Sgiacomo.travaglini@arm.com#include "base/remote_gdb.hh" 15114249Sgiacomo.travaglini@arm.com#include "base/socket.hh" 15214249Sgiacomo.travaglini@arm.com#include "base/trace.hh" 15314249Sgiacomo.travaglini@arm.com#include "cpu/static_inst.hh" 15414288SAndrea.Mondelli@ucf.edu#include "cpu/thread_context.hh" 15514249Sgiacomo.travaglini@arm.com#include "cpu/thread_state.hh" 15614288SAndrea.Mondelli@ucf.edu#include "debug/GDBAcc.hh" 15714249Sgiacomo.travaglini@arm.com#include "debug/GDBMisc.hh" 15814249Sgiacomo.travaglini@arm.com#include "mem/page_table.hh" 15914249Sgiacomo.travaglini@arm.com#include "mem/physical.hh" 16014249Sgiacomo.travaglini@arm.com#include "mem/port.hh" 16114249Sgiacomo.travaglini@arm.com#include "sim/full_system.hh" 16214249Sgiacomo.travaglini@arm.com#include "sim/system.hh" 16314249Sgiacomo.travaglini@arm.com 16412239Sandreas.sandberg@arm.comusing namespace std; 16512239Sandreas.sandberg@arm.comusing namespace ArmISA; 16612239Sandreas.sandberg@arm.com 16712239Sandreas.sandberg@arm.comRemoteGDB::RemoteGDB(System *_system, ThreadContext *tc, int _port) 16812239Sandreas.sandberg@arm.com : BaseRemoteGDB(_system, tc, _port), regCache32(this), regCache64(this) 16912239Sandreas.sandberg@arm.com{ 17012239Sandreas.sandberg@arm.com} 17112239Sandreas.sandberg@arm.com 17212239Sandreas.sandberg@arm.com/* 17312239Sandreas.sandberg@arm.com * Determine if the mapping at va..(va+len) is valid. 17412239Sandreas.sandberg@arm.com */ 17512239Sandreas.sandberg@arm.combool 17612239Sandreas.sandberg@arm.comRemoteGDB::acc(Addr va, size_t len) 17712239Sandreas.sandberg@arm.com{ 17812239Sandreas.sandberg@arm.com if (FullSystem) { 17912239Sandreas.sandberg@arm.com for (ChunkGenerator gen(va, len, PageBytes); !gen.done(); gen.next()) { 18012239Sandreas.sandberg@arm.com if (!virtvalid(context(), gen.addr())) { 18112239Sandreas.sandberg@arm.com DPRINTF(GDBAcc, "acc: %#x mapping is invalid\n", va); 18212239Sandreas.sandberg@arm.com return false; 18312239Sandreas.sandberg@arm.com } 18412693Sandreas.sandberg@arm.com } 18512693Sandreas.sandberg@arm.com 18612239Sandreas.sandberg@arm.com DPRINTF(GDBAcc, "acc: %#x mapping is valid\n", va); 18712239Sandreas.sandberg@arm.com return true; 18812239Sandreas.sandberg@arm.com } else { 18912239Sandreas.sandberg@arm.com TlbEntry entry; 19012239Sandreas.sandberg@arm.com //Check to make sure the first byte is mapped into the processes address 19112239Sandreas.sandberg@arm.com //space. 19212239Sandreas.sandberg@arm.com if (context()->getProcessPtr()->pTable->lookup(va, entry)) 19312239Sandreas.sandberg@arm.com return true; 19412239Sandreas.sandberg@arm.com return false; 19512239Sandreas.sandberg@arm.com } 19612239Sandreas.sandberg@arm.com} 19712239Sandreas.sandberg@arm.com 19812239Sandreas.sandberg@arm.comvoid 19912239Sandreas.sandberg@arm.comRemoteGDB::AArch64GdbRegCache::getRegs(ThreadContext *context) 20012239Sandreas.sandberg@arm.com{ 20112239Sandreas.sandberg@arm.com DPRINTF(GDBAcc, "getRegs in remotegdb \n"); 20212239Sandreas.sandberg@arm.com 20312239Sandreas.sandberg@arm.com for (int i = 0; i < 31; ++i) 20412239Sandreas.sandberg@arm.com r.x[i] = context->readIntReg(INTREG_X0 + i); 20512239Sandreas.sandberg@arm.com r.spx = context->readIntReg(INTREG_SPX); 20612239Sandreas.sandberg@arm.com r.pc = context->pcState().pc(); 20712239Sandreas.sandberg@arm.com r.cpsr = context->readMiscRegNoEffect(MISCREG_CPSR); 20812239Sandreas.sandberg@arm.com 20912239Sandreas.sandberg@arm.com for (int i = 0; i < 32*4; i += 4) { 21012239Sandreas.sandberg@arm.com r.v[i + 0] = context->readFloatRegBits(i + 2); 21112239Sandreas.sandberg@arm.com r.v[i + 1] = context->readFloatRegBits(i + 3); 21212239Sandreas.sandberg@arm.com r.v[i + 2] = context->readFloatRegBits(i + 0); 21312239Sandreas.sandberg@arm.com r.v[i + 3] = context->readFloatRegBits(i + 1); 21412239Sandreas.sandberg@arm.com } 21512239Sandreas.sandberg@arm.com 21612239Sandreas.sandberg@arm.com for (int i = 0; i < 32; i ++) { 21712239Sandreas.sandberg@arm.com r.vec[i] = context->readVecReg(RegId(VecRegClass,i)); 21812239Sandreas.sandberg@arm.com } 21912239Sandreas.sandberg@arm.com} 22012239Sandreas.sandberg@arm.com 22112239Sandreas.sandberg@arm.comvoid 22212239Sandreas.sandberg@arm.comRemoteGDB::AArch64GdbRegCache::setRegs(ThreadContext *context) const 22312239Sandreas.sandberg@arm.com{ 22412239Sandreas.sandberg@arm.com DPRINTF(GDBAcc, "setRegs in remotegdb \n"); 22512239Sandreas.sandberg@arm.com 22612239Sandreas.sandberg@arm.com for (int i = 0; i < 31; ++i) 22712239Sandreas.sandberg@arm.com context->setIntReg(INTREG_X0 + i, r.x[i]); 22812239Sandreas.sandberg@arm.com context->pcState(r.pc); 22912239Sandreas.sandberg@arm.com context->setMiscRegNoEffect(MISCREG_CPSR, r.cpsr); 23012239Sandreas.sandberg@arm.com // Update the stack pointer. This should be done after 23112239Sandreas.sandberg@arm.com // updating CPSR/PSTATE since that might affect how SPX gets 23212239Sandreas.sandberg@arm.com // mapped. 23312239Sandreas.sandberg@arm.com context->setIntReg(INTREG_SPX, r.spx); 23412239Sandreas.sandberg@arm.com 23512239Sandreas.sandberg@arm.com for (int i = 0; i < 32*4; i += 4) { 23612239Sandreas.sandberg@arm.com context->setFloatRegBits(i + 2, r.v[i + 0]); 23712239Sandreas.sandberg@arm.com context->setFloatRegBits(i + 3, r.v[i + 1]); 23812239Sandreas.sandberg@arm.com context->setFloatRegBits(i + 0, r.v[i + 2]); 23912239Sandreas.sandberg@arm.com context->setFloatRegBits(i + 1, r.v[i + 3]); 24012239Sandreas.sandberg@arm.com } 24112239Sandreas.sandberg@arm.com 24212239Sandreas.sandberg@arm.com for (int i = 0; i < 32; i ++) { 24312239Sandreas.sandberg@arm.com context->setVecReg(RegId(VecRegClass, i), r.vec[i]); 24412239Sandreas.sandberg@arm.com } 24512239Sandreas.sandberg@arm.com} 24612239Sandreas.sandberg@arm.com 24712239Sandreas.sandberg@arm.comvoid 24812239Sandreas.sandberg@arm.comRemoteGDB::AArch32GdbRegCache::getRegs(ThreadContext *context) 24912239Sandreas.sandberg@arm.com{ 25012239Sandreas.sandberg@arm.com DPRINTF(GDBAcc, "getRegs in remotegdb \n"); 25112239Sandreas.sandberg@arm.com 25212239Sandreas.sandberg@arm.com r.gpr[0] = context->readIntReg(INTREG_R0); 25312239Sandreas.sandberg@arm.com r.gpr[1] = context->readIntReg(INTREG_R1); 25412239Sandreas.sandberg@arm.com r.gpr[2] = context->readIntReg(INTREG_R2); 25512239Sandreas.sandberg@arm.com r.gpr[3] = context->readIntReg(INTREG_R3); 25612239Sandreas.sandberg@arm.com r.gpr[4] = context->readIntReg(INTREG_R4); 25712239Sandreas.sandberg@arm.com r.gpr[5] = context->readIntReg(INTREG_R5); 25812239Sandreas.sandberg@arm.com r.gpr[6] = context->readIntReg(INTREG_R6); 25912239Sandreas.sandberg@arm.com r.gpr[7] = context->readIntReg(INTREG_R7); 26012239Sandreas.sandberg@arm.com r.gpr[8] = context->readIntReg(INTREG_R8); 26112239Sandreas.sandberg@arm.com r.gpr[9] = context->readIntReg(INTREG_R9); 26212239Sandreas.sandberg@arm.com r.gpr[10] = context->readIntReg(INTREG_R10); 26312239Sandreas.sandberg@arm.com r.gpr[11] = context->readIntReg(INTREG_R11); 26412239Sandreas.sandberg@arm.com r.gpr[12] = context->readIntReg(INTREG_R12); 26512239Sandreas.sandberg@arm.com r.gpr[13] = context->readIntReg(INTREG_SP); 26612239Sandreas.sandberg@arm.com r.gpr[14] = context->readIntReg(INTREG_LR); 26712239Sandreas.sandberg@arm.com r.gpr[15] = context->pcState().pc(); 26812239Sandreas.sandberg@arm.com 26912239Sandreas.sandberg@arm.com // One day somebody will implement transfer of FPRs correctly. 27012239Sandreas.sandberg@arm.com for (int i=0; i<8*3; i++) r.fpr[i] = 0; 27112239Sandreas.sandberg@arm.com 27212239Sandreas.sandberg@arm.com r.fpscr = context->readMiscRegNoEffect(MISCREG_FPSCR); 27312239Sandreas.sandberg@arm.com r.cpsr = context->readMiscRegNoEffect(MISCREG_CPSR); 27412239Sandreas.sandberg@arm.com} 27512239Sandreas.sandberg@arm.com 27612239Sandreas.sandberg@arm.comvoid 27712239Sandreas.sandberg@arm.comRemoteGDB::AArch32GdbRegCache::setRegs(ThreadContext *context) const 27812239Sandreas.sandberg@arm.com{ 27912239Sandreas.sandberg@arm.com DPRINTF(GDBAcc, "setRegs in remotegdb \n"); 28012239Sandreas.sandberg@arm.com 28112239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R0, r.gpr[0]); 28212239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R1, r.gpr[1]); 28312239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R2, r.gpr[2]); 28412239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R3, r.gpr[3]); 28512239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R4, r.gpr[4]); 28612239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R5, r.gpr[5]); 28712239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R6, r.gpr[6]); 28812239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R7, r.gpr[7]); 28912239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R8, r.gpr[8]); 29012239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R9, r.gpr[9]); 29112239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R10, r.gpr[10]); 29212239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R11, r.gpr[11]); 29312239Sandreas.sandberg@arm.com context->setIntReg(INTREG_R12, r.gpr[12]); 29412239Sandreas.sandberg@arm.com context->setIntReg(INTREG_SP, r.gpr[13]); 29512239Sandreas.sandberg@arm.com context->setIntReg(INTREG_LR, r.gpr[14]); 29612239Sandreas.sandberg@arm.com context->pcState(r.gpr[15]); 29712239Sandreas.sandberg@arm.com 29812239Sandreas.sandberg@arm.com // One day somebody will implement transfer of FPRs correctly. 29912239Sandreas.sandberg@arm.com 30012239Sandreas.sandberg@arm.com context->setMiscReg(MISCREG_FPSCR, r.fpscr); 30112239Sandreas.sandberg@arm.com context->setMiscRegNoEffect(MISCREG_CPSR, r.cpsr); 30212239Sandreas.sandberg@arm.com} 30312239Sandreas.sandberg@arm.com 30412239Sandreas.sandberg@arm.comBaseGdbRegCache* 30512239Sandreas.sandberg@arm.comRemoteGDB::gdbRegs() 30612239Sandreas.sandberg@arm.com{ 30712239Sandreas.sandberg@arm.com if (inAArch64(context())) 30812239Sandreas.sandberg@arm.com return ®Cache64; 30912239Sandreas.sandberg@arm.com else 31012239Sandreas.sandberg@arm.com return ®Cache32; 31112239Sandreas.sandberg@arm.com} 31212239Sandreas.sandberg@arm.com