ETISS 0.11.2
ExtendableTranslatingInstructionSetSimulator(version0.11.2)
Loading...
Searching...
No Matches
SwitchSystem.cpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-3-Clause
2//
3// This file is part of ETISS. It is licensed under the BSD 3-Clause License; you may not use this file except in
4// compliance with the License. You should have received a copy of the license along with this project. If not, see the
5// LICENSE file.
6
8
9using namespace etiss::plugin::fault;
10
11int32_t SwitchSystem::iread(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
12{
13 if (false)
14 {
15 }
16 else
17 {
19 int32_t exep = plugin_system_->iread(plugin_system_, plugin_cpu_, addr, len); // get iread time
20 time_ps += plugin_cpu_->cpuTime_ps - time;
21 if (exep != etiss::RETURNCODE::NOERROR)
22 return exep;
23 time = plugin_cpu_->cpuTime_ps;
24 exep = plugin_system_->dbg_read(plugin_system_, addr, buf, len); // read data
25 time_ps += plugin_cpu_->cpuTime_ps - time;
26 return exep;
27 }
28}
29int32_t SwitchSystem::iwrite(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
30{
31 if (false)
32 {
33 }
34 else
35 {
37 int32_t exep = plugin_system_->iwrite(plugin_system_, plugin_cpu_, addr, buf, len); // write data
38 time_ps += plugin_cpu_->cpuTime_ps - time;
39 return exep;
40 }
41}
42int32_t SwitchSystem::dread(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
43{
44 if (false)
45 {
46 }
47 else
48 {
50 int32_t exep = plugin_system_->dread(plugin_system_, plugin_cpu_, addr, buf, len); // write data
51 time_ps += plugin_cpu_->cpuTime_ps - time;
52 return exep;
53 }
54}
55int32_t SwitchSystem::dwrite(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
56{
57 if (false)
58 {
59 }
60 else
61 {
63 int32_t exep = plugin_system_->dwrite(plugin_system_, plugin_cpu_, addr, buf, len); // write data
64 time_ps += plugin_cpu_->cpuTime_ps - time;
65 return exep;
66 }
67}
static __inline__ uint64_t
Definition arm_cde.h:31
static __inline__ int32_t
Definition arm_mve.h:51
ETISS_CPU * plugin_cpu_
holds a pointer to the cpu structure. will be set before init call and after cleanup call
Definition Plugin.h:155
ETISS_System * plugin_system_
holds a pointer to the system structure.
Definition Plugin.h:156
int32_t dwrite(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
int32_t iwrite(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
int32_t dread(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
int32_t iread(uint64_t &time_ps, uint64_t addr, uint8_t *buf, uint32_t len)
etiss_uint64 cpuTime_ps
simulation time of cpu
Definition CPU.h:59
etiss_int32(* dwrite)(void *handle, ETISS_CPU *cpu, etiss_uint64 addr, etiss_uint8 *buffer, etiss_uint32 length)
write data
Definition System.h:59
etiss_int32(* iread)(void *handle, ETISS_CPU *cpu, etiss_uint64 addr, etiss_uint32 length)
used to simulate an instruction fetch.
Definition System.h:46
etiss_int32(* dbg_read)(void *handle, etiss_uint64 addr, etiss_uint8 *buffer, etiss_uint32 length)
direct debug read
Definition System.h:66
etiss_int32(* dread)(void *handle, ETISS_CPU *cpu, etiss_uint64 addr, etiss_uint8 *buffer, etiss_uint32 length)
read data
Definition System.h:55
etiss_int32(* iwrite)(void *handle, ETISS_CPU *cpu, etiss_uint64 addr, etiss_uint8 *buffer, etiss_uint32 length)
write instruction data over instruction bus
Definition System.h:50