decoder.isa (5639:67cc7f0427e7) decoder.isa (5640:c811ced9efc1)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2003-2006 The Regents of The University of Michigan
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

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

693 && xc->readMiscReg(IPR_ICM) != mode_kernel)) {
694 // invalid pal function code, or attempt to do privileged
695 // PAL call in non-kernel mode
696 fault = new UnimplementedOpcodeFault;
697 }
698 else {
699 // check to see if simulator wants to do something special
700 // on this PAL call (including maybe suppress it)
1// -*- mode:c++ -*-
2
3// Copyright (c) 2003-2006 The Regents of The University of Michigan
4// All rights reserved.
5//
6// Redistribution and use in source and binary forms, with or without
7// modification, are permitted provided that the following conditions are
8// met: redistributions of source code must retain the above copyright

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

693 && xc->readMiscReg(IPR_ICM) != mode_kernel)) {
694 // invalid pal function code, or attempt to do privileged
695 // PAL call in non-kernel mode
696 fault = new UnimplementedOpcodeFault;
697 }
698 else {
699 // check to see if simulator wants to do something special
700 // on this PAL call (including maybe suppress it)
701 bool dopal = xc->simPalCheck(palFunc);
701
702 bool dopal = true;
702
703
704 ThreadContext * tc = xc->tcBase();
705 AlphaISA::Kernel::Statistics * kernelStats = tc->getKernelStats();
706 System * system = tc->getSystemPtr();
707 if (kernelStats)
708 kernelStats->callpal(palFunc, tc);
709
710 switch (palFunc) {
711 case PAL::halt:
712 tc->halt();
713 if (--System::numSystemsRunning == 0)
714 exitSimLoop("all cpus halted");
715 break;
716
717 case PAL::bpt:
718 case PAL::bugchk:
719 if (system->breakpoint())
720 dopal = false;
721 break;
722 }
723
703 if (dopal) {
704 xc->setMiscReg(IPR_EXC_ADDR, NPC);
705 NPC = xc->readMiscReg(IPR_PAL_BASE) + palOffset;
706 }
707 }
708 }}, IsNonSpeculative);
709#else
710 0x00: decode PALFUNC {

--- 172 unchanged lines hidden ---
724 if (dopal) {
725 xc->setMiscReg(IPR_EXC_ADDR, NPC);
726 NPC = xc->readMiscReg(IPR_PAL_BASE) + palOffset;
727 }
728 }
729 }}, IsNonSpeculative);
730#else
731 0x00: decode PALFUNC {

--- 172 unchanged lines hidden ---