thread_context.hh (13500:6e0a2a7c6d8c) | thread_context.hh (13557:fc33e6048b25) |
---|---|
1/* 2 * Copyright (c) 2011-2012, 2016 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 --- 192 unchanged lines hidden (view full) --- 201 { 202 actualTC->clearArchRegs(); 203 checkerTC->clearArchRegs(); 204 } 205 206 // 207 // New accessors for new decoder. 208 // | 1/* 2 * Copyright (c) 2011-2012, 2016 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 --- 192 unchanged lines hidden (view full) --- 201 { 202 actualTC->clearArchRegs(); 203 checkerTC->clearArchRegs(); 204 } 205 206 // 207 // New accessors for new decoder. 208 // |
209 uint64_t readIntReg(int reg_idx) 210 { return actualTC->readIntReg(reg_idx); } | 209 RegVal readIntReg(int reg_idx) { return actualTC->readIntReg(reg_idx); } |
211 | 210 |
212 FloatRegBits readFloatRegBits(int reg_idx) 213 { return actualTC->readFloatRegBits(reg_idx); } | 211 RegVal 212 readFloatRegBits(int reg_idx) 213 { 214 return actualTC->readFloatRegBits(reg_idx); 215 } |
214 215 const VecRegContainer& readVecReg(const RegId& reg) const 216 { return actualTC->readVecReg(reg); } 217 218 /** 219 * Read vector register for modification, hierarchical indexing. 220 */ 221 VecRegContainer& getWritableVecReg(const RegId& reg) --- 37 unchanged lines hidden (view full) --- 259 /** @} */ 260 261 const VecElem& readVecElem(const RegId& reg) const 262 { return actualTC->readVecElem(reg); } 263 264 CCReg readCCReg(int reg_idx) 265 { return actualTC->readCCReg(reg_idx); } 266 | 216 217 const VecRegContainer& readVecReg(const RegId& reg) const 218 { return actualTC->readVecReg(reg); } 219 220 /** 221 * Read vector register for modification, hierarchical indexing. 222 */ 223 VecRegContainer& getWritableVecReg(const RegId& reg) --- 37 unchanged lines hidden (view full) --- 261 /** @} */ 262 263 const VecElem& readVecElem(const RegId& reg) const 264 { return actualTC->readVecElem(reg); } 265 266 CCReg readCCReg(int reg_idx) 267 { return actualTC->readCCReg(reg_idx); } 268 |
267 void setIntReg(int reg_idx, uint64_t val) | 269 void 270 setIntReg(int reg_idx, RegVal val) |
268 { 269 actualTC->setIntReg(reg_idx, val); 270 checkerTC->setIntReg(reg_idx, val); 271 } 272 | 271 { 272 actualTC->setIntReg(reg_idx, val); 273 checkerTC->setIntReg(reg_idx, val); 274 } 275 |
273 void setFloatRegBits(int reg_idx, FloatRegBits val) | 276 void 277 setFloatRegBits(int reg_idx, RegVal val) |
274 { 275 actualTC->setFloatRegBits(reg_idx, val); 276 checkerTC->setFloatRegBits(reg_idx, val); 277 } 278 | 278 { 279 actualTC->setFloatRegBits(reg_idx, val); 280 checkerTC->setFloatRegBits(reg_idx, val); 281 } 282 |
279 void setVecReg(const RegId& reg, const VecRegContainer& val) | 283 void 284 setVecReg(const RegId& reg, const VecRegContainer& val) |
280 { 281 actualTC->setVecReg(reg, val); 282 checkerTC->setVecReg(reg, val); 283 } 284 | 285 { 286 actualTC->setVecReg(reg, val); 287 checkerTC->setVecReg(reg, val); 288 } 289 |
285 void setVecElem(const RegId& reg, const VecElem& val) | 290 void 291 setVecElem(const RegId& reg, const VecElem& val) |
286 { 287 actualTC->setVecElem(reg, val); 288 checkerTC->setVecElem(reg, val); 289 } 290 | 292 { 293 actualTC->setVecElem(reg, val); 294 checkerTC->setVecElem(reg, val); 295 } 296 |
291 void setCCReg(int reg_idx, CCReg val) | 297 void 298 setCCReg(int reg_idx, CCReg val) |
292 { 293 actualTC->setCCReg(reg_idx, val); 294 checkerTC->setCCReg(reg_idx, val); 295 } 296 297 /** Reads this thread's PC state. */ 298 TheISA::PCState pcState() 299 { return actualTC->pcState(); } 300 301 /** Sets this thread's PC state. */ | 299 { 300 actualTC->setCCReg(reg_idx, val); 301 checkerTC->setCCReg(reg_idx, val); 302 } 303 304 /** Reads this thread's PC state. */ 305 TheISA::PCState pcState() 306 { return actualTC->pcState(); } 307 308 /** Sets this thread's PC state. */ |
302 void pcState(const TheISA::PCState &val) | 309 void 310 pcState(const TheISA::PCState &val) |
303 { 304 DPRINTF(Checker, "Changing PC to %s, old PC %s\n", 305 val, checkerTC->pcState()); 306 checkerTC->pcState(val); 307 checkerCPU->recordPCChange(val); 308 return actualTC->pcState(val); 309 } 310 | 311 { 312 DPRINTF(Checker, "Changing PC to %s, old PC %s\n", 313 val, checkerTC->pcState()); 314 checkerTC->pcState(val); 315 checkerCPU->recordPCChange(val); 316 return actualTC->pcState(val); 317 } 318 |
311 void setNPC(Addr val) | 319 void 320 setNPC(Addr val) |
312 { 313 checkerTC->setNPC(val); 314 actualTC->setNPC(val); 315 } 316 | 321 { 322 checkerTC->setNPC(val); 323 actualTC->setNPC(val); 324 } 325 |
317 void pcStateNoRecord(const TheISA::PCState &val) | 326 void 327 pcStateNoRecord(const TheISA::PCState &val) |
318 { 319 return actualTC->pcState(val); 320 } 321 322 /** Reads this thread's PC. */ 323 Addr instAddr() 324 { return actualTC->instAddr(); } 325 326 /** Reads this thread's next PC. */ 327 Addr nextInstAddr() 328 { return actualTC->nextInstAddr(); } 329 330 /** Reads this thread's next PC. */ 331 MicroPC microPC() 332 { return actualTC->microPC(); } 333 | 328 { 329 return actualTC->pcState(val); 330 } 331 332 /** Reads this thread's PC. */ 333 Addr instAddr() 334 { return actualTC->instAddr(); } 335 336 /** Reads this thread's next PC. */ 337 Addr nextInstAddr() 338 { return actualTC->nextInstAddr(); } 339 340 /** Reads this thread's next PC. */ 341 MicroPC microPC() 342 { return actualTC->microPC(); } 343 |
334 MiscReg readMiscRegNoEffect(int misc_reg) const | 344 RegVal readMiscRegNoEffect(int misc_reg) const |
335 { return actualTC->readMiscRegNoEffect(misc_reg); } 336 | 345 { return actualTC->readMiscRegNoEffect(misc_reg); } 346 |
337 MiscReg readMiscReg(int misc_reg) | 347 RegVal readMiscReg(int misc_reg) |
338 { return actualTC->readMiscReg(misc_reg); } 339 | 348 { return actualTC->readMiscReg(misc_reg); } 349 |
340 void setMiscRegNoEffect(int misc_reg, const MiscReg &val) | 350 void 351 setMiscRegNoEffect(int misc_reg, const RegVal &val) |
341 { 342 DPRINTF(Checker, "Setting misc reg with no effect: %d to both Checker" 343 " and O3..\n", misc_reg); 344 checkerTC->setMiscRegNoEffect(misc_reg, val); 345 actualTC->setMiscRegNoEffect(misc_reg, val); 346 } 347 | 352 { 353 DPRINTF(Checker, "Setting misc reg with no effect: %d to both Checker" 354 " and O3..\n", misc_reg); 355 checkerTC->setMiscRegNoEffect(misc_reg, val); 356 actualTC->setMiscRegNoEffect(misc_reg, val); 357 } 358 |
348 void setMiscReg(int misc_reg, const MiscReg &val) | 359 void 360 setMiscReg(int misc_reg, const RegVal &val) |
349 { 350 DPRINTF(Checker, "Setting misc reg with effect: %d to both Checker" 351 " and O3..\n", misc_reg); 352 checkerTC->setMiscReg(misc_reg, val); 353 actualTC->setMiscReg(misc_reg, val); 354 } 355 | 361 { 362 DPRINTF(Checker, "Setting misc reg with effect: %d to both Checker" 363 " and O3..\n", misc_reg); 364 checkerTC->setMiscReg(misc_reg, val); 365 actualTC->setMiscReg(misc_reg, val); 366 } 367 |
356 RegId flattenRegId(const RegId& regId) const { | 368 RegId 369 flattenRegId(const RegId& regId) const 370 { |
357 return actualTC->flattenRegId(regId); 358 } 359 360 unsigned readStCondFailures() 361 { return actualTC->readStCondFailures(); } 362 | 371 return actualTC->flattenRegId(regId); 372 } 373 374 unsigned readStCondFailures() 375 { return actualTC->readStCondFailures(); } 376 |
363 void setStCondFailures(unsigned sc_failures) | 377 void 378 setStCondFailures(unsigned sc_failures) |
364 { 365 actualTC->setStCondFailures(sc_failures); 366 } 367 368 Counter readFuncExeInst() { return actualTC->readFuncExeInst(); } 369 | 379 { 380 actualTC->setStCondFailures(sc_failures); 381 } 382 383 Counter readFuncExeInst() { return actualTC->readFuncExeInst(); } 384 |
370 uint64_t readIntRegFlat(int idx) 371 { return actualTC->readIntRegFlat(idx); } | 385 RegVal readIntRegFlat(int idx) { return actualTC->readIntRegFlat(idx); } |
372 | 386 |
373 void setIntRegFlat(int idx, uint64_t val) 374 { actualTC->setIntRegFlat(idx, val); } | 387 void 388 setIntRegFlat(int idx, RegVal val) 389 { 390 actualTC->setIntRegFlat(idx, val); 391 } |
375 | 392 |
376 FloatRegBits readFloatRegBitsFlat(int idx) 377 { return actualTC->readFloatRegBitsFlat(idx); } | 393 RegVal 394 readFloatRegBitsFlat(int idx) 395 { 396 return actualTC->readFloatRegBitsFlat(idx); 397 } |
378 | 398 |
379 void setFloatRegBitsFlat(int idx, FloatRegBits val) 380 { actualTC->setFloatRegBitsFlat(idx, val); } | 399 void 400 setFloatRegBitsFlat(int idx, RegVal val) 401 { 402 actualTC->setFloatRegBitsFlat(idx, val); 403 } |
381 | 404 |
382 const VecRegContainer& readVecRegFlat(int idx) const 383 { return actualTC->readVecRegFlat(idx); } | 405 const VecRegContainer & 406 readVecRegFlat(int idx) const 407 { 408 return actualTC->readVecRegFlat(idx); 409 } |
384 385 /** 386 * Read vector register for modification, flat indexing. 387 */ | 410 411 /** 412 * Read vector register for modification, flat indexing. 413 */ |
388 VecRegContainer& getWritableVecRegFlat(int idx) 389 { return actualTC->getWritableVecRegFlat(idx); } | 414 VecRegContainer & 415 getWritableVecRegFlat(int idx) 416 { 417 return actualTC->getWritableVecRegFlat(idx); 418 } |
390 391 void setVecRegFlat(int idx, const VecRegContainer& val) 392 { actualTC->setVecRegFlat(idx, val); } 393 394 const VecElem& readVecElemFlat(const RegIndex& idx, 395 const ElemIndex& elem_idx) const 396 { return actualTC->readVecElemFlat(idx, elem_idx); } 397 --- 12 unchanged lines hidden --- | 419 420 void setVecRegFlat(int idx, const VecRegContainer& val) 421 { actualTC->setVecRegFlat(idx, val); } 422 423 const VecElem& readVecElemFlat(const RegIndex& idx, 424 const ElemIndex& elem_idx) const 425 { return actualTC->readVecElemFlat(idx, elem_idx); } 426 --- 12 unchanged lines hidden --- |