Deleted Added
sdiff udiff text old ( 8738:66bf413b0d5b ) new ( 8780:89e0822462a1 )
full compact
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

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

816 0: FailUnimpl::rs_se();
817 default: BasicOperate::rs({{
818 Ra = IntrFlag;
819 IntrFlag = 1;
820 }}, IsNonSpeculative, IsUnverifiable);
821 }
822 }
823
824 0x00: decode FullSystem {
825 0: decode PALFUNC {
826 format EmulatedCallPal {
827 0x00: halt ({{
828 exitSimLoop("halt instruction encountered");
829 }}, IsNonSpeculative);
830 0x83: callsys({{
831 xc->syscall(R0);
832 }}, IsSerializeAfter, IsNonSpeculative, IsSyscall);
833 // Read uniq reg into ABI return value register (r0)
834 0x9e: rduniq({{ R0 = Runiq; }}, IsIprAccess);
835 // Write uniq reg with value from ABI arg register (r16)
836 0x9f: wruniq({{ Runiq = R16; }}, IsIprAccess);
837 }
838 }
839 default: CallPal::call_pal({{
840 if (!palValid ||
841 (palPriv
842 && xc->readMiscReg(IPR_ICM) != mode_kernel)) {
843 // invalid pal function code, or attempt to do privileged
844 // PAL call in non-kernel mode
845 fault = new UnimplementedOpcodeFault;
846 } else {
847 // check to see if simulator wants to do something special
848 // on this PAL call (including maybe suppress it)
849 bool dopal = xc->simPalCheck(palFunc);
850
851 if (dopal) {
852 xc->setMiscReg(IPR_EXC_ADDR, NPC);
853 NPC = xc->readMiscReg(IPR_PAL_BASE) + palOffset;
854 }
855 }
856 }}, IsNonSpeculative);
857 }
858
859 0x1b: decode PALMODE {
860 0: OpcdecFault::hw_st_quad();
861 1: decode HW_LDST_QUAD {
862 format HwLoad {
863 0: hw_ld({{ EA = (Rb + disp) & ~3; }}, {{ Ra = Mem_ul; }},
864 L, IsSerializing, IsSerializeBefore);
865 1: hw_ld({{ EA = (Rb + disp) & ~7; }}, {{ Ra = Mem_uq; }},
866 Q, IsSerializing, IsSerializeBefore);

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

917
918 0x1e: decode PALMODE {
919 0: OpcdecFault::hw_rei();
920 format BasicOperate {
921 1: hw_rei({{ xc->hwrei(); }}, IsSerializing, IsSerializeBefore);
922 }
923 }
924
925 format BasicOperate {
926 // M5 special opcodes use the reserved 0x01 opcode space
927 0x01: decode M5FUNC {
928 0x00: arm({{
929 PseudoInst::arm(xc->tcBase());
930 }}, IsNonSpeculative);
931 0x01: quiesce({{
932 PseudoInst::quiesce(xc->tcBase());

--- 133 unchanged lines hidden ---