decoder.isa (5505:90d6811d5ea6) decoder.isa (5568:d14250d688d2)
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

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

633 }
634
635 format BasicOperate {
636 0xc000: rpcc({{
637#if FULL_SYSTEM
638 /* Rb is a fake dependency so here is a fun way to get
639 * the parser to understand that.
640 */
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

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

633 }
634
635 format BasicOperate {
636 0xc000: rpcc({{
637#if FULL_SYSTEM
638 /* Rb is a fake dependency so here is a fun way to get
639 * the parser to understand that.
640 */
641 Ra = xc->readMiscReg(AlphaISA::IPR_CC) + (Rb & 0);
641 Ra = xc->readMiscReg(IPR_CC) + (Rb & 0);
642
643#else
644 Ra = curTick;
645#endif
646 }}, IsUnverifiable);
647
648 // All of the barrier instructions below do nothing in
649 // their execute() methods (hence the empty code blocks).

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

685 }
686#endif
687 }
688
689#if FULL_SYSTEM
690 0x00: CallPal::call_pal({{
691 if (!palValid ||
692 (palPriv
642
643#else
644 Ra = curTick;
645#endif
646 }}, IsUnverifiable);
647
648 // All of the barrier instructions below do nothing in
649 // their execute() methods (hence the empty code blocks).

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

685 }
686#endif
687 }
688
689#if FULL_SYSTEM
690 0x00: CallPal::call_pal({{
691 if (!palValid ||
692 (palPriv
693 && xc->readMiscReg(AlphaISA::IPR_ICM) != AlphaISA::mode_kernel)) {
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);
702
703 if (dopal) {
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);
702
703 if (dopal) {
704 xc->setMiscReg(AlphaISA::IPR_EXC_ADDR, NPC);
705 NPC = xc->readMiscReg(AlphaISA::IPR_PAL_BASE) + palOffset;
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 {
711 format EmulatedCallPal {
712 0x00: halt ({{
713 exitSimLoop("halt instruction encountered");

--- 160 unchanged lines hidden ---
706 }
707 }
708 }}, IsNonSpeculative);
709#else
710 0x00: decode PALFUNC {
711 format EmulatedCallPal {
712 0x00: halt ({{
713 exitSimLoop("halt instruction encountered");

--- 160 unchanged lines hidden ---