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::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 |
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 |
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; |
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; |
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 |
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 |
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 |
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); } |
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 --- |