thread_context.hh (10934:5af8f40d8f2c) thread_context.hh (10935:acd48ddd725f)
1/*
2 * Copyright (c) 2011-2012 ARM Limited
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating

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

93class ThreadContext
94{
95 protected:
96 typedef TheISA::MachInst MachInst;
97 typedef TheISA::IntReg IntReg;
98 typedef TheISA::FloatReg FloatReg;
99 typedef TheISA::FloatRegBits FloatRegBits;
100 typedef TheISA::CCReg CCReg;
1/*
2 * Copyright (c) 2011-2012 ARM Limited
3 * Copyright (c) 2013 Advanced Micro Devices, Inc.
4 * All rights reserved
5 *
6 * The license below extends only to copyright in the software and shall
7 * not be construed as granting a license to any other intellectual
8 * property including but not limited to intellectual property relating

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

93class ThreadContext
94{
95 protected:
96 typedef TheISA::MachInst MachInst;
97 typedef TheISA::IntReg IntReg;
98 typedef TheISA::FloatReg FloatReg;
99 typedef TheISA::FloatRegBits FloatRegBits;
100 typedef TheISA::CCReg CCReg;
101 typedef TheISA::VectorReg VectorReg;
102 typedef TheISA::MiscReg MiscReg;
103 public:
104
105 enum Status
106 {
107 /// Running. Instructions should be executed only when
108 /// the context is in this state.
109 Active,

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

201 virtual uint64_t readIntReg(int reg_idx) = 0;
202
203 virtual FloatReg readFloatReg(int reg_idx) = 0;
204
205 virtual FloatRegBits readFloatRegBits(int reg_idx) = 0;
206
207 virtual CCReg readCCReg(int reg_idx) = 0;
208
101 typedef TheISA::MiscReg MiscReg;
102 public:
103
104 enum Status
105 {
106 /// Running. Instructions should be executed only when
107 /// the context is in this state.
108 Active,

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

200 virtual uint64_t readIntReg(int reg_idx) = 0;
201
202 virtual FloatReg readFloatReg(int reg_idx) = 0;
203
204 virtual FloatRegBits readFloatRegBits(int reg_idx) = 0;
205
206 virtual CCReg readCCReg(int reg_idx) = 0;
207
209 virtual const VectorReg &readVectorReg(int reg_idx) = 0;
210
211 virtual void setIntReg(int reg_idx, uint64_t val) = 0;
212
213 virtual void setFloatReg(int reg_idx, FloatReg val) = 0;
214
215 virtual void setFloatRegBits(int reg_idx, FloatRegBits val) = 0;
216
217 virtual void setCCReg(int reg_idx, CCReg val) = 0;
218
208 virtual void setIntReg(int reg_idx, uint64_t val) = 0;
209
210 virtual void setFloatReg(int reg_idx, FloatReg val) = 0;
211
212 virtual void setFloatRegBits(int reg_idx, FloatRegBits val) = 0;
213
214 virtual void setCCReg(int reg_idx, CCReg val) = 0;
215
219 virtual void setVectorReg(int reg_idx, const VectorReg &val) = 0;
220
221 virtual TheISA::PCState pcState() = 0;
222
223 virtual void pcState(const TheISA::PCState &val) = 0;
224
225 virtual void pcStateNoRecord(const TheISA::PCState &val) = 0;
226
227 virtual Addr instAddr() = 0;
228

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

236
237 virtual void setMiscRegNoEffect(int misc_reg, const MiscReg &val) = 0;
238
239 virtual void setMiscReg(int misc_reg, const MiscReg &val) = 0;
240
241 virtual int flattenIntIndex(int reg) = 0;
242 virtual int flattenFloatIndex(int reg) = 0;
243 virtual int flattenCCIndex(int reg) = 0;
216 virtual TheISA::PCState pcState() = 0;
217
218 virtual void pcState(const TheISA::PCState &val) = 0;
219
220 virtual void pcStateNoRecord(const TheISA::PCState &val) = 0;
221
222 virtual Addr instAddr() = 0;
223

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

231
232 virtual void setMiscRegNoEffect(int misc_reg, const MiscReg &val) = 0;
233
234 virtual void setMiscReg(int misc_reg, const MiscReg &val) = 0;
235
236 virtual int flattenIntIndex(int reg) = 0;
237 virtual int flattenFloatIndex(int reg) = 0;
238 virtual int flattenCCIndex(int reg) = 0;
244 virtual int flattenVectorIndex(int reg) = 0;
245 virtual int flattenMiscIndex(int reg) = 0;
246
247 virtual uint64_t
248 readRegOtherThread(int misc_reg, ThreadID tid)
249 {
250 return 0;
251 }
252

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

292 virtual FloatReg readFloatRegFlat(int idx) = 0;
293 virtual void setFloatRegFlat(int idx, FloatReg val) = 0;
294
295 virtual FloatRegBits readFloatRegBitsFlat(int idx) = 0;
296 virtual void setFloatRegBitsFlat(int idx, FloatRegBits val) = 0;
297
298 virtual CCReg readCCRegFlat(int idx) = 0;
299 virtual void setCCRegFlat(int idx, CCReg val) = 0;
239 virtual int flattenMiscIndex(int reg) = 0;
240
241 virtual uint64_t
242 readRegOtherThread(int misc_reg, ThreadID tid)
243 {
244 return 0;
245 }
246

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

286 virtual FloatReg readFloatRegFlat(int idx) = 0;
287 virtual void setFloatRegFlat(int idx, FloatReg val) = 0;
288
289 virtual FloatRegBits readFloatRegBitsFlat(int idx) = 0;
290 virtual void setFloatRegBitsFlat(int idx, FloatRegBits val) = 0;
291
292 virtual CCReg readCCRegFlat(int idx) = 0;
293 virtual void setCCRegFlat(int idx, CCReg val) = 0;
300
301 virtual const VectorReg &readVectorRegFlat(int idx) = 0;
302 virtual void setVectorRegFlat(int idx, const VectorReg &val) = 0;
303 /** @} */
304
305};
306
307/**
308 * ProxyThreadContext class that provides a way to implement a
309 * ThreadContext without having to derive from it. ThreadContext is an
310 * abstract class, so anything that derives from it and uses its

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

406 { return actualTC->readFloatReg(reg_idx); }
407
408 FloatRegBits readFloatRegBits(int reg_idx)
409 { return actualTC->readFloatRegBits(reg_idx); }
410
411 CCReg readCCReg(int reg_idx)
412 { return actualTC->readCCReg(reg_idx); }
413
294 /** @} */
295
296};
297
298/**
299 * ProxyThreadContext class that provides a way to implement a
300 * ThreadContext without having to derive from it. ThreadContext is an
301 * abstract class, so anything that derives from it and uses its

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

397 { return actualTC->readFloatReg(reg_idx); }
398
399 FloatRegBits readFloatRegBits(int reg_idx)
400 { return actualTC->readFloatRegBits(reg_idx); }
401
402 CCReg readCCReg(int reg_idx)
403 { return actualTC->readCCReg(reg_idx); }
404
414 const VectorReg &readVectorReg(int reg_idx)
415 { return actualTC->readVectorReg(reg_idx); }
416
417 void setIntReg(int reg_idx, uint64_t val)
418 { actualTC->setIntReg(reg_idx, val); }
419
420 void setFloatReg(int reg_idx, FloatReg val)
421 { actualTC->setFloatReg(reg_idx, val); }
422
423 void setFloatRegBits(int reg_idx, FloatRegBits val)
424 { actualTC->setFloatRegBits(reg_idx, val); }
425
426 void setCCReg(int reg_idx, CCReg val)
427 { actualTC->setCCReg(reg_idx, val); }
428
405 void setIntReg(int reg_idx, uint64_t val)
406 { actualTC->setIntReg(reg_idx, val); }
407
408 void setFloatReg(int reg_idx, FloatReg val)
409 { actualTC->setFloatReg(reg_idx, val); }
410
411 void setFloatRegBits(int reg_idx, FloatRegBits val)
412 { actualTC->setFloatRegBits(reg_idx, val); }
413
414 void setCCReg(int reg_idx, CCReg val)
415 { actualTC->setCCReg(reg_idx, val); }
416
429 void setVectorReg(int reg_idx, const VectorReg &val)
430 { actualTC->setVectorReg(reg_idx, val); }
431
432 TheISA::PCState pcState() { return actualTC->pcState(); }
433
434 void pcState(const TheISA::PCState &val) { actualTC->pcState(val); }
435
436 void pcStateNoRecord(const TheISA::PCState &val) { actualTC->pcState(val); }
437
438 Addr instAddr() { return actualTC->instAddr(); }
439 Addr nextInstAddr() { return actualTC->nextInstAddr(); }

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

460 { return actualTC->flattenIntIndex(reg); }
461
462 int flattenFloatIndex(int reg)
463 { return actualTC->flattenFloatIndex(reg); }
464
465 int flattenCCIndex(int reg)
466 { return actualTC->flattenCCIndex(reg); }
467
417 TheISA::PCState pcState() { return actualTC->pcState(); }
418
419 void pcState(const TheISA::PCState &val) { actualTC->pcState(val); }
420
421 void pcStateNoRecord(const TheISA::PCState &val) { actualTC->pcState(val); }
422
423 Addr instAddr() { return actualTC->instAddr(); }
424 Addr nextInstAddr() { return actualTC->nextInstAddr(); }

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

445 { return actualTC->flattenIntIndex(reg); }
446
447 int flattenFloatIndex(int reg)
448 { return actualTC->flattenFloatIndex(reg); }
449
450 int flattenCCIndex(int reg)
451 { return actualTC->flattenCCIndex(reg); }
452
468 int flattenVectorIndex(int reg)
469 { return actualTC->flattenVectorIndex(reg); }
470
471 int flattenMiscIndex(int reg)
472 { return actualTC->flattenMiscIndex(reg); }
473
474 unsigned readStCondFailures()
475 { return actualTC->readStCondFailures(); }
476
477 void setStCondFailures(unsigned sc_failures)
478 { actualTC->setStCondFailures(sc_failures); }

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

500 void setFloatRegBitsFlat(int idx, FloatRegBits val)
501 { actualTC->setFloatRegBitsFlat(idx, val); }
502
503 CCReg readCCRegFlat(int idx)
504 { return actualTC->readCCRegFlat(idx); }
505
506 void setCCRegFlat(int idx, CCReg val)
507 { actualTC->setCCRegFlat(idx, val); }
453 int flattenMiscIndex(int reg)
454 { return actualTC->flattenMiscIndex(reg); }
455
456 unsigned readStCondFailures()
457 { return actualTC->readStCondFailures(); }
458
459 void setStCondFailures(unsigned sc_failures)
460 { actualTC->setStCondFailures(sc_failures); }

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

482 void setFloatRegBitsFlat(int idx, FloatRegBits val)
483 { actualTC->setFloatRegBitsFlat(idx, val); }
484
485 CCReg readCCRegFlat(int idx)
486 { return actualTC->readCCRegFlat(idx); }
487
488 void setCCRegFlat(int idx, CCReg val)
489 { actualTC->setCCRegFlat(idx, val); }
508
509 const VectorReg &readVectorRegFlat(int idx)
510 { return actualTC->readVectorRegFlat(idx); }
511
512 void setVectorRegFlat(int idx, const VectorReg &val)
513 { actualTC->setVectorRegFlat(idx, val); }
514};
515
516/** @{ */
517/**
518 * Thread context serialization helpers
519 *
520 * These helper functions provide a way to the data in a
521 * ThreadContext. They are provided as separate helper function since

--- 23 unchanged lines hidden ---
490};
491
492/** @{ */
493/**
494 * Thread context serialization helpers
495 *
496 * These helper functions provide a way to the data in a
497 * ThreadContext. They are provided as separate helper function since

--- 23 unchanged lines hidden ---