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 --- 511 unchanged lines hidden (view full) --- 520 // and SEV interrupts 521 SevMailbox = 1; 522#endif 523 ''' 524 wfeIop = InstObjParams("wfe", "WfeInst", "PredOp", \ 525 { "code" : wfeCode, 526 "pred_fixup" : wfePredFixUpCode, 527 "predicate_test" : predicateTest }, |
528 ["IsNonSpeculative", "IsQuiesce", 529 "IsSerializeAfter", "IsUnverifiable"]) |
530 header_output += BasicDeclare.subst(wfeIop) 531 decoder_output += BasicConstructor.subst(wfeIop) 532 exec_output += QuiescePredOpExecuteWithFixup.subst(wfeIop) 533 534 wfiCode = ''' 535#if FULL_SYSTEM 536 // WFI doesn't sleep if interrupts are pending (masked or not) 537 if (xc->tcBase()->getCpuPtr()->getInterruptController()->checkRaw()) { 538 PseudoInst::quiesceSkip(xc->tcBase()); 539 } else { 540 PseudoInst::quiesce(xc->tcBase()); 541 } 542#endif 543 ''' 544 wfiIop = InstObjParams("wfi", "WfiInst", "PredOp", \ 545 { "code" : wfiCode, "predicate_test" : predicateTest }, |
546 ["IsNonSpeculative", "IsQuiesce", 547 "IsSerializeAfter", "IsUnverifiable"]) |
548 header_output += BasicDeclare.subst(wfiIop) 549 decoder_output += BasicConstructor.subst(wfiIop) 550 exec_output += QuiescePredOpExecute.subst(wfiIop) 551 552 sevCode = ''' 553#if FULL_SYSTEM 554 SevMailbox = 1; 555 System *sys = xc->tcBase()->getSystemPtr(); --- 6 unchanged lines hidden (view full) --- 562 // Post Interrupt and wake cpu if needed 563 oc->getCpuPtr()->postInterrupt(INT_SEV, 0); 564 } 565 } 566#endif 567 ''' 568 sevIop = InstObjParams("sev", "SevInst", "PredOp", \ 569 { "code" : sevCode, "predicate_test" : predicateTest }, |
570 ["IsNonSpeculative", "IsSquashAfter", "IsUnverifiable"]) |
571 header_output += BasicDeclare.subst(sevIop) 572 decoder_output += BasicConstructor.subst(sevIop) 573 exec_output += PredOpExecute.subst(sevIop) 574 575 itIop = InstObjParams("it", "ItInst", "PredOp", \ 576 { "code" : ";", 577 "predicate_test" : predicateTest }, 578 ["IsNonSpeculative", "IsSerializeAfter"]) --- 230 unchanged lines hidden --- |