misc.isa (8068:749581c26e71) misc.isa (8142:e08035e1a1f6)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
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

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

486 yieldIop = InstObjParams("yield", "YieldInst", "PredOp", \
487 { "code" : "", "predicate_test" : predicateTest })
488 header_output += BasicDeclare.subst(yieldIop)
489 decoder_output += BasicConstructor.subst(yieldIop)
490 exec_output += PredOpExecute.subst(yieldIop)
491
492 wfeCode = '''
493#if FULL_SYSTEM
1// -*- mode:c++ -*-
2
3// Copyright (c) 2010 ARM Limited
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

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

486 yieldIop = InstObjParams("yield", "YieldInst", "PredOp", \
487 { "code" : "", "predicate_test" : predicateTest })
488 header_output += BasicDeclare.subst(yieldIop)
489 decoder_output += BasicConstructor.subst(yieldIop)
490 exec_output += PredOpExecute.subst(yieldIop)
491
492 wfeCode = '''
493#if FULL_SYSTEM
494 if (SevMailbox)
494 if (SevMailbox) {
495 SevMailbox = 0;
495 SevMailbox = 0;
496 else
496 PseudoInst::quiesceSkip(xc->tcBase());
497 }
498 else {
497 PseudoInst::quiesce(xc->tcBase());
499 PseudoInst::quiesce(xc->tcBase());
500 }
498#endif
499 '''
500 wfeIop = InstObjParams("wfe", "WfeInst", "PredOp", \
501 { "code" : wfeCode, "predicate_test" : predicateTest },
502 ["IsNonSpeculative", "IsQuiesce", "IsSerializeAfter"])
503 header_output += BasicDeclare.subst(wfeIop)
504 decoder_output += BasicConstructor.subst(wfeIop)
501#endif
502 '''
503 wfeIop = InstObjParams("wfe", "WfeInst", "PredOp", \
504 { "code" : wfeCode, "predicate_test" : predicateTest },
505 ["IsNonSpeculative", "IsQuiesce", "IsSerializeAfter"])
506 header_output += BasicDeclare.subst(wfeIop)
507 decoder_output += BasicConstructor.subst(wfeIop)
505 exec_output += PredOpExecute.subst(wfeIop)
508 exec_output += QuiescePredOpExecute.subst(wfeIop)
506
507 wfiCode = '''
508#if FULL_SYSTEM
509 PseudoInst::quiesce(xc->tcBase());
510#endif
511 '''
512 wfiIop = InstObjParams("wfi", "WfiInst", "PredOp", \
513 { "code" : wfiCode, "predicate_test" : predicateTest },
509
510 wfiCode = '''
511#if FULL_SYSTEM
512 PseudoInst::quiesce(xc->tcBase());
513#endif
514 '''
515 wfiIop = InstObjParams("wfi", "WfiInst", "PredOp", \
516 { "code" : wfiCode, "predicate_test" : predicateTest },
514 ["IsNonSpeculative", "IsQuiesce"])
517 ["IsNonSpeculative", "IsQuiesce", "IsSerializeAfter"])
515 header_output += BasicDeclare.subst(wfiIop)
516 decoder_output += BasicConstructor.subst(wfiIop)
518 header_output += BasicDeclare.subst(wfiIop)
519 decoder_output += BasicConstructor.subst(wfiIop)
517 exec_output += PredOpExecute.subst(wfiIop)
520 exec_output += QuiescePredOpExecute.subst(wfiIop)
518
519 sevCode = '''
520 // Need a way for O3 to not scoreboard these accesses as pipe flushes.
521
522 sevCode = '''
523 // Need a way for O3 to not scoreboard these accesses as pipe flushes.
524 SevMailbox = 1;
521 System *sys = xc->tcBase()->getSystemPtr();
522 for (int x = 0; x < sys->numContexts(); x++) {
523 ThreadContext *oc = sys->getThreadContext(x);
525 System *sys = xc->tcBase()->getSystemPtr();
526 for (int x = 0; x < sys->numContexts(); x++) {
527 ThreadContext *oc = sys->getThreadContext(x);
524 oc->setMiscReg(MISCREG_SEV_MAILBOX, 1);
528 if (oc != xc->tcBase()) {
529 oc->setMiscReg(MISCREG_SEV_MAILBOX, 1);
530 }
525 }
526 '''
527 sevIop = InstObjParams("sev", "SevInst", "PredOp", \
528 { "code" : sevCode, "predicate_test" : predicateTest },
531 }
532 '''
533 sevIop = InstObjParams("sev", "SevInst", "PredOp", \
534 { "code" : sevCode, "predicate_test" : predicateTest },
529 ["IsNonSpeculative", "IsQuiesce", "IsSerializeAfter"])
535 ["IsNonSpeculative", "IsSquashAfter"])
530 header_output += BasicDeclare.subst(sevIop)
531 decoder_output += BasicConstructor.subst(sevIop)
532 exec_output += PredOpExecute.subst(sevIop)
533
534 itIop = InstObjParams("it", "ItInst", "PredOp", \
535 { "code" : "Itstate = machInst.newItstate;",
536 "predicate_test" : predicateTest },
537 ["IsNonSpeculative", "IsSerializeAfter"])

--- 234 unchanged lines hidden ---
536 header_output += BasicDeclare.subst(sevIop)
537 decoder_output += BasicConstructor.subst(sevIop)
538 exec_output += PredOpExecute.subst(sevIop)
539
540 itIop = InstObjParams("it", "ItInst", "PredOp", \
541 { "code" : "Itstate = machInst.newItstate;",
542 "predicate_test" : predicateTest },
543 ["IsNonSpeculative", "IsSerializeAfter"])

--- 234 unchanged lines hidden ---