atomic.cc (5694:de7a82f58985) atomic.cc (5712:199d31b47f7b)
1/*
2 * Copyright (c) 2002-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;

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

74 else
75 panic("No Such Port\n");
76}
77
78void
79AtomicSimpleCPU::init()
80{
81 BaseCPU::init();
1/*
2 * Copyright (c) 2002-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;

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

74 else
75 panic("No Such Port\n");
76}
77
78void
79AtomicSimpleCPU::init()
80{
81 BaseCPU::init();
82 cpuId = tc->readCpuId();
83#if FULL_SYSTEM
84 for (int i = 0; i < threadContexts.size(); ++i) {
85 ThreadContext *tc = threadContexts[i];
86
87 // initialize CPU, including PC
82#if FULL_SYSTEM
83 for (int i = 0; i < threadContexts.size(); ++i) {
84 ThreadContext *tc = threadContexts[i];
85
86 // initialize CPU, including PC
88 TheISA::initCPU(tc, cpuId);
87 TheISA::initCPU(tc, _cpuId);
89 }
90#endif
91 if (hasPhysMemPort) {
92 bool snoop = false;
93 AddrRangeList pmAddrList;
94 physmemPort.getPeerAddressRanges(pmAddrList, snoop);
95 physMemAddr = *pmAddrList.begin();
96 }
88 }
89#endif
90 if (hasPhysMemPort) {
91 bool snoop = false;
92 AddrRangeList pmAddrList;
93 physmemPort.getPeerAddressRanges(pmAddrList, snoop);
94 physMemAddr = *pmAddrList.begin();
95 }
97 ifetch_req.setThreadContext(cpuId, 0); // Add thread ID if we add MT
98 data_read_req.setThreadContext(cpuId, 0); // Add thread ID here too
99 data_write_req.setThreadContext(cpuId, 0); // Add thread ID here too
96 ifetch_req.setThreadContext(_cpuId, 0); // Add thread ID if we add MT
97 data_read_req.setThreadContext(_cpuId, 0); // Add thread ID here too
98 data_write_req.setThreadContext(_cpuId, 0); // Add thread ID here too
100}
101
102bool
103AtomicSimpleCPU::CpuPort::recvTiming(PacketPtr pkt)
104{
105 panic("AtomicSimpleCPU doesn't expect recvTiming callback!");
106 return true;
107}

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

232 schedule(tickEvent, nextCycle());
233 break;
234 }
235 }
236 if (_status != Running) {
237 _status = Idle;
238 }
239 assert(threadContexts.size() == 1);
99}
100
101bool
102AtomicSimpleCPU::CpuPort::recvTiming(PacketPtr pkt)
103{
104 panic("AtomicSimpleCPU doesn't expect recvTiming callback!");
105 return true;
106}

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

231 schedule(tickEvent, nextCycle());
232 break;
233 }
234 }
235 if (_status != Running) {
236 _status = Idle;
237 }
238 assert(threadContexts.size() == 1);
240 cpuId = tc->readCpuId();
241 ifetch_req.setThreadContext(cpuId, 0); // Add thread ID if we add MT
242 data_read_req.setThreadContext(cpuId, 0); // Add thread ID here too
243 data_write_req.setThreadContext(cpuId, 0); // Add thread ID here too
239 ifetch_req.setThreadContext(_cpuId, 0); // Add thread ID if we add MT
240 data_read_req.setThreadContext(_cpuId, 0); // Add thread ID here too
241 data_write_req.setThreadContext(_cpuId, 0); // Add thread ID here too
244}
245
246
247void
248AtomicSimpleCPU::activateContext(int thread_num, int delay)
249{
250 DPRINTF(SimpleCPU, "ActivateContext %d (%d cycles)\n", thread_num, delay);
251

--- 579 unchanged lines hidden ---
242}
243
244
245void
246AtomicSimpleCPU::activateContext(int thread_num, int delay)
247{
248 DPRINTF(SimpleCPU, "ActivateContext %d (%d cycles)\n", thread_num, delay);
249

--- 579 unchanged lines hidden ---