remote_gdb.hh revision 12449:2260f4a68210
18981Sandreas.hansson@arm.com/* 29785Sandreas.hansson@arm.com * Copyright (c) 2015 LabWare 38981Sandreas.hansson@arm.com * Copyright (c) 2002-2005 The Regents of The University of Michigan 48981Sandreas.hansson@arm.com * Copyright (c) 2007-2008 The Florida State University 58981Sandreas.hansson@arm.com * Copyright (c) 2009 The University of Edinburgh 68981Sandreas.hansson@arm.com * All rights reserved. 78981Sandreas.hansson@arm.com * 88981Sandreas.hansson@arm.com * Redistribution and use in source and binary forms, with or without 98981Sandreas.hansson@arm.com * modification, are permitted provided that the following conditions are 108981Sandreas.hansson@arm.com * met: redistributions of source code must retain the above copyright 118981Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer; 128981Sandreas.hansson@arm.com * redistributions in binary form must reproduce the above copyright 138981Sandreas.hansson@arm.com * notice, this list of conditions and the following disclaimer in the 148981Sandreas.hansson@arm.com * documentation and/or other materials provided with the distribution; 158981Sandreas.hansson@arm.com * neither the name of the copyright holders nor the names of its 168981Sandreas.hansson@arm.com * contributors may be used to endorse or promote products derived from 178981Sandreas.hansson@arm.com * this software without specific prior written permission. 188981Sandreas.hansson@arm.com * 198981Sandreas.hansson@arm.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 208981Sandreas.hansson@arm.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 218981Sandreas.hansson@arm.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 228981Sandreas.hansson@arm.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 238981Sandreas.hansson@arm.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 248981Sandreas.hansson@arm.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 258981Sandreas.hansson@arm.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 268981Sandreas.hansson@arm.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 278981Sandreas.hansson@arm.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 288981Sandreas.hansson@arm.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 298981Sandreas.hansson@arm.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 308981Sandreas.hansson@arm.com * 318981Sandreas.hansson@arm.com * Authors: Nathan Binkert 328981Sandreas.hansson@arm.com * Stephen Hines 338981Sandreas.hansson@arm.com * Timothy M. Jones 348981Sandreas.hansson@arm.com * Boris Shingarov 358981Sandreas.hansson@arm.com */ 368981Sandreas.hansson@arm.com 378981Sandreas.hansson@arm.com#ifndef __ARCH_POWER_REMOTE_GDB_HH__ 388981Sandreas.hansson@arm.com#define __ARCH_POWER_REMOTE_GDB_HH__ 398981Sandreas.hansson@arm.com 408981Sandreas.hansson@arm.com#include "arch/power/registers.hh" 418981Sandreas.hansson@arm.com#include "arch/power/remote_gdb.hh" 428981Sandreas.hansson@arm.com#include "base/remote_gdb.hh" 438981Sandreas.hansson@arm.com 448981Sandreas.hansson@arm.comnamespace PowerISA 458981Sandreas.hansson@arm.com{ 468981Sandreas.hansson@arm.com 4710615Skanishk.sugand@arm.com 488981Sandreas.hansson@arm.comclass RemoteGDB : public BaseRemoteGDB 499398Sandreas.hansson@arm.com{ 5010129SSascha.Bischoff@ARM.com protected: 518981Sandreas.hansson@arm.com bool acc(Addr addr, size_t len); 528981Sandreas.hansson@arm.com 538981Sandreas.hansson@arm.com class PowerGdbRegCache : public BaseGdbRegCache 548981Sandreas.hansson@arm.com { 558981Sandreas.hansson@arm.com using BaseGdbRegCache::BaseGdbRegCache; 568981Sandreas.hansson@arm.com private: 578981Sandreas.hansson@arm.com struct { 588981Sandreas.hansson@arm.com uint32_t gpr[NumIntArchRegs]; 598981Sandreas.hansson@arm.com uint64_t fpr[NumFloatArchRegs]; 608981Sandreas.hansson@arm.com uint32_t pc; 618981Sandreas.hansson@arm.com uint32_t msr; 628981Sandreas.hansson@arm.com uint32_t cr; 638981Sandreas.hansson@arm.com uint32_t lr; 648981Sandreas.hansson@arm.com uint32_t ctr; 658981Sandreas.hansson@arm.com uint32_t xer; 668981Sandreas.hansson@arm.com } r; 678981Sandreas.hansson@arm.com public: 688981Sandreas.hansson@arm.com char *data() const { return (char *)&r; } 698981Sandreas.hansson@arm.com size_t size() const { return sizeof(r); } 708981Sandreas.hansson@arm.com void getRegs(ThreadContext*); 718981Sandreas.hansson@arm.com void setRegs(ThreadContext*) const; 728981Sandreas.hansson@arm.com const std::string 738981Sandreas.hansson@arm.com name() const 748981Sandreas.hansson@arm.com { 758981Sandreas.hansson@arm.com return gdb->name() + ".PowerGdbRegCache"; 768981Sandreas.hansson@arm.com } 778981Sandreas.hansson@arm.com }; 788981Sandreas.hansson@arm.com 798981Sandreas.hansson@arm.com PowerGdbRegCache regCache; 808981Sandreas.hansson@arm.com 8110412Sandreas.hansson@arm.com public: 829398Sandreas.hansson@arm.com RemoteGDB(System *_system, ThreadContext *tc, int _port); 839398Sandreas.hansson@arm.com BaseGdbRegCache *gdbRegs(); 849398Sandreas.hansson@arm.com}; 859398Sandreas.hansson@arm.com 869398Sandreas.hansson@arm.com} // namespace PowerISA 879398Sandreas.hansson@arm.com 888981Sandreas.hansson@arm.com#endif /* __ARCH_POWER_REMOTE_GDB_H__ */ 899294Sandreas.hansson@arm.com