misc.isa (8628:764346848617) misc.isa (8733:64a7bf8fa56c)
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 },
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", "IsSerializeAfter"])
528 ["IsNonSpeculative", "IsQuiesce",
529 "IsSerializeAfter", "IsUnverifiable"])
529 header_output += BasicDeclare.subst(wfeIop)
530 decoder_output += BasicConstructor.subst(wfeIop)
531 exec_output += QuiescePredOpExecuteWithFixup.subst(wfeIop)
532
533 wfiCode = '''
534#if FULL_SYSTEM
535 // WFI doesn't sleep if interrupts are pending (masked or not)
536 if (xc->tcBase()->getCpuPtr()->getInterruptController()->checkRaw()) {
537 PseudoInst::quiesceSkip(xc->tcBase());
538 } else {
539 PseudoInst::quiesce(xc->tcBase());
540 }
541#endif
542 '''
543 wfiIop = InstObjParams("wfi", "WfiInst", "PredOp", \
544 { "code" : wfiCode, "predicate_test" : predicateTest },
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 },
545 ["IsNonSpeculative", "IsQuiesce", "IsSerializeAfter"])
546 ["IsNonSpeculative", "IsQuiesce",
547 "IsSerializeAfter", "IsUnverifiable"])
546 header_output += BasicDeclare.subst(wfiIop)
547 decoder_output += BasicConstructor.subst(wfiIop)
548 exec_output += QuiescePredOpExecute.subst(wfiIop)
549
550 sevCode = '''
551#if FULL_SYSTEM
552 SevMailbox = 1;
553 System *sys = xc->tcBase()->getSystemPtr();

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

560 // Post Interrupt and wake cpu if needed
561 oc->getCpuPtr()->postInterrupt(INT_SEV, 0);
562 }
563 }
564#endif
565 '''
566 sevIop = InstObjParams("sev", "SevInst", "PredOp", \
567 { "code" : sevCode, "predicate_test" : predicateTest },
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 },
568 ["IsNonSpeculative", "IsSquashAfter"])
570 ["IsNonSpeculative", "IsSquashAfter", "IsUnverifiable"])
569 header_output += BasicDeclare.subst(sevIop)
570 decoder_output += BasicConstructor.subst(sevIop)
571 exec_output += PredOpExecute.subst(sevIop)
572
573 itIop = InstObjParams("it", "ItInst", "PredOp", \
574 { "code" : ";",
575 "predicate_test" : predicateTest },
576 ["IsNonSpeculative", "IsSerializeAfter"])

--- 230 unchanged lines hidden ---
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 ---