decoder.isa (6804:e8e64ad04260) | decoder.isa (7720:65d338a8dba4) |
---|---|
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 --- 842 unchanged lines hidden (view full) --- 851#if FULL_SYSTEM 852 0x00: CallPal::call_pal({{ 853 if (!palValid || 854 (palPriv 855 && xc->readMiscReg(IPR_ICM) != mode_kernel)) { 856 // invalid pal function code, or attempt to do privileged 857 // PAL call in non-kernel mode 858 fault = new UnimplementedOpcodeFault; | 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 --- 842 unchanged lines hidden (view full) --- 851#if FULL_SYSTEM 852 0x00: CallPal::call_pal({{ 853 if (!palValid || 854 (palPriv 855 && xc->readMiscReg(IPR_ICM) != mode_kernel)) { 856 // invalid pal function code, or attempt to do privileged 857 // PAL call in non-kernel mode 858 fault = new UnimplementedOpcodeFault; |
859 } 860 else { | 859 } else { |
861 // check to see if simulator wants to do something special 862 // on this PAL call (including maybe suppress it) 863 bool dopal = xc->simPalCheck(palFunc); 864 865 if (dopal) { | 860 // check to see if simulator wants to do something special 861 // on this PAL call (including maybe suppress it) 862 bool dopal = xc->simPalCheck(palFunc); 863 864 if (dopal) { |
866 xc->setMiscReg(IPR_EXC_ADDR, NPC); 867 NPC = xc->readMiscReg(IPR_PAL_BASE) + palOffset; | 865 PCState pc = PCS; 866 xc->setMiscReg(IPR_EXC_ADDR, pc.npc()); 867 pc.npc(xc->readMiscReg(IPR_PAL_BASE) + palOffset); 868 PCS = pc; |
868 } 869 } 870 }}, IsNonSpeculative); 871#else 872 0x00: decode PALFUNC { 873 format EmulatedCallPal { 874 0x00: halt ({{ 875 exitSimLoop("halt instruction encountered"); --- 149 unchanged lines hidden (view full) --- 1025 PseudoInst::switchcpu(xc->tcBase()); 1026 }}, IsNonSpeculative); 1027#if FULL_SYSTEM 1028 0x53: m5addsymbol({{ 1029 PseudoInst::addsymbol(xc->tcBase(), R16, R17); 1030 }}, IsNonSpeculative); 1031#endif 1032 0x54: m5panic({{ | 869 } 870 } 871 }}, IsNonSpeculative); 872#else 873 0x00: decode PALFUNC { 874 format EmulatedCallPal { 875 0x00: halt ({{ 876 exitSimLoop("halt instruction encountered"); --- 149 unchanged lines hidden (view full) --- 1026 PseudoInst::switchcpu(xc->tcBase()); 1027 }}, IsNonSpeculative); 1028#if FULL_SYSTEM 1029 0x53: m5addsymbol({{ 1030 PseudoInst::addsymbol(xc->tcBase(), R16, R17); 1031 }}, IsNonSpeculative); 1032#endif 1033 0x54: m5panic({{ |
1033 panic("M5 panic instruction called at pc=%#x.", xc->readPC()); | 1034 panic("M5 panic instruction called at pc=%#x.", 1035 xc->pcState().pc()); |
1034 }}, IsNonSpeculative); 1035#define CPANN(lbl) CPA::cpa()->lbl(xc->tcBase()) 1036 0x55: decode RA { 1037 0x00: m5a_old({{ 1038 panic("Deprecated M5 annotate instruction executed at pc=%#x\n", | 1036 }}, IsNonSpeculative); 1037#define CPANN(lbl) CPA::cpa()->lbl(xc->tcBase()) 1038 0x55: decode RA { 1039 0x00: m5a_old({{ 1040 panic("Deprecated M5 annotate instruction executed at pc=%#x\n", |
1039 xc->readPC()); | 1041 xc->pcState().pc()); |
1040 }}, IsNonSpeculative); 1041 0x01: m5a_bsm({{ 1042 CPANN(swSmBegin); 1043 }}, IsNonSpeculative); 1044 0x02: m5a_esm({{ 1045 CPANN(swSmEnd); 1046 }}, IsNonSpeculative); 1047 0x03: m5a_begin({{ --- 58 unchanged lines hidden --- | 1042 }}, IsNonSpeculative); 1043 0x01: m5a_bsm({{ 1044 CPANN(swSmBegin); 1045 }}, IsNonSpeculative); 1046 0x02: m5a_esm({{ 1047 CPANN(swSmEnd); 1048 }}, IsNonSpeculative); 1049 0x03: m5a_begin({{ --- 58 unchanged lines hidden --- |