static_inst.cc (4572:5499df089a6c) static_inst.cc (5870:5645632d594c)
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;

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

35
36StaticInstPtr StaticInst::nullStaticInstPtr;
37
38// Define the decode cache hash map.
39StaticInst::DecodeCache StaticInst::decodeCache;
40StaticInst::AddrDecodeCache StaticInst::addrDecodeCache;
41StaticInst::cacheElement StaticInst::recentDecodes[2];
42
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;

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

35
36StaticInstPtr StaticInst::nullStaticInstPtr;
37
38// Define the decode cache hash map.
39StaticInst::DecodeCache StaticInst::decodeCache;
40StaticInst::AddrDecodeCache StaticInst::addrDecodeCache;
41StaticInst::cacheElement StaticInst::recentDecodes[2];
42
43using namespace std;
44
45StaticInst::~StaticInst()
46{
47 if (cachedDisassembly)
48 delete cachedDisassembly;
49}
50
43void
44StaticInst::dumpDecodeCacheStats()
45{
51void
52StaticInst::dumpDecodeCacheStats()
53{
46 using namespace std;
47
48 cerr << "Decode hash table stats @ " << curTick << ":" << endl;
49 cerr << "\tnum entries = " << decodeCache.size() << endl;
50 cerr << "\tnum buckets = " << decodeCache.bucket_count() << endl;
51 vector<int> hist(100, 0);
52 int max_hist = 0;
53 for (int i = 0; i < decodeCache.bucket_count(); ++i) {
54 int count = decodeCache.elems_in_bucket(i);
55 if (count > max_hist)

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

76
77 return false;
78}
79
80StaticInstPtr
81StaticInst::fetchMicroop(MicroPC micropc)
82{
83 panic("StaticInst::fetchMicroop() called on instruction "
54 cerr << "Decode hash table stats @ " << curTick << ":" << endl;
55 cerr << "\tnum entries = " << decodeCache.size() << endl;
56 cerr << "\tnum buckets = " << decodeCache.bucket_count() << endl;
57 vector<int> hist(100, 0);
58 int max_hist = 0;
59 for (int i = 0; i < decodeCache.bucket_count(); ++i) {
60 int count = decodeCache.elems_in_bucket(i);
61 if (count > max_hist)

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

82
83 return false;
84}
85
86StaticInstPtr
87StaticInst::fetchMicroop(MicroPC micropc)
88{
89 panic("StaticInst::fetchMicroop() called on instruction "
84 "that is not microcoded.");
90 "that is not microcoded.");
85}
86
91}
92
93Addr
94StaticInst::branchTarget(Addr branchPC) const
95{
96 panic("StaticInst::branchTarget() called on instruction "
97 "that is not a PC-relative branch.");
98 M5_DUMMY_RETURN;
99}
100
101Addr
102StaticInst::branchTarget(ThreadContext *tc) const
103{
104 panic("StaticInst::branchTarget() called on instruction "
105 "that is not an indirect branch.");
106 M5_DUMMY_RETURN;
107}
108
109Request::Flags
110StaticInst::memAccFlags()
111{
112 panic("StaticInst::memAccFlags called on non-memory instruction");
113 return 0;
114}
115
116const string &
117StaticInst::disassemble(Addr pc, const SymbolTable *symtab) const
118{
119 if (!cachedDisassembly)
120 cachedDisassembly = new string(generateDisassembly(pc, symtab));
121
122 return *cachedDisassembly;
123}