Deleted Added
sdiff udiff text old ( 8209:9e3f7f00fa90 ) new ( 8285:c38905a6fa32 )
full compact
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

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

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

--- 236 unchanged lines hidden ---