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 --- |