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