fetch.hh (8462:80492ae5148e) | fetch.hh (8503:479b186a4652) |
---|---|
1/* 2 * Copyright (c) 2010 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 --- 318 unchanged lines hidden (view full) --- 327 */ 328 bool 329 checkInterrupt(Addr pc) 330 { 331 return (interruptPending && (THE_ISA != ALPHA_ISA || !(pc & 0x3))); 332 } 333 334 /** Squashes a specific thread and resets the PC. */ | 1/* 2 * Copyright (c) 2010 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 --- 318 unchanged lines hidden (view full) --- 327 */ 328 bool 329 checkInterrupt(Addr pc) 330 { 331 return (interruptPending && (THE_ISA != ALPHA_ISA || !(pc & 0x3))); 332 } 333 334 /** Squashes a specific thread and resets the PC. */ |
335 inline void doSquash(const TheISA::PCState &newPC, ThreadID tid); | 335 inline void doSquash(const TheISA::PCState &newPC, 336 const DynInstPtr squashInst, ThreadID tid); |
336 337 /** Squashes a specific thread and resets the PC. Also tells the CPU to 338 * remove any instructions between fetch and decode that should be sqaushed. 339 */ 340 void squashFromDecode(const TheISA::PCState &newPC, | 337 338 /** Squashes a specific thread and resets the PC. Also tells the CPU to 339 * remove any instructions between fetch and decode that should be sqaushed. 340 */ 341 void squashFromDecode(const TheISA::PCState &newPC, |
341 const InstSeqNum &seq_num, ThreadID tid); | 342 const DynInstPtr squashInst, 343 const InstSeqNum seq_num, ThreadID tid); |
342 343 /** Checks if a thread is stalled. */ 344 bool checkStall(ThreadID tid) const; 345 346 /** Updates overall fetch stage status; to be called at the end of each 347 * cycle. */ 348 FetchStatus updateFetchStatus(); 349 350 public: 351 /** Squashes a specific thread and resets the PC. Also tells the CPU to 352 * remove any instructions that are not in the ROB. The source of this 353 * squash should be the commit stage. 354 */ | 344 345 /** Checks if a thread is stalled. */ 346 bool checkStall(ThreadID tid) const; 347 348 /** Updates overall fetch stage status; to be called at the end of each 349 * cycle. */ 350 FetchStatus updateFetchStatus(); 351 352 public: 353 /** Squashes a specific thread and resets the PC. Also tells the CPU to 354 * remove any instructions that are not in the ROB. The source of this 355 * squash should be the commit stage. 356 */ |
355 void squash(const TheISA::PCState &newPC, const InstSeqNum &seq_num, 356 DynInstPtr &squashInst, ThreadID tid); | 357 void squash(const TheISA::PCState &newPC, const InstSeqNum seq_num, 358 DynInstPtr squashInst, ThreadID tid); |
357 358 /** Ticks the fetch stage, processing all inputs signals and fetching 359 * as many instructions as possible. 360 */ 361 void tick(); 362 363 /** Checks all input signals and updates the status as necessary. 364 * @return: Returns if the status has changed due to input signals. --- 240 unchanged lines hidden --- | 359 360 /** Ticks the fetch stage, processing all inputs signals and fetching 361 * as many instructions as possible. 362 */ 363 void tick(); 364 365 /** Checks all input signals and updates the status as necessary. 366 * @return: Returns if the status has changed due to input signals. --- 240 unchanged lines hidden --- |