Deleted Added
sdiff udiff text old ( 2985:c010893f23ae ) new ( 3271:4a871cbe6d84 )
full compact
1/*
2 * Copyright (c) 2003-2005 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;

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

62class TimingSimpleCPU;
63class InorderCPU;
64class SymbolTable;
65
66namespace Trace {
67 class InstRecord;
68}
69
70typedef uint32_t MicroPC;
71
72/**
73 * Base, ISA-independent static instruction class.
74 *
75 * The main component of this class is the vector of flags and the
76 * associated methods for reading them. Any object that can rely
77 * solely on these flags can process instructions without being
78 * recompiled for multiple ISAs.
79 */

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

136 IsWriteBarrier, ///< Is a write barrier
137
138 IsNonSpeculative, ///< Should not be executed speculatively
139 IsQuiesce, ///< Is a quiesce instruction
140
141 IsIprAccess, ///< Accesses IPRs
142 IsUnverifiable, ///< Can't be verified by a checker
143
144 //Flags for microcode
145 IsMacroOp, ///< Is a macroop containing microops
146 IsMicroOp, ///< Is a microop
147 IsDelayedCommit, ///< This microop doesn't commit right away
148 IsLastMicroOp, ///< This microop ends a microop sequence
149 //This flag doesn't do anything yet
150 IsMicroBranch, ///< This microop branches within the microcode for a macroop
151
152 NumFlags
153 };
154
155 /// Flag values for this instruction.
156 std::bitset<NumFlags> flags;
157
158 /// See opClass().
159 OpClass _opClass;

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

235 bool isSerializeBefore() const { return flags[IsSerializeBefore]; }
236 bool isSerializeAfter() const { return flags[IsSerializeAfter]; }
237 bool isMemBarrier() const { return flags[IsMemBarrier]; }
238 bool isWriteBarrier() const { return flags[IsWriteBarrier]; }
239 bool isNonSpeculative() const { return flags[IsNonSpeculative]; }
240 bool isQuiesce() const { return flags[IsQuiesce]; }
241 bool isIprAccess() const { return flags[IsIprAccess]; }
242 bool isUnverifiable() const { return flags[IsUnverifiable]; }
243 bool isMacroOp() const { return flags[IsMacroOp]; }
244 bool isMicroOp() const { return flags[IsMicroOp]; }
245 bool isDelayedCommit() const { return flags[IsDelayedCommit]; }
246 bool isLastMicroOp() const { return flags[IsLastMicroOp]; }
247 //This flag doesn't do anything yet
248 bool isMicroBranch() const { return flags[IsMicroBranch]; }
249 //@}
250
251 /// Operation class. Used to select appropriate function unit in issue.
252 OpClass opClass() const { return _opClass; }
253};
254
255
256// forward declaration

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

358
359/**
360 * The execute() signatures are auto-generated by scons based on the
361 * set of CPU models we are compiling in today.
362 */
363#include "cpu/static_inst_exec_sigs.hh"
364
365 /**
366 * Return the microop that goes with a particular micropc. This should
367 * only be defined/used in macroops which will contain microops
368 */
369 virtual StaticInstPtr fetchMicroOp(MicroPC micropc);
370
371 /**
372 * Return the target address for a PC-relative branch.
373 * Invalid if not a PC-relative branch (i.e. isDirectCtrl()
374 * should be true).
375 */
376 virtual Addr branchTarget(Addr branchPC) const
377 {
378 panic("StaticInst::branchTarget() called on instruction "
379 "that is not a PC-relative branch.");

--- 131 unchanged lines hidden ---