fetch.hh (3846:a0fe3210ce53) fetch.hh (3949:b6664282d899)
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

234 * @param ret_fault The fault reference that will be set to the result of
235 * the icache access.
236 * @param tid Thread id.
237 * @return Any fault that occured.
238 */
239 bool fetchCacheLine(Addr fetch_PC, Fault &ret_fault, unsigned tid);
240
241 /** Squashes a specific thread and resets the PC. */
1/*
2 * Copyright (c) 2004-2006 The Regents of The University of Michigan
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met: redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer;

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

234 * @param ret_fault The fault reference that will be set to the result of
235 * the icache access.
236 * @param tid Thread id.
237 * @return Any fault that occured.
238 */
239 bool fetchCacheLine(Addr fetch_PC, Fault &ret_fault, unsigned tid);
240
241 /** Squashes a specific thread and resets the PC. */
242 inline void doSquash(const Addr &new_PC, unsigned tid);
242 inline void doSquash(const Addr &new_PC, const Addr &new_NPC, unsigned tid);
243
244 /** Squashes a specific thread and resets the PC. Also tells the CPU to
245 * remove any instructions between fetch and decode that should be sqaushed.
246 */
243
244 /** Squashes a specific thread and resets the PC. Also tells the CPU to
245 * remove any instructions between fetch and decode that should be sqaushed.
246 */
247 void squashFromDecode(const Addr &new_PC, const InstSeqNum &seq_num,
248 unsigned tid);
247 void squashFromDecode(const Addr &new_PC, const Addr &new_NPC,
248 const InstSeqNum &seq_num, unsigned tid);
249
250 /** Checks if a thread is stalled. */
251 bool checkStall(unsigned tid) const;
252
253 /** Updates overall fetch stage status; to be called at the end of each
254 * cycle. */
255 FetchStatus updateFetchStatus();
256
257 public:
258 /** Squashes a specific thread and resets the PC. Also tells the CPU to
259 * remove any instructions that are not in the ROB. The source of this
260 * squash should be the commit stage.
261 */
249
250 /** Checks if a thread is stalled. */
251 bool checkStall(unsigned tid) const;
252
253 /** Updates overall fetch stage status; to be called at the end of each
254 * cycle. */
255 FetchStatus updateFetchStatus();
256
257 public:
258 /** Squashes a specific thread and resets the PC. Also tells the CPU to
259 * remove any instructions that are not in the ROB. The source of this
260 * squash should be the commit stage.
261 */
262 void squash(const Addr &new_PC, const InstSeqNum &seq_num,
262 void squash(const Addr &new_PC, const Addr &new_NPC,
263 const InstSeqNum &seq_num,
263 bool squash_delay_slot, unsigned tid);
264
265 /** Ticks the fetch stage, processing all inputs signals and fetching
266 * as many instructions as possible.
267 */
268 void tick();
269
270 /** Checks all input signals and updates the status as necessary.

--- 223 unchanged lines hidden ---
264 bool squash_delay_slot, unsigned tid);
265
266 /** Ticks the fetch stage, processing all inputs signals and fetching
267 * as many instructions as possible.
268 */
269 void tick();
270
271 /** Checks all input signals and updates the status as necessary.

--- 223 unchanged lines hidden ---