exetrace.cc (3945:255fad06ea71) | exetrace.cc (3949:b6664282d899) |
---|---|
1/* 2 * Copyright (c) 2001-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; --- 45 unchanged lines hidden (view full) --- 54#include "arch/isa_specific.hh" 55#include "cpu/m5legion_interface.h" 56 57using namespace std; 58using namespace TheISA; 59 60#if THE_ISA == SPARC_ISA && FULL_SYSTEM 61static int diffcount = 0; | 1/* 2 * Copyright (c) 2001-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; --- 45 unchanged lines hidden (view full) --- 54#include "arch/isa_specific.hh" 55#include "cpu/m5legion_interface.h" 56 57using namespace std; 58using namespace TheISA; 59 60#if THE_ISA == SPARC_ISA && FULL_SYSTEM 61static int diffcount = 0; |
62static bool wasMicro = false; | |
63#endif 64 65namespace Trace { 66SharedData *shared_data = NULL; 67} 68 69//////////////////////////////////////////////////////////////////////// 70// --- 49 unchanged lines hidden (view full) --- 120 ccprintf(os, "====================================================================\n"); 121} 122 123#endif 124 125void 126Trace::InstRecord::dump(ostream &outs) 127{ | 62#endif 63 64namespace Trace { 65SharedData *shared_data = NULL; 66} 67 68//////////////////////////////////////////////////////////////////////// 69// --- 49 unchanged lines hidden (view full) --- 119 ccprintf(os, "====================================================================\n"); 120} 121 122#endif 123 124void 125Trace::InstRecord::dump(ostream &outs) 126{ |
128 DPRINTF(Sparc, "Instruction: %#X\n", staticInst->machInst); | |
129 if (flags[PRINT_REG_DELTA]) 130 { 131#if THE_ISA == SPARC_ISA 132 //Don't print what happens for each micro-op, just print out 133 //once at the last op, and for regular instructions. 134 if(!staticInst->isMicroOp() || staticInst->isLastMicroOp()) 135 { 136 static uint64_t regs[32] = { --- 5 unchanged lines hidden (view full) --- 142 static uint64_t y = 0; 143 static uint64_t floats[32]; 144 uint64_t newVal; 145 static const char * prefixes[4] = {"G", "O", "L", "I"}; 146 147 outs << hex; 148 outs << "PC = " << thread->readNextPC(); 149 outs << " NPC = " << thread->readNextNPC(); | 127 if (flags[PRINT_REG_DELTA]) 128 { 129#if THE_ISA == SPARC_ISA 130 //Don't print what happens for each micro-op, just print out 131 //once at the last op, and for regular instructions. 132 if(!staticInst->isMicroOp() || staticInst->isLastMicroOp()) 133 { 134 static uint64_t regs[32] = { --- 5 unchanged lines hidden (view full) --- 140 static uint64_t y = 0; 141 static uint64_t floats[32]; 142 uint64_t newVal; 143 static const char * prefixes[4] = {"G", "O", "L", "I"}; 144 145 outs << hex; 146 outs << "PC = " << thread->readNextPC(); 147 outs << " NPC = " << thread->readNextNPC(); |
150 newVal = thread->readMiscReg(SparcISA::MISCREG_CCR); | 148 newVal = thread->readIntReg(SparcISA::NumIntArchRegs + 2); 149 //newVal = thread->readMiscReg(SparcISA::MISCREG_CCR); |
151 if(newVal != ccr) 152 { 153 outs << " CCR = " << newVal; 154 ccr = newVal; 155 } | 150 if(newVal != ccr) 151 { 152 outs << " CCR = " << newVal; 153 ccr = newVal; 154 } |
156 newVal = thread->readMiscReg(SparcISA::MISCREG_Y); | 155 newVal = thread->readIntReg(SparcISA::NumIntArchRegs + 1); 156 //newVal = thread->readMiscReg(SparcISA::MISCREG_Y); |
157 if(newVal != y) 158 { 159 outs << " Y = " << newVal; 160 y = newVal; 161 } 162 for(int y = 0; y < 4; y++) 163 { 164 for(int x = 0; x < 8; x++) --- 123 unchanged lines hidden (view full) --- 288#if THE_ISA == SPARC_ISA && FULL_SYSTEM 289 // Compare 290 if (flags[LEGION_LOCKSTEP]) 291 { 292 bool compared = false; 293 bool diffPC = false; 294 bool diffCC = false; 295 bool diffInst = false; | 157 if(newVal != y) 158 { 159 outs << " Y = " << newVal; 160 y = newVal; 161 } 162 for(int y = 0; y < 4; y++) 163 { 164 for(int x = 0; x < 8; x++) --- 123 unchanged lines hidden (view full) --- 288#if THE_ISA == SPARC_ISA && FULL_SYSTEM 289 // Compare 290 if (flags[LEGION_LOCKSTEP]) 291 { 292 bool compared = false; 293 bool diffPC = false; 294 bool diffCC = false; 295 bool diffInst = false; |
296 bool diffIntRegs = false; 297 bool diffFpRegs = false; | 296 bool diffRegs = false; |
298 bool diffTpc = false; 299 bool diffTnpc = false; 300 bool diffTstate = false; 301 bool diffTt = false; 302 bool diffTba = false; 303 bool diffHpstate = false; 304 bool diffHtstate = false; 305 bool diffHtba = false; --- 4 unchanged lines hidden (view full) --- 310 bool diffGl = false; 311 bool diffAsi = false; 312 bool diffPil = false; 313 bool diffCwp = false; 314 bool diffCansave = false; 315 bool diffCanrestore = false; 316 bool diffOtherwin = false; 317 bool diffCleanwin = false; | 297 bool diffTpc = false; 298 bool diffTnpc = false; 299 bool diffTstate = false; 300 bool diffTt = false; 301 bool diffTba = false; 302 bool diffHpstate = false; 303 bool diffHtstate = false; 304 bool diffHtba = false; --- 4 unchanged lines hidden (view full) --- 309 bool diffGl = false; 310 bool diffAsi = false; 311 bool diffPil = false; 312 bool diffCwp = false; 313 bool diffCansave = false; 314 bool diffCanrestore = false; 315 bool diffOtherwin = false; 316 bool diffCleanwin = false; |
318 bool diffTlb = false; | |
319 Addr m5Pc, lgnPc; 320 | 317 Addr m5Pc, lgnPc; 318 |
321 // We took a trap on a micro-op... 322 if (wasMicro && !staticInst->isMicroOp()) 323 { 324 // let's skip comparing this cycle 325 while (!compared) 326 if (shared_data->flags == OWN_M5) { 327 shared_data->flags = OWN_LEGION; 328 compared = true; 329 } 330 compared = false; 331 wasMicro = false; 332 } | |
333 | 319 |
334 if (staticInst->isLastMicroOp()) 335 wasMicro = false; 336 else if (staticInst->isMicroOp()) 337 wasMicro = true; 338 339 | |
340 if(!staticInst->isMicroOp() || staticInst->isLastMicroOp()) { 341 while (!compared) { 342 if (shared_data->flags == OWN_M5) { 343 m5Pc = PC & TheISA::PAddrImplMask; | 320 if(!staticInst->isMicroOp() || staticInst->isLastMicroOp()) { 321 while (!compared) { 322 if (shared_data->flags == OWN_M5) { 323 m5Pc = PC & TheISA::PAddrImplMask; |
344 if (bits(shared_data->pstate,3,3)) { 345 m5Pc &= mask(32); 346 } | |
347 lgnPc = shared_data->pc & TheISA::PAddrImplMask; 348 if (lgnPc != m5Pc) 349 diffPC = true; 350 351 if (shared_data->cycle_count != 352 thread->getCpuPtr()->instCount()) 353 diffCC = true; 354 355 if (shared_data->instruction != 356 (SparcISA::MachInst)staticInst->machInst) { 357 diffInst = true; 358 } 359 for (int i = 0; i < TheISA::NumIntArchRegs; i++) { 360 if (thread->readIntReg(i) != shared_data->intregs[i]) { | 324 lgnPc = shared_data->pc & TheISA::PAddrImplMask; 325 if (lgnPc != m5Pc) 326 diffPC = true; 327 328 if (shared_data->cycle_count != 329 thread->getCpuPtr()->instCount()) 330 diffCC = true; 331 332 if (shared_data->instruction != 333 (SparcISA::MachInst)staticInst->machInst) { 334 diffInst = true; 335 } 336 for (int i = 0; i < TheISA::NumIntArchRegs; i++) { 337 if (thread->readIntReg(i) != shared_data->intregs[i]) { |
361 diffIntRegs = true; | 338 diffRegs = true; |
362 } 363 } | 339 } 340 } |
364 for (int i = 0; i < TheISA::NumFloatRegs/2; i++) { 365 if (thread->readFloatRegBits(i*2,FloatRegFile::DoubleWidth) != shared_data->fpregs[i]) { 366 diffFpRegs = true; 367 } 368 } 369 uint64_t oldTl = thread->readMiscReg(MISCREG_TL); | 341 uint64_t oldTl = thread->readMiscReg(MISCREG_TL); |
370 if (oldTl != shared_data->tl) 371 diffTl = true; 372 for (int i = 1; i <= MaxTL; i++) { 373 thread->setMiscReg(MISCREG_TL, i); 374 if (thread->readMiscReg(MISCREG_TPC) != 375 shared_data->tpc[i-1]) 376 diffTpc = true; 377 if (thread->readMiscReg(MISCREG_TNPC) != --- 20 unchanged lines hidden (view full) --- 398 //we just don't compare it. It's not supposed to matter 399 //anyway. 400 if((shared_data->hpstate | (1 << 11)) != thread->readMiscReg(MISCREG_HPSTATE)) 401 diffHpstate = true; 402 if(shared_data->htba != thread->readMiscReg(MISCREG_HTBA)) 403 diffHtba = true; 404 if(shared_data->pstate != thread->readMiscReg(MISCREG_PSTATE)) 405 diffPstate = true; | 342 if (oldTl != shared_data->tl) 343 diffTl = true; 344 for (int i = 1; i <= MaxTL; i++) { 345 thread->setMiscReg(MISCREG_TL, i); 346 if (thread->readMiscReg(MISCREG_TPC) != 347 shared_data->tpc[i-1]) 348 diffTpc = true; 349 if (thread->readMiscReg(MISCREG_TNPC) != --- 20 unchanged lines hidden (view full) --- 370 //we just don't compare it. It's not supposed to matter 371 //anyway. 372 if((shared_data->hpstate | (1 << 11)) != thread->readMiscReg(MISCREG_HPSTATE)) 373 diffHpstate = true; 374 if(shared_data->htba != thread->readMiscReg(MISCREG_HTBA)) 375 diffHtba = true; 376 if(shared_data->pstate != thread->readMiscReg(MISCREG_PSTATE)) 377 diffPstate = true; |
406 if(shared_data->y != thread->readMiscReg(MISCREG_Y)) | 378 //if(shared_data->y != thread->readMiscReg(MISCREG_Y)) 379 if(shared_data->y != 380 thread->readIntReg(NumIntArchRegs + 1)) |
407 diffY = true; | 381 diffY = true; |
408 if(shared_data->ccr != thread->readMiscReg(MISCREG_CCR)) | 382 //if(shared_data->ccr != thread->readMiscReg(MISCREG_CCR)) 383 if(shared_data->ccr != 384 thread->readIntReg(NumIntArchRegs + 2)) |
409 diffCcr = true; 410 if(shared_data->gl != thread->readMiscReg(MISCREG_GL)) 411 diffGl = true; 412 if(shared_data->asi != thread->readMiscReg(MISCREG_ASI)) 413 diffAsi = true; 414 if(shared_data->pil != thread->readMiscReg(MISCREG_PIL)) 415 diffPil = true; 416 if(shared_data->cwp != thread->readMiscReg(MISCREG_CWP)) 417 diffCwp = true; | 385 diffCcr = true; 386 if(shared_data->gl != thread->readMiscReg(MISCREG_GL)) 387 diffGl = true; 388 if(shared_data->asi != thread->readMiscReg(MISCREG_ASI)) 389 diffAsi = true; 390 if(shared_data->pil != thread->readMiscReg(MISCREG_PIL)) 391 diffPil = true; 392 if(shared_data->cwp != thread->readMiscReg(MISCREG_CWP)) 393 diffCwp = true; |
418 if(shared_data->cansave != thread->readMiscReg(MISCREG_CANSAVE)) | 394 //if(shared_data->cansave != thread->readMiscReg(MISCREG_CANSAVE)) 395 if(shared_data->cansave != 396 thread->readIntReg(NumIntArchRegs + 3)) |
419 diffCansave = true; | 397 diffCansave = true; |
398 //if(shared_data->canrestore != 399 // thread->readMiscReg(MISCREG_CANRESTORE)) |
|
420 if(shared_data->canrestore != | 400 if(shared_data->canrestore != |
421 thread->readMiscReg(MISCREG_CANRESTORE)) | 401 thread->readMiscReg(NumIntArchRegs + 4)) |
422 diffCanrestore = true; | 402 diffCanrestore = true; |
423 if(shared_data->otherwin != thread->readMiscReg(MISCREG_OTHERWIN)) | 403 //if(shared_data->otherwin != thread->readMiscReg(MISCREG_OTHERWIN)) 404 if(shared_data->otherwin != 405 thread->readIntReg(NumIntArchRegs + 5)) |
424 diffOtherwin = true; | 406 diffOtherwin = true; |
425 if(shared_data->cleanwin != thread->readMiscReg(MISCREG_CLEANWIN)) | 407 //if(shared_data->cleanwin != thread->readMiscReg(MISCREG_CLEANWIN)) 408 if(shared_data->cleanwin != 409 thread->readMiscReg(NumIntArchRegs + 6)) |
426 diffCleanwin = true; 427 | 410 diffCleanwin = true; 411 |
428 for (int i = 0; i < 64; i++) { 429 if (shared_data->itb[i] != thread->getITBPtr()->TteRead(i)) 430 diffTlb = true; 431 if (shared_data->dtb[i] != thread->getDTBPtr()->TteRead(i)) 432 diffTlb = true; 433 } 434 435 if ((diffPC || diffCC || diffInst || diffIntRegs || 436 diffFpRegs || diffTpc || diffTnpc || diffTstate || 437 diffTt || diffHpstate || diffHtstate || diffHtba || 438 diffPstate || diffY || diffCcr || diffTl || diffGl || 439 diffAsi || diffPil || diffCwp || diffCansave || 440 diffCanrestore || diffOtherwin || diffCleanwin || diffTlb) 441 && !((staticInst->machInst & 0xC1F80000) == 0x81D00000) 442 && !(((staticInst->machInst & 0xC0000000) == 0xC0000000) 443 && shared_data->tl == thread->readMiscReg(MISCREG_TL) + 1) 444 ) { 445 | 412 if ((diffPC || diffCC || diffInst || diffRegs || diffTpc || 413 diffTnpc || diffTstate || diffTt || diffHpstate || 414 diffHtstate || diffHtba || diffPstate || diffY || 415 diffCcr || diffTl || diffGl || diffAsi || diffPil || 416 diffCwp || diffCansave || diffCanrestore || 417 diffOtherwin || diffCleanwin) 418 && !((staticInst->machInst & 0xC1F80000) == 0x81D00000)) { |
446 outs << "Differences found between M5 and Legion:"; 447 if (diffPC) 448 outs << " [PC]"; 449 if (diffCC) 450 outs << " [CC]"; 451 if (diffInst) 452 outs << " [Instruction]"; | 419 outs << "Differences found between M5 and Legion:"; 420 if (diffPC) 421 outs << " [PC]"; 422 if (diffCC) 423 outs << " [CC]"; 424 if (diffInst) 425 outs << " [Instruction]"; |
453 if (diffIntRegs) | 426 if (diffRegs) |
454 outs << " [IntRegs]"; | 427 outs << " [IntRegs]"; |
455 if (diffFpRegs) 456 outs << " [FpRegs]"; | |
457 if (diffTpc) 458 outs << " [Tpc]"; 459 if (diffTnpc) 460 outs << " [Tnpc]"; 461 if (diffTstate) 462 outs << " [Tstate]"; 463 if (diffTt) 464 outs << " [Tt]"; --- 22 unchanged lines hidden (view full) --- 487 if (diffCansave) 488 outs << " [Cansave]"; 489 if (diffCanrestore) 490 outs << " [Canrestore]"; 491 if (diffOtherwin) 492 outs << " [Otherwin]"; 493 if (diffCleanwin) 494 outs << " [Cleanwin]"; | 428 if (diffTpc) 429 outs << " [Tpc]"; 430 if (diffTnpc) 431 outs << " [Tnpc]"; 432 if (diffTstate) 433 outs << " [Tstate]"; 434 if (diffTt) 435 outs << " [Tt]"; --- 22 unchanged lines hidden (view full) --- 458 if (diffCansave) 459 outs << " [Cansave]"; 460 if (diffCanrestore) 461 outs << " [Canrestore]"; 462 if (diffOtherwin) 463 outs << " [Otherwin]"; 464 if (diffCleanwin) 465 outs << " [Cleanwin]"; |
495 if (diffTlb) 496 outs << " [Tlb]"; | |
497 outs << endl << endl; 498 499 outs << right << setfill(' ') << setw(15) 500 << "M5 PC: " << "0x"<< setw(16) << setfill('0') 501 << hex << m5Pc << endl; 502 outs << setfill(' ') << setw(15) 503 << "Legion PC: " << "0x"<< setw(16) << setfill('0') << hex 504 << lgnPc << endl << endl; --- 28 unchanged lines hidden (view full) --- 533 shared_data->hpstate | (1 << 11)); 534 printRegPair(outs, "Htba", 535 thread->readMiscReg(MISCREG_HTBA), 536 shared_data->htba); 537 printRegPair(outs, "Pstate", 538 thread->readMiscReg(MISCREG_PSTATE), 539 shared_data->pstate); 540 printRegPair(outs, "Y", | 466 outs << endl << endl; 467 468 outs << right << setfill(' ') << setw(15) 469 << "M5 PC: " << "0x"<< setw(16) << setfill('0') 470 << hex << m5Pc << endl; 471 outs << setfill(' ') << setw(15) 472 << "Legion PC: " << "0x"<< setw(16) << setfill('0') << hex 473 << lgnPc << endl << endl; --- 28 unchanged lines hidden (view full) --- 502 shared_data->hpstate | (1 << 11)); 503 printRegPair(outs, "Htba", 504 thread->readMiscReg(MISCREG_HTBA), 505 shared_data->htba); 506 printRegPair(outs, "Pstate", 507 thread->readMiscReg(MISCREG_PSTATE), 508 shared_data->pstate); 509 printRegPair(outs, "Y", |
541 thread->readMiscReg(MISCREG_Y), | 510 //thread->readMiscReg(MISCREG_Y), 511 thread->readMiscReg(NumIntArchRegs + 1), |
542 shared_data->y); 543 printRegPair(outs, "Ccr", | 512 shared_data->y); 513 printRegPair(outs, "Ccr", |
544 thread->readMiscReg(MISCREG_CCR), | 514 //thread->readMiscReg(MISCREG_CCR), 515 thread->readMiscReg(NumIntArchRegs + 2), |
545 shared_data->ccr); 546 printRegPair(outs, "Tl", 547 thread->readMiscReg(MISCREG_TL), 548 shared_data->tl); 549 printRegPair(outs, "Gl", 550 thread->readMiscReg(MISCREG_GL), 551 shared_data->gl); 552 printRegPair(outs, "Asi", 553 thread->readMiscReg(MISCREG_ASI), 554 shared_data->asi); 555 printRegPair(outs, "Pil", 556 thread->readMiscReg(MISCREG_PIL), 557 shared_data->pil); 558 printRegPair(outs, "Cwp", 559 thread->readMiscReg(MISCREG_CWP), 560 shared_data->cwp); 561 printRegPair(outs, "Cansave", | 516 shared_data->ccr); 517 printRegPair(outs, "Tl", 518 thread->readMiscReg(MISCREG_TL), 519 shared_data->tl); 520 printRegPair(outs, "Gl", 521 thread->readMiscReg(MISCREG_GL), 522 shared_data->gl); 523 printRegPair(outs, "Asi", 524 thread->readMiscReg(MISCREG_ASI), 525 shared_data->asi); 526 printRegPair(outs, "Pil", 527 thread->readMiscReg(MISCREG_PIL), 528 shared_data->pil); 529 printRegPair(outs, "Cwp", 530 thread->readMiscReg(MISCREG_CWP), 531 shared_data->cwp); 532 printRegPair(outs, "Cansave", |
562 thread->readMiscReg(MISCREG_CANSAVE), | 533 //thread->readMiscReg(MISCREG_CANSAVE), 534 thread->readIntReg(NumIntArchRegs + 3), |
563 shared_data->cansave); 564 printRegPair(outs, "Canrestore", | 535 shared_data->cansave); 536 printRegPair(outs, "Canrestore", |
565 thread->readMiscReg(MISCREG_CANRESTORE), | 537 //thread->readMiscReg(MISCREG_CANRESTORE), 538 thread->readIntReg(NumIntArchRegs + 4), |
566 shared_data->canrestore); 567 printRegPair(outs, "Otherwin", | 539 shared_data->canrestore); 540 printRegPair(outs, "Otherwin", |
568 thread->readMiscReg(MISCREG_OTHERWIN), | 541 //thread->readMiscReg(MISCREG_OTHERWIN), 542 thread->readIntReg(NumIntArchRegs + 5), |
569 shared_data->otherwin); 570 printRegPair(outs, "Cleanwin", | 543 shared_data->otherwin); 544 printRegPair(outs, "Cleanwin", |
571 thread->readMiscReg(MISCREG_CLEANWIN), | 545 //thread->readMiscReg(MISCREG_CLEANWIN), 546 thread->readIntReg(NumIntArchRegs + 6), |
572 shared_data->cleanwin); 573 outs << endl; 574 for (int i = 1; i <= MaxTL; i++) { 575 printLevelHeader(outs, i); 576 printColumnLabels(outs); 577 thread->setMiscReg(MISCREG_TL, i); 578 printRegPair(outs, "Tpc", 579 thread->readMiscReg(MISCREG_TPC), --- 11 unchanged lines hidden (view full) --- 591 thread->readMiscReg(MISCREG_HTSTATE), 592 shared_data->htstate[i-1]); 593 } 594 thread->setMiscReg(MISCREG_TL, oldTl); 595 outs << endl; 596 597 printSectionHeader(outs, "General Purpose Registers"); 598 static const char * regtypes[4] = {"%g", "%o", "%l", "%i"}; | 547 shared_data->cleanwin); 548 outs << endl; 549 for (int i = 1; i <= MaxTL; i++) { 550 printLevelHeader(outs, i); 551 printColumnLabels(outs); 552 thread->setMiscReg(MISCREG_TL, i); 553 printRegPair(outs, "Tpc", 554 thread->readMiscReg(MISCREG_TPC), --- 11 unchanged lines hidden (view full) --- 566 thread->readMiscReg(MISCREG_HTSTATE), 567 shared_data->htstate[i-1]); 568 } 569 thread->setMiscReg(MISCREG_TL, oldTl); 570 outs << endl; 571 572 printSectionHeader(outs, "General Purpose Registers"); 573 static const char * regtypes[4] = {"%g", "%o", "%l", "%i"}; |
599 for(int y = 0; y < 4; y++) { 600 for(int x = 0; x < 8; x++) { | 574 for(int y = 0; y < 4; y++) 575 { 576 for(int x = 0; x < 8; x++) 577 { |
601 char label[8]; 602 sprintf(label, "%s%d", regtypes[y], x); 603 printRegPair(outs, label, 604 thread->readIntReg(y*8+x), 605 shared_data->intregs[y*8+x]); | 578 char label[8]; 579 sprintf(label, "%s%d", regtypes[y], x); 580 printRegPair(outs, label, 581 thread->readIntReg(y*8+x), 582 shared_data->intregs[y*8+x]); |
583 /*outs << regtypes[y] << x << " " ; 584 outs << "0x" << hex << setw(16) 585 << thread->readIntReg(y*8+x); 586 if (thread->readIntReg(y*8 + x) 587 != shared_data->intregs[y*8+x]) 588 outs << " X "; 589 else 590 outs << " | "; 591 outs << "0x" << setw(16) << hex 592 << shared_data->intregs[y*8+x] 593 << endl;*/ |
|
606 } 607 } | 594 } 595 } |
608 if (diffFpRegs) { 609 for (int x = 0; x < 32; x++) { 610 char label[8]; 611 sprintf(label, "%%f%d", x); 612 printRegPair(outs, label, 613 thread->readFloatRegBits(x,FloatRegFile::DoubleWidth), 614 shared_data->fpregs[x]); 615 } 616 } 617 if (diffTlb) { 618 printColumnLabels(outs); 619 char label[8]; 620 for (int x = 0; x < 64; x++) { 621 if (shared_data->itb[x] != ULL(0xFFFFFFFFFFFFFFFF) || 622 thread->getITBPtr()->TteRead(x) != ULL(0xFFFFFFFFFFFFFFFF)) { 623 sprintf(label, "I-TLB:%02d", x); 624 printRegPair(outs, label, thread->getITBPtr()->TteRead(x), 625 shared_data->itb[x]); 626 } 627 } 628 for (int x = 0; x < 64; x++) { 629 if (shared_data->dtb[x] != ULL(0xFFFFFFFFFFFFFFFF) || 630 thread->getDTBPtr()->TteRead(x) != ULL(0xFFFFFFFFFFFFFFFF)) { 631 sprintf(label, "D-TLB:%02d", x); 632 printRegPair(outs, label, thread->getDTBPtr()->TteRead(x), 633 shared_data->dtb[x]); 634 } 635 } 636 thread->getITBPtr()->dumpAll(); 637 thread->getDTBPtr()->dumpAll(); 638 } | 596 thread->getITBPtr()->dumpAll(); 597 thread->getDTBPtr()->dumpAll(); |
639 640 diffcount++; 641 if (diffcount > 2) 642 fatal("Differences found between Legion and M5\n"); | 598 599 diffcount++; 600 if (diffcount > 2) 601 fatal("Differences found between Legion and M5\n"); |
643 } else 644 diffcount = 0; | 602 } |
645 646 compared = true; 647 shared_data->flags = OWN_LEGION; 648 } 649 } // while 650 } // if not microop 651 } 652#endif --- 109 unchanged lines hidden --- | 603 604 compared = true; 605 shared_data->flags = OWN_LEGION; 606 } 607 } // while 608 } // if not microop 609 } 610#endif --- 109 unchanged lines hidden --- |