1a2,16
> * Copyright 2015 LabWare
> * Copyright 2014 Google, Inc.
> * Copyright (c) 2010 ARM Limited
> * All rights reserved
> *
> * The license below extends only to copyright in the software and shall
> * not be construed as granting a license to any other intellectual
> * property including but not limited to intellectual property relating
> * to a hardware implementation of the functionality of the software
> * licensed hereunder. You may use the software subject to the license
> * terms below provided that you ensure that this notice is replicated
> * unmodified and in its entirety in all distributions of the software,
> * modified or unmodified, in source code or in binary form.
> *
> * Copyright (c) 2017 The University of Virginia
3,5d17
< * Copyright (c) 2007-2008 The Florida State University
< * Copyright (c) 2009 The University of Edinburgh
< * Copyright (c) 2015 Sven Karlsson
32,34c44,47
< * Stephen Hines
< * Timothy M. Jones
< * Sven Karlsson
---
> * William Wang
> * Deyuan Guo
> * Boris Shingarov
> * Alec Roelke
37,39c50,92
< #include "base/remote_gdb.hh"
< #include "arch/riscv/remote_gdb.hh"
< #include "sim/system.hh"
---
> /*
> * Copyright (c) 1990, 1993 The Regents of the University of California
> * All rights reserved
> *
> * This software was developed by the Computer Systems Engineering group
> * at Lawrence Berkeley Laboratory under DARPA contract BG 91-66 and
> * contributed to Berkeley.
> *
> * All advertising materials mentioning features or use of this software
> * must display the following acknowledgement:
> * This product includes software developed by the University of
> * California, Lawrence Berkeley Laboratories.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> * 1. Redistributions of source code must retain the above copyright
> * notice, this list of conditions and the following disclaimer.
> * 2. Redistributions in binary form must reproduce the above copyright
> * notice, this list of conditions and the following disclaimer in the
> * documentation and/or other materials provided with the distribution.
> * 3. All advertising materials mentioning features or use of this software
> * must display the following acknowledgement:
> * This product includes software developed by the University of
> * California, Berkeley and its contributors.
> * 4. Neither the name of the University nor the names of its contributors
> * may be used to endorse or promote products derived from this software
> * without specific prior written permission.
> *
> * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
> * SUCH DAMAGE.
> *
> * @(#)kgdb_stub.c 8.4 (Berkeley) 1/12/94
> */
40a94,147
> /*-
> * Copyright (c) 2001 The NetBSD Foundation, Inc.
> * All rights reserved.
> *
> * This code is derived from software contributed to The NetBSD Foundation
> * by Jason R. Thorpe.
> *
> * Redistribution and use in source and binary forms, with or without
> * modification, are permitted provided that the following conditions
> * are met:
> * 1. Redistributions of source code must retain the above copyright
> * notice, this list of conditions and the following disclaimer.
> * 2. Redistributions in binary form must reproduce the above copyright
> * notice, this list of conditions and the following disclaimer in the
> * documentation and/or other materials provided with the distribution.
> * 3. All advertising materials mentioning features or use of this software
> * must display the following acknowledgement:
> * This product includes software developed by the NetBSD
> * Foundation, Inc. and its contributors.
> * 4. Neither the name of The NetBSD Foundation nor the names of its
> * contributors may be used to endorse or promote products derived
> * from this software without specific prior written permission.
> *
> * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
> * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
> * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
> * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
> * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> * POSSIBILITY OF SUCH DAMAGE.
> */
>
> /*
> * $NetBSD: kgdb_stub.c,v 1.8 2001/07/07 22:58:00 wdk Exp $
> *
> * Taken from NetBSD
> *
> * "Stub" to allow remote cpu to debug over a serial line using gdb.
> */
>
> #include "arch/riscv/remote_gdb.hh"
>
> #include <string>
>
> #include "arch/riscv/registers.hh"
> #include "cpu/thread_state.hh"
> #include "debug/GDBAcc.hh"
> #include "mem/page_table.hh"
> #include "sim/full_system.hh"
>
44,45c151,152
< RemoteGDB::RemoteGDB(System *system, ThreadContext *context)
< : BaseRemoteGDB(system, context)
---
> RemoteGDB::RemoteGDB(System *_system, ThreadContext *tc)
> : BaseRemoteGDB(_system, tc)
49,54d155
< RemoteGDB::BaseGdbRegCache*
< RemoteGDB::gdbRegs()
< {
< panic("gdbRegs not implemented for Riscv!");
< }
<
56c157
< RemoteGDB::acc(Addr, size_t)
---
> RemoteGDB::acc(Addr va, size_t len)
58c159,163
< panic("acc not implemented for Riscv!");
---
> TlbEntry entry;
> if (FullSystem)
> panic("acc not implemented for RISCV FS!");
> else
> return context->getProcessPtr()->pTable->lookup(va, entry);
62c167
< RemoteGDB::getregs()
---
> RemoteGDB::RiscvGdbRegCache::getRegs(ThreadContext *context)
64c169,181
< panic("getregs not implemented for Riscv!");
---
> DPRINTF(GDBAcc, "getregs in remotegdb, size %lu\n", size());
> for (int i = 0; i < NumIntArchRegs; i++)
> r.gpr[i] = context->readIntReg(i);
> r.pc = context->pcState().pc();
> for (int i = 0; i < NumFloatRegs; i++)
> r.fpr[i] = context->readFloatRegBits(i);
>
> r.csr_base = context->readMiscReg(0);
> r.fflags = context->readMiscReg(MISCREG_FFLAGS);
> r.frm = context->readMiscReg(MISCREG_FRM);
> r.fcsr = context->readMiscReg(MISCREG_FCSR);
> for (int i = ExplicitCSRs; i < NumMiscRegs; i++)
> r.csr[i - ExplicitCSRs] = context->readMiscReg(i);
68c185
< RemoteGDB::setregs()
---
> RemoteGDB::RiscvGdbRegCache::setRegs(ThreadContext *context) const
70c187,199
< panic("setregs not implemented for Riscv!");
---
> DPRINTF(GDBAcc, "setregs in remotegdb \n");
> for (int i = 0; i < NumIntArchRegs; i++)
> context->setIntReg(i, r.gpr[i]);
> context->pcState(r.pc);
> for (int i = 0; i < NumFloatRegs; i++)
> context->setFloatRegBits(i, r.fpr[i]);
>
> context->setMiscReg(0, r.csr_base);
> context->setMiscReg(MISCREG_FFLAGS, r.fflags);
> context->setMiscReg(MISCREG_FRM, r.frm);
> context->setMiscReg(MISCREG_FCSR, r.fcsr);
> for (int i = ExplicitCSRs; i < NumMiscRegs; i++)
> context->setMiscReg(i, r.csr[i - ExplicitCSRs]);
71a201,205
>
> RemoteGDB::BaseGdbRegCache*
> RemoteGDB::gdbRegs() {
> return new RiscvGdbRegCache(this);
> }