cp_annotate.cc (11793:ef606668d247) cp_annotate.cc (14018:9d2153431f44)
1/*
2 * Copyright (c) 2006-2009 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;

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

165 Arguments args(tc);
166 std::string st;
167 Addr junk;
168 char sm[50];
169 if (!TheISA::inUserMode(tc))
170 debugSymbolTable->findNearestSymbol(
171 tc->readIntReg(ReturnAddressReg), st, junk);
172
1/*
2 * Copyright (c) 2006-2009 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;

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

165 Arguments args(tc);
166 std::string st;
167 Addr junk;
168 char sm[50];
169 if (!TheISA::inUserMode(tc))
170 debugSymbolTable->findNearestSymbol(
171 tc->readIntReg(ReturnAddressReg), st, junk);
172
173 CopyStringOut(tc, sm, args[0], 50);
173 tc->getVirtProxy().readString(sm, args[0], 50);
174 System *sys = tc->getSystemPtr();
175 StringWrap name(sys->name());
176
177 if (!sm[0])
178 warn("Got null SM at tick %d\n", curTick());
179
180 int sysi = getSys(sys);
181 int smi = getSm(sysi, sm, args[1]);

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

251void
252CPA::swSmEnd(ThreadContext *tc)
253{
254 if (!enabled())
255 return;
256
257 Arguments args(tc);
258 char sm[50];
174 System *sys = tc->getSystemPtr();
175 StringWrap name(sys->name());
176
177 if (!sm[0])
178 warn("Got null SM at tick %d\n", curTick());
179
180 int sysi = getSys(sys);
181 int smi = getSm(sysi, sm, args[1]);

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

251void
252CPA::swSmEnd(ThreadContext *tc)
253{
254 if (!enabled())
255 return;
256
257 Arguments args(tc);
258 char sm[50];
259 CopyStringOut(tc, sm, args[0], 50);
259 tc->getVirtProxy().readString(sm, args[0], 50);
260 System *sys = tc->getSystemPtr();
261 doSwSmEnd(sys, tc->contextId(), sm, getFrame(tc));
262}
263
264void
265CPA::doSwSmEnd(System *sys, int cpuid, string sm, uint64_t frame)
266{
267 int sysi = getSys(sys);

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

319void
320CPA::swExplictBegin(ThreadContext *tc)
321{
322 if (!enabled())
323 return;
324
325 Arguments args(tc);
326 char st[50];
260 System *sys = tc->getSystemPtr();
261 doSwSmEnd(sys, tc->contextId(), sm, getFrame(tc));
262}
263
264void
265CPA::doSwSmEnd(System *sys, int cpuid, string sm, uint64_t frame)
266{
267 int sysi = getSys(sys);

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

319void
320CPA::swExplictBegin(ThreadContext *tc)
321{
322 if (!enabled())
323 return;
324
325 Arguments args(tc);
326 char st[50];
327 CopyStringOut(tc, st, args[1], 50);
327 tc->getVirtProxy().readString(st, args[1], 50);
328
329 StringWrap name(tc->getSystemPtr()->name());
330 DPRINTF(Annotate, "Explict begin of state %s\n", st);
331 uint32_t flags = args[0];
332 if (flags & FL_BAD)
333 warn("BAD state encountered: at cycle %d: %s\n", curTick(), st);
334 swBegin(tc->getSystemPtr(), tc->contextId(), st, getFrame(tc), true, args[0]);
335}

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

423CPA::swQ(ThreadContext *tc)
424{
425 if (!enabled())
426 return;
427
428 char q[50];
429 Arguments args(tc);
430 uint64_t id = args[0];
328
329 StringWrap name(tc->getSystemPtr()->name());
330 DPRINTF(Annotate, "Explict begin of state %s\n", st);
331 uint32_t flags = args[0];
332 if (flags & FL_BAD)
333 warn("BAD state encountered: at cycle %d: %s\n", curTick(), st);
334 swBegin(tc->getSystemPtr(), tc->contextId(), st, getFrame(tc), true, args[0]);
335}

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

423CPA::swQ(ThreadContext *tc)
424{
425 if (!enabled())
426 return;
427
428 char q[50];
429 Arguments args(tc);
430 uint64_t id = args[0];
431 CopyStringOut(tc, q, args[1], 50);
431 tc->getVirtProxy().readString(q, args[1], 50);
432 int32_t count = args[2];
433 System *sys = tc->getSystemPtr();
434
435 int sysi = getSys(sys);
436 StackId sid = StackId(sysi, getFrame(tc));
437 if (!smStack[sid].size())
438 return;
439 int smi = smStack[sid].back();

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

454CPA::swDq(ThreadContext *tc)
455{
456 if (!enabled())
457 return;
458
459 char q[50];
460 Arguments args(tc);
461 uint64_t id = args[0];
432 int32_t count = args[2];
433 System *sys = tc->getSystemPtr();
434
435 int sysi = getSys(sys);
436 StackId sid = StackId(sysi, getFrame(tc));
437 if (!smStack[sid].size())
438 return;
439 int smi = smStack[sid].back();

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

454CPA::swDq(ThreadContext *tc)
455{
456 if (!enabled())
457 return;
458
459 char q[50];
460 Arguments args(tc);
461 uint64_t id = args[0];
462 CopyStringOut(tc, q, args[1], 50);
462 tc->getVirtProxy().readString(q, args[1], 50);
463 int32_t count = args[2];
464 System *sys = tc->getSystemPtr();
465
466 int sysi = getSys(sys);
467 StackId sid = StackId(sysi, getFrame(tc));
468 if (!smStack[sid].size())
469 return;
470 int smi = smStack[sid].back();

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

483CPA::swPq(ThreadContext *tc)
484{
485 if (!enabled())
486 return;
487
488 char q[50];
489 Arguments args(tc);
490 uint64_t id = args[0];
463 int32_t count = args[2];
464 System *sys = tc->getSystemPtr();
465
466 int sysi = getSys(sys);
467 StackId sid = StackId(sysi, getFrame(tc));
468 if (!smStack[sid].size())
469 return;
470 int smi = smStack[sid].back();

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

483CPA::swPq(ThreadContext *tc)
484{
485 if (!enabled())
486 return;
487
488 char q[50];
489 Arguments args(tc);
490 uint64_t id = args[0];
491 CopyStringOut(tc, q, args[1], 50);
491 tc->getVirtProxy().readString(q, args[1], 50);
492 System *sys = tc->getSystemPtr();
493 int32_t count = args[2];
494
495 int sysi = getSys(sys);
496 StackId sid = StackId(sysi, getFrame(tc));
497 if (!smStack[sid].size())
498 return;
499 int smi = smStack[sid].back();

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

518CPA::swRq(ThreadContext *tc)
519{
520 if (!enabled())
521 return;
522
523 char q[50];
524 Arguments args(tc);
525 uint64_t id = args[0];
492 System *sys = tc->getSystemPtr();
493 int32_t count = args[2];
494
495 int sysi = getSys(sys);
496 StackId sid = StackId(sysi, getFrame(tc));
497 if (!smStack[sid].size())
498 return;
499 int smi = smStack[sid].back();

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

518CPA::swRq(ThreadContext *tc)
519{
520 if (!enabled())
521 return;
522
523 char q[50];
524 Arguments args(tc);
525 uint64_t id = args[0];
526 CopyStringOut(tc, q, args[1], 50);
526 tc->getVirtProxy().readString(q, args[1], 50);
527 System *sys = tc->getSystemPtr();
528 int32_t count = args[2];
529
530 int sysi = getSys(sys);
531 StackId sid = StackId(sysi, getFrame(tc));
532 if (!smStack[sid].size())
533 return;
534 int smi = smStack[sid].back();

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

549CPA::swWf(ThreadContext *tc)
550{
551 if (!enabled())
552 return;
553
554 char q[50];
555 Arguments args(tc);
556 uint64_t id = args[0];
527 System *sys = tc->getSystemPtr();
528 int32_t count = args[2];
529
530 int sysi = getSys(sys);
531 StackId sid = StackId(sysi, getFrame(tc));
532 if (!smStack[sid].size())
533 return;
534 int smi = smStack[sid].back();

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

549CPA::swWf(ThreadContext *tc)
550{
551 if (!enabled())
552 return;
553
554 char q[50];
555 Arguments args(tc);
556 uint64_t id = args[0];
557 CopyStringOut(tc, q, args[1], 50);
557 tc->getVirtProxy().readString(q, args[1], 50);
558 System *sys = tc->getSystemPtr();
559 int32_t count = args[3];
560
561 int sysi = getSys(sys);
562 StackId sid = StackId(sysi, getFrame(tc));
563 if (!smStack[sid].size())
564 return;
565 int smi = smStack[sid].back();
566 int qi = getQ(sysi, q, id);
567 add(OP_WAIT_FULL, FL_NONE, tc->contextId(), smi, qi, count);
568
569 if (!!args[2]) {
570 char sm[50];
558 System *sys = tc->getSystemPtr();
559 int32_t count = args[3];
560
561 int sysi = getSys(sys);
562 StackId sid = StackId(sysi, getFrame(tc));
563 if (!smStack[sid].size())
564 return;
565 int smi = smStack[sid].back();
566 int qi = getQ(sysi, q, id);
567 add(OP_WAIT_FULL, FL_NONE, tc->contextId(), smi, qi, count);
568
569 if (!!args[2]) {
570 char sm[50];
571 CopyStringOut(tc, sm, args[2], 50);
571 tc->getVirtProxy().readString(sm, args[2], 50);
572 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
573 }
574}
575
576void
577CPA::swWe(ThreadContext *tc)
578{
579 if (!enabled())
580 return;
581
582 char q[50];
583 Arguments args(tc);
584 uint64_t id = args[0];
572 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
573 }
574}
575
576void
577CPA::swWe(ThreadContext *tc)
578{
579 if (!enabled())
580 return;
581
582 char q[50];
583 Arguments args(tc);
584 uint64_t id = args[0];
585 CopyStringOut(tc, q, args[1], 50);
585 tc->getVirtProxy().readString(q, args[1], 50);
586 System *sys = tc->getSystemPtr();
587 int32_t count = args[3];
588
589 int sysi = getSys(sys);
590 StackId sid = StackId(sysi, getFrame(tc));
591 if (!smStack[sid].size())
592 return;
593 int smi = smStack[sid].back();
594 int qi = getQ(sysi, q, id);
595 add(OP_WAIT_EMPTY, FL_NONE, tc->contextId(), smi, qi, count);
596
597 if (!!args[2]) {
598 char sm[50];
586 System *sys = tc->getSystemPtr();
587 int32_t count = args[3];
588
589 int sysi = getSys(sys);
590 StackId sid = StackId(sysi, getFrame(tc));
591 if (!smStack[sid].size())
592 return;
593 int smi = smStack[sid].back();
594 int qi = getQ(sysi, q, id);
595 add(OP_WAIT_EMPTY, FL_NONE, tc->contextId(), smi, qi, count);
596
597 if (!!args[2]) {
598 char sm[50];
599 CopyStringOut(tc, sm, args[2], 50);
599 tc->getVirtProxy().readString(sm, args[2], 50);
600 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
601 }
602}
603
604void
605CPA::swSq(ThreadContext *tc)
606{
607 if (!enabled())
608 return;
609
610 char q[50];
611 Arguments args(tc);
612 uint64_t id = args[0];
600 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
601 }
602}
603
604void
605CPA::swSq(ThreadContext *tc)
606{
607 if (!enabled())
608 return;
609
610 char q[50];
611 Arguments args(tc);
612 uint64_t id = args[0];
613 CopyStringOut(tc, q, args[1], 50);
613 tc->getVirtProxy().readString(q, args[1], 50);
614 System *sys = tc->getSystemPtr();
615 StringWrap name(sys->name());
616 int32_t size = args[2];
617 int flags = args[3];
618
619 int sysi = getSys(sys);
620 StackId sid = StackId(sysi, getFrame(tc));
621 if (!smStack[sid].size())

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

673CPA::swAq(ThreadContext *tc)
674{
675 if (!enabled())
676 return;
677
678 char q[50];
679 Arguments args(tc);
680 uint64_t id = args[0];
614 System *sys = tc->getSystemPtr();
615 StringWrap name(sys->name());
616 int32_t size = args[2];
617 int flags = args[3];
618
619 int sysi = getSys(sys);
620 StackId sid = StackId(sysi, getFrame(tc));
621 if (!smStack[sid].size())

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

673CPA::swAq(ThreadContext *tc)
674{
675 if (!enabled())
676 return;
677
678 char q[50];
679 Arguments args(tc);
680 uint64_t id = args[0];
681 CopyStringOut(tc, q, args[1], 50);
681 tc->getVirtProxy().readString(q, args[1], 50);
682 System *sys = tc->getSystemPtr();
683 StringWrap name(sys->name());
684 int32_t size = args[2];
685
686 int sysi = getSys(sys);
687 int qi = getQ(sysi, q, id);
688 if (qBytes[qi-1] != size) {
689 DPRINTF(AnnotateQ, "Queue %s [%#x] has inconsintant size\n", q, id);

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

709void
710CPA::swLink(ThreadContext *tc)
711{
712 if (!enabled())
713 return;
714
715 char lsm[50];
716 Arguments args(tc);
682 System *sys = tc->getSystemPtr();
683 StringWrap name(sys->name());
684 int32_t size = args[2];
685
686 int sysi = getSys(sys);
687 int qi = getQ(sysi, q, id);
688 if (qBytes[qi-1] != size) {
689 DPRINTF(AnnotateQ, "Queue %s [%#x] has inconsintant size\n", q, id);

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

709void
710CPA::swLink(ThreadContext *tc)
711{
712 if (!enabled())
713 return;
714
715 char lsm[50];
716 Arguments args(tc);
717 CopyStringOut(tc, lsm, args[0], 50);
717 tc->getVirtProxy().readString(lsm, args[0], 50);
718 System *sys = tc->getSystemPtr();
719 StringWrap name(sys->name());
720
721 int sysi = getSys(sys);
722 StackId sid = StackId(sysi, getFrame(tc));
723 if (!smStack[sid].size())
724 return;
725 int smi = smStack[sid].back();

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

733 lsmi, lnMap[lsmi]);
734 assert(lnMap[lsmi] == 0);
735 lnMap[lsmi] = smi;
736
737 add(OP_LINK, FL_NONE, tc->contextId(), smi, lsmi);
738
739 if (!!args[2]) {
740 char sm[50];
718 System *sys = tc->getSystemPtr();
719 StringWrap name(sys->name());
720
721 int sysi = getSys(sys);
722 StackId sid = StackId(sysi, getFrame(tc));
723 if (!smStack[sid].size())
724 return;
725 int smi = smStack[sid].back();

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

733 lsmi, lnMap[lsmi]);
734 assert(lnMap[lsmi] == 0);
735 lnMap[lsmi] = smi;
736
737 add(OP_LINK, FL_NONE, tc->contextId(), smi, lsmi);
738
739 if (!!args[2]) {
740 char sm[50];
741 CopyStringOut(tc, sm, args[2], 50);
741 tc->getVirtProxy().readString(sm, args[2], 50);
742 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
743 }
744}
745
746void
747CPA::swIdentify(ThreadContext *tc)
748{
749 if (!enabled())

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

784void
785CPA::swSyscallLink(ThreadContext *tc)
786{
787 if (!enabled())
788 return;
789
790 char lsm[50];
791 Arguments args(tc);
742 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
743 }
744}
745
746void
747CPA::swIdentify(ThreadContext *tc)
748{
749 if (!enabled())

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

784void
785CPA::swSyscallLink(ThreadContext *tc)
786{
787 if (!enabled())
788 return;
789
790 char lsm[50];
791 Arguments args(tc);
792 CopyStringOut(tc, lsm, args[0], 50);
792 tc->getVirtProxy().readString(lsm, args[0], 50);
793 System *sys = tc->getSystemPtr();
794 StringWrap name(sys->name());
795 int sysi = getSys(sys);
796
797 Id id = Id(lsm, getFrame(tc));
798 StackId sid = StackId(sysi, getFrame(tc));
799
800 if (!smStack[sid].size())

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

810 "scLinks already contains entry for system %d %s[%x] of %d\n",
811 sysi, lsm, getFrame(tc), scLinks[sysi-1][id]);
812 assert(scLinks[sysi-1][id] == 0);
813 scLinks[sysi-1][id] = add(OP_LINK, FL_NONE, tc->contextId(), smi, 0xFFFF);
814 scLinks[sysi-1][id]->dump = false;
815
816 if (!!args[1]) {
817 char sm[50];
793 System *sys = tc->getSystemPtr();
794 StringWrap name(sys->name());
795 int sysi = getSys(sys);
796
797 Id id = Id(lsm, getFrame(tc));
798 StackId sid = StackId(sysi, getFrame(tc));
799
800 if (!smStack[sid].size())

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

810 "scLinks already contains entry for system %d %s[%x] of %d\n",
811 sysi, lsm, getFrame(tc), scLinks[sysi-1][id]);
812 assert(scLinks[sysi-1][id] == 0);
813 scLinks[sysi-1][id] = add(OP_LINK, FL_NONE, tc->contextId(), smi, 0xFFFF);
814 scLinks[sysi-1][id]->dump = false;
815
816 if (!!args[1]) {
817 char sm[50];
818 CopyStringOut(tc, sm, args[1], 50);
818 tc->getVirtProxy().readString(sm, args[1], 50);
819 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
820 }
821}
822
823CPA::AnnDataPtr
824CPA::add(int t, int f, int c, int sm, int stq, int32_t d)
825{
826 AnnDataPtr an = std::make_shared<AnnotateData>();

--- 585 unchanged lines hidden ---
819 doSwSmEnd(tc->getSystemPtr(), tc->contextId(), sm, getFrame(tc));
820 }
821}
822
823CPA::AnnDataPtr
824CPA::add(int t, int f, int c, int sm, int stq, int32_t d)
825{
826 AnnDataPtr an = std::make_shared<AnnotateData>();

--- 585 unchanged lines hidden ---