comm.hh (2670:9107b8bd08cd) comm.hh (2674:6d4afef73a20)
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;

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

38#include "cpu/inst_seq.hh"
39#include "sim/host.hh"
40
41// Typedef for physical register index type. Although the Impl would be the
42// most likely location for this, there are a few classes that need this
43// typedef yet are not templated on the Impl. For now it will be defined here.
44typedef short int PhysRegIndex;
45
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;

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

38#include "cpu/inst_seq.hh"
39#include "sim/host.hh"
40
41// Typedef for physical register index type. Although the Impl would be the
42// most likely location for this, there are a few classes that need this
43// typedef yet are not templated on the Impl. For now it will be defined here.
44typedef short int PhysRegIndex;
45
46/** Struct that defines the information passed from fetch to decode. */
46template<class Impl>
47struct DefaultFetchDefaultDecode {
48 typedef typename Impl::DynInstPtr DynInstPtr;
49
50 int size;
51
52 DynInstPtr insts[Impl::MaxWidth];
53 Fault fetchFault;
54 InstSeqNum fetchFaultSN;
55 bool clearFetchFault;
56};
57
47template<class Impl>
48struct DefaultFetchDefaultDecode {
49 typedef typename Impl::DynInstPtr DynInstPtr;
50
51 int size;
52
53 DynInstPtr insts[Impl::MaxWidth];
54 Fault fetchFault;
55 InstSeqNum fetchFaultSN;
56 bool clearFetchFault;
57};
58
59/** Struct that defines the information passed from decode to rename. */
58template<class Impl>
59struct DefaultDecodeDefaultRename {
60 typedef typename Impl::DynInstPtr DynInstPtr;
61
62 int size;
63
64 DynInstPtr insts[Impl::MaxWidth];
65};
66
60template<class Impl>
61struct DefaultDecodeDefaultRename {
62 typedef typename Impl::DynInstPtr DynInstPtr;
63
64 int size;
65
66 DynInstPtr insts[Impl::MaxWidth];
67};
68
69/** Struct that defines the information passed from rename to IEW. */
67template<class Impl>
68struct DefaultRenameDefaultIEW {
69 typedef typename Impl::DynInstPtr DynInstPtr;
70
71 int size;
72
73 DynInstPtr insts[Impl::MaxWidth];
74};
75
70template<class Impl>
71struct DefaultRenameDefaultIEW {
72 typedef typename Impl::DynInstPtr DynInstPtr;
73
74 int size;
75
76 DynInstPtr insts[Impl::MaxWidth];
77};
78
79/** Struct that defines the information passed from IEW to commit. */
76template<class Impl>
77struct DefaultIEWDefaultCommit {
78 typedef typename Impl::DynInstPtr DynInstPtr;
79
80 int size;
81
82 DynInstPtr insts[Impl::MaxWidth];
83

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

95struct IssueStruct {
96 typedef typename Impl::DynInstPtr DynInstPtr;
97
98 int size;
99
100 DynInstPtr insts[Impl::MaxWidth];
101};
102
80template<class Impl>
81struct DefaultIEWDefaultCommit {
82 typedef typename Impl::DynInstPtr DynInstPtr;
83
84 int size;
85
86 DynInstPtr insts[Impl::MaxWidth];
87

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

99struct IssueStruct {
100 typedef typename Impl::DynInstPtr DynInstPtr;
101
102 int size;
103
104 DynInstPtr insts[Impl::MaxWidth];
105};
106
107/** Struct that defines all backwards communication. */
103template<class Impl>
104struct TimeBufStruct {
105 struct decodeComm {
106 bool squash;
107 bool predIncorrect;
108 uint64_t branchAddr;
109
110 InstSeqNum doneSeqNum;

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

116 uint64_t mispredPC;
117 uint64_t nextPC;
118
119 unsigned branchCount;
120 };
121
122 decodeComm decodeInfo[Impl::MaxThreads];
123
108template<class Impl>
109struct TimeBufStruct {
110 struct decodeComm {
111 bool squash;
112 bool predIncorrect;
113 uint64_t branchAddr;
114
115 InstSeqNum doneSeqNum;

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

121 uint64_t mispredPC;
122 uint64_t nextPC;
123
124 unsigned branchCount;
125 };
126
127 decodeComm decodeInfo[Impl::MaxThreads];
128
124 // Rename can't actually tell anything to squash or send a new PC back
125 // because it doesn't do anything along those lines. But maybe leave
126 // these fields in here to keep the stages mostly orthagonal.
127 struct renameComm {
129 struct renameComm {
128 bool squash;
129
130 uint64_t nextPC;
131 };
132
133 renameComm renameInfo[Impl::MaxThreads];
134
135 struct iewComm {
136 // Also eventually include skid buffer space.
137 bool usedIQ;
138 unsigned freeIQEntries;

--- 61 unchanged lines hidden ---
130 };
131
132 renameComm renameInfo[Impl::MaxThreads];
133
134 struct iewComm {
135 // Also eventually include skid buffer space.
136 bool usedIQ;
137 unsigned freeIQEntries;

--- 61 unchanged lines hidden ---