timing.hh (10030:b531e328342d) timing.hh (10379:c00f6d7e2681)
1/*
2 * Copyright (c) 2012-2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

118 void
119 markDelayed()
120 {
121 assert(cpu->_status == BaseSimpleCPU::Running);
122 cpu->_status = ITBWaitResponse;
123 }
124
125 void
1/*
2 * Copyright (c) 2012-2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

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

118 void
119 markDelayed()
120 {
121 assert(cpu->_status == BaseSimpleCPU::Running);
122 cpu->_status = ITBWaitResponse;
123 }
124
125 void
126 finish(Fault fault, RequestPtr req, ThreadContext *tc,
126 finish(const Fault &fault, RequestPtr req, ThreadContext *tc,
127 BaseTLB::Mode mode)
128 {
129 cpu->sendFetch(fault, req, tc);
130 }
131 };
132 FetchTranslation fetchTranslation;
133
134 void sendData(RequestPtr req, uint8_t *data, uint64_t *res, bool read);
135 void sendSplitData(RequestPtr req1, RequestPtr req2, RequestPtr req,
136 uint8_t *data, bool read);
137
127 BaseTLB::Mode mode)
128 {
129 cpu->sendFetch(fault, req, tc);
130 }
131 };
132 FetchTranslation fetchTranslation;
133
134 void sendData(RequestPtr req, uint8_t *data, uint64_t *res, bool read);
135 void sendSplitData(RequestPtr req1, RequestPtr req2, RequestPtr req,
136 uint8_t *data, bool read);
137
138 void translationFault(Fault fault);
138 void translationFault(const Fault &fault);
139
140 void buildPacket(PacketPtr &pkt, RequestPtr req, bool read);
141 void buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2,
142 RequestPtr req1, RequestPtr req2, RequestPtr req,
143 uint8_t *data, bool read);
144
145 bool handleReadPacket(PacketPtr pkt);
146 // This function always implicitly uses dcache_pkt.

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

275 virtual void suspendContext(ThreadID thread_num);
276
277 Fault readMem(Addr addr, uint8_t *data, unsigned size, unsigned flags);
278
279 Fault writeMem(uint8_t *data, unsigned size,
280 Addr addr, unsigned flags, uint64_t *res);
281
282 void fetch();
139
140 void buildPacket(PacketPtr &pkt, RequestPtr req, bool read);
141 void buildSplitPacket(PacketPtr &pkt1, PacketPtr &pkt2,
142 RequestPtr req1, RequestPtr req2, RequestPtr req,
143 uint8_t *data, bool read);
144
145 bool handleReadPacket(PacketPtr pkt);
146 // This function always implicitly uses dcache_pkt.

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

275 virtual void suspendContext(ThreadID thread_num);
276
277 Fault readMem(Addr addr, uint8_t *data, unsigned size, unsigned flags);
278
279 Fault writeMem(uint8_t *data, unsigned size,
280 Addr addr, unsigned flags, uint64_t *res);
281
282 void fetch();
283 void sendFetch(Fault fault, RequestPtr req, ThreadContext *tc);
283 void sendFetch(const Fault &fault, RequestPtr req, ThreadContext *tc);
284 void completeIfetch(PacketPtr );
285 void completeDataAccess(PacketPtr pkt);
284 void completeIfetch(PacketPtr );
285 void completeDataAccess(PacketPtr pkt);
286 void advanceInst(Fault fault);
286 void advanceInst(const Fault &fault);
287
288 /** This function is used by the page table walker to determine if it could
289 * translate the a pending request or if the underlying request has been
290 * squashed. This always returns false for the simple timing CPU as it never
291 * executes any instructions speculatively.
292 * @ return Is the current instruction squashed?
293 */
294 bool isSquashed() const { return false; }

--- 62 unchanged lines hidden ---
287
288 /** This function is used by the page table walker to determine if it could
289 * translate the a pending request or if the underlying request has been
290 * squashed. This always returns false for the simple timing CPU as it never
291 * executes any instructions speculatively.
292 * @ return Is the current instruction squashed?
293 */
294 bool isSquashed() const { return false; }

--- 62 unchanged lines hidden ---