Deleted Added
sdiff udiff text old ( 2654:9559cfa91b9d ) new ( 2665:a124942bacb8 )
full compact
1/*
2 * Copyright (c) 2003-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;

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

19 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
20 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
21 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
26 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#include <errno.h>
30#include <fcntl.h>
31#include <unistd.h>
32
33#include <string>
34
35#include "sim/pseudo_inst.hh"
36#include "arch/vtophys.hh"
37#include "cpu/base.hh"
38#include "cpu/sampler/sampler.hh"
39#include "cpu/exec_context.hh"
40#include "cpu/quiesce_event.hh"
41#include "kern/kernel_stats.hh"
42#include "sim/param.hh"
43#include "sim/serialize.hh"
44#include "sim/sim_exit.hh"
45#include "sim/stat_control.hh"
46#include "sim/stats.hh"
47#include "sim/system.hh"
48#include "sim/debug.hh"

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

59{
60 bool doStatisticsInsts;
61 bool doCheckpointInsts;
62 bool doQuiesce;
63
64 void
65 arm(ExecContext *xc)
66 {
67 if (xc->getKernelStats())
68 xc->getKernelStats()->arm();
69 }
70
71 void
72 quiesce(ExecContext *xc)
73 {
74 if (!doQuiesce)
75 return;
76
77 xc->suspend();
78 if (xc->getKernelStats())
79 xc->getKernelStats()->quiesce();
80 }
81
82 void
83 quiesceNs(ExecContext *xc, uint64_t ns)
84 {
85 if (!doQuiesce || ns == 0)
86 return;
87
88 EndQuiesceEvent *quiesceEvent = xc->getQuiesceEvent();
89
90 if (quiesceEvent->scheduled())
91 quiesceEvent->reschedule(curTick + Clock::Int::ns * ns);
92 else
93 quiesceEvent->schedule(curTick + Clock::Int::ns * ns);
94
95 xc->suspend();
96 if (xc->getKernelStats())
97 xc->getKernelStats()->quiesce();
98 }
99
100 void
101 quiesceCycles(ExecContext *xc, uint64_t cycles)
102 {
103 if (!doQuiesce || cycles == 0)
104 return;
105
106 EndQuiesceEvent *quiesceEvent = xc->getQuiesceEvent();
107
108 if (quiesceEvent->scheduled())
109 quiesceEvent->reschedule(curTick +
110 xc->getCpuPtr()->cycles(cycles));
111 else
112 quiesceEvent->schedule(curTick +
113 xc->getCpuPtr()->cycles(cycles));
114
115 xc->suspend();
116 if (xc->getKernelStats())
117 xc->getKernelStats()->quiesce();
118 }
119
120 uint64_t
121 quiesceTime(ExecContext *xc)
122 {
123 return (xc->readLastActivate() - xc->readLastSuspend()) / Clock::Int::ns;
124 }
125
126 void
127 ivlb(ExecContext *xc)
128 {
129 if (xc->getKernelStats())
130 xc->getKernelStats()->ivlb();
131 }
132
133 void
134 ivle(ExecContext *xc)
135 {
136 }
137
138 void

--- 152 unchanged lines hidden ---