exec_context.hh (13953:43ae8a30ec1f) exec_context.hh (13954:2f400a5f2627)
1/*
2 * Copyright (c) 2011-2014, 2016-2018 ARM Limited
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating

--- 82 unchanged lines hidden (view full) ---

91 MinorDynInstPtr inst_) :
92 cpu(cpu_),
93 thread(thread_),
94 execute(execute_),
95 inst(inst_)
96 {
97 DPRINTF(MinorExecute, "ExecContext setting PC: %s\n", inst->pc);
98 pcState(inst->pc);
1/*
2 * Copyright (c) 2011-2014, 2016-2018 ARM Limited
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating

--- 82 unchanged lines hidden (view full) ---

91 MinorDynInstPtr inst_) :
92 cpu(cpu_),
93 thread(thread_),
94 execute(execute_),
95 inst(inst_)
96 {
97 DPRINTF(MinorExecute, "ExecContext setting PC: %s\n", inst->pc);
98 pcState(inst->pc);
99 setPredicate(true);
99 setPredicate(inst->readPredicate());
100 setMemAccPredicate(inst->readMemAccPredicate());
100 thread.setIntReg(TheISA::ZeroReg, 0);
101#if THE_ISA == ALPHA_ISA
102 thread.setFloatReg(TheISA::ZeroReg, 0);
103#endif
104 }
105
101 thread.setIntReg(TheISA::ZeroReg, 0);
102#if THE_ISA == ALPHA_ISA
103 thread.setFloatReg(TheISA::ZeroReg, 0);
104#endif
105 }
106
107 ~ExecContext()
108 {
109 inst->setPredicate(readPredicate());
110 inst->setMemAccPredicate(readMemAccPredicate());
111 }
112
106 Fault
107 initiateMemRead(Addr addr, unsigned int size,
113 Fault
114 initiateMemRead(Addr addr, unsigned int size,
108 Request::Flags flags) override
115 Request::Flags flags,
116 const std::vector<bool>& byteEnable = std::vector<bool>())
117 override
109 {
110 execute.getLSQ().pushRequest(inst, true /* load */, nullptr,
118 {
119 execute.getLSQ().pushRequest(inst, true /* load */, nullptr,
111 size, addr, flags, NULL, nullptr);
120 size, addr, flags, nullptr, nullptr, byteEnable);
112 return NoFault;
113 }
114
115 Fault
116 writeMem(uint8_t *data, unsigned int size, Addr addr,
121 return NoFault;
122 }
123
124 Fault
125 writeMem(uint8_t *data, unsigned int size, Addr addr,
117 Request::Flags flags, uint64_t *res) override
126 Request::Flags flags, uint64_t *res,
127 const std::vector<bool>& byteEnable = std::vector<bool>())
128 override
118 {
129 {
130 assert(byteEnable.empty() || byteEnable.size() == size);
119 execute.getLSQ().pushRequest(inst, false /* store */, data,
131 execute.getLSQ().pushRequest(inst, false /* store */, data,
120 size, addr, flags, res, nullptr);
132 size, addr, flags, res, nullptr, byteEnable);
121 return NoFault;
122 }
123
124 Fault
125 initiateMemAMO(Addr addr, unsigned int size, Request::Flags flags,
126 AtomicOpFunctor *amo_op) override
127 {
128 // AMO requests are pushed through the store path

--- 325 unchanged lines hidden ---
133 return NoFault;
134 }
135
136 Fault
137 initiateMemAMO(Addr addr, unsigned int size, Request::Flags flags,
138 AtomicOpFunctor *amo_op) override
139 {
140 // AMO requests are pushed through the store path

--- 325 unchanged lines hidden ---