gem5  v19.0.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
isa.hh
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2009 The Regents of The University of Michigan
3  * Copyright (c) 2009 The University of Edinburgh
4  * Copyright (c) 2014 Sven Karlsson
5  * Copyright (c) 2016 RISC-V Foundation
6  * Copyright (c) 2016 The University of Virginia
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions are
11  * met: redistributions of source code must retain the above copyright
12  * notice, this list of conditions and the following disclaimer;
13  * redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in the
15  * documentation and/or other materials provided with the distribution;
16  * neither the name of the copyright holders nor the names of its
17  * contributors may be used to endorse or promote products derived from
18  * this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
24  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
27  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
28  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
30  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * Authors: Gabe Black
33  * Timothy M. Jones
34  * Sven Karlsson
35  * Alec Roelke
36  */
37 
38 #ifndef __ARCH_RISCV_ISA_HH__
39 #define __ARCH_RISCV_ISA_HH__
40 
41 #include <map>
42 #include <string>
43 
44 #include "arch/generic/isa.hh"
45 #include "arch/riscv/registers.hh"
46 #include "arch/riscv/types.hh"
47 #include "base/bitfield.hh"
48 #include "base/logging.hh"
49 #include "cpu/reg_class.hh"
50 #include "sim/sim_object.hh"
51 
52 struct RiscvISAParams;
53 class ThreadContext;
54 class Checkpoint;
55 class EventManager;
56 
57 namespace RiscvISA
58 {
59 
61  PRV_U = 0,
62  PRV_S = 1,
63  PRV_M = 3
64 };
65 
66 class ISA : public BaseISA
67 {
68  protected:
70 
71  bool hpmCounterEnabled(int counter) const;
72 
73  public:
74  typedef RiscvISAParams Params;
75 
76  void clear();
77 
78  RegVal readMiscRegNoEffect(int misc_reg) const;
79  RegVal readMiscReg(int misc_reg, ThreadContext *tc);
80  void setMiscRegNoEffect(int misc_reg, RegVal val);
81  void setMiscReg(int misc_reg, RegVal val, ThreadContext *tc);
82 
83  RegId flattenRegId(const RegId &regId) const { return regId; }
84  int flattenIntIndex(int reg) const { return reg; }
85  int flattenFloatIndex(int reg) const { return reg; }
86  int flattenVecIndex(int reg) const { return reg; }
87  int flattenVecElemIndex(int reg) const { return reg; }
88  int flattenVecPredIndex(int reg) const { return reg; }
89  int flattenCCIndex(int reg) const { return reg; }
90  int flattenMiscIndex(int reg) const { return reg; }
91 
92  void startup(ThreadContext *tc) {}
93 
95  using BaseISA::startup;
96 
97  const Params *params() const;
98 
99  ISA(Params *p);
100 };
101 
102 } // namespace RiscvISA
103 
104 #endif // __ARCH_RISCV_ISA_HH__
int flattenFloatIndex(int reg) const
Definition: isa.hh:85
Bitfield< 5, 3 > reg
Definition: types.hh:89
bool hpmCounterEnabled(int counter) const
Definition: isa.cc:77
int flattenCCIndex(int reg) const
Definition: isa.hh:89
RegVal readMiscReg(int misc_reg, ThreadContext *tc)
Definition: isa.cc:113
ISA(Params *p)
Definition: isa.cc:49
void setMiscReg(int misc_reg, RegVal val, ThreadContext *tc)
Definition: isa.cc:187
uint64_t RegVal
Definition: types.hh:168
ThreadContext is the external interface to all thread state for anything outside of the CPU...
const Params * params() const
Definition: isa.cc:56
Bitfield< 0 > p
int flattenMiscIndex(int reg) const
Definition: isa.hh:90
Bitfield< 63 > val
Definition: misc.hh:771
int flattenVecPredIndex(int reg) const
Definition: isa.hh:88
PrivilegeMode
Definition: isa.hh:60
int flattenIntIndex(int reg) const
Definition: isa.hh:84
RegVal readMiscRegNoEffect(int misc_reg) const
Definition: isa.cc:100
void startup(ThreadContext *tc)
Definition: isa.hh:92
int flattenVecElemIndex(int reg) const
Definition: isa.hh:87
int flattenVecIndex(int reg) const
Definition: isa.hh:86
RiscvISAParams Params
Definition: isa.hh:74
Register ID: describe an architectural register with its class and index.
Definition: reg_class.hh:79
Definition: isa.hh:35
void clear()
Definition: isa.cc:61
std::vector< RegVal > miscRegFile
Definition: isa.hh:69
void setMiscRegNoEffect(int misc_reg, RegVal val)
Definition: isa.cc:176
RegId flattenRegId(const RegId &regId) const
Definition: isa.hh:83
virtual void startup()
startup() is the final initialization call before simulation.
Definition: sim_object.cc:99

Generated on Fri Feb 28 2020 16:26:56 for gem5 by doxygen 1.8.13