decoder.isa (3901:64319816e403) decoder.isa (3909:3e99eab5aed7)
1// Copyright (c) 2006-2007 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

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

466 //0x0F should cause an illegal instruction exception
467 0x10: Priv::rdprgl({{Rd = Gl;}});
468 //0x11-0x1F should cause an illegal instruction exception
469 }
470 0x2B: BasicOperate::flushw({{
471 if(NWindows - 2 - Cansave == 0)
472 {
473 if(Otherwin)
1// Copyright (c) 2006-2007 The Regents of The University of Michigan
2// All rights reserved.
3//
4// Redistribution and use in source and binary forms, with or without
5// modification, are permitted provided that the following conditions are
6// met: redistributions of source code must retain the above copyright
7// notice, this list of conditions and the following disclaimer;
8// redistributions in binary form must reproduce the above copyright

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

466 //0x0F should cause an illegal instruction exception
467 0x10: Priv::rdprgl({{Rd = Gl;}});
468 //0x11-0x1F should cause an illegal instruction exception
469 }
470 0x2B: BasicOperate::flushw({{
471 if(NWindows - 2 - Cansave == 0)
472 {
473 if(Otherwin)
474 fault = new SpillNOther(Wstate<5:3>);
474 fault = new SpillNOther(4*Wstate<5:3>);
475 else
475 else
476 fault = new SpillNNormal(Wstate<2:0>);
476 fault = new SpillNNormal(4*Wstate<2:0>);
477 }
478 }});
479 0x2C: decode MOVCC3
480 {
481 0x0: Trap::movccfcc({{fault = new FpDisabled;}});
482 0x1: decode CC
483 {
484 0x0: movcci({{

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

888 fault = new MemAddressNotAligned;
889 else
890 NNPC = target;
891 if(fault == NoFault)
892 {
893 if(Canrestore == 0)
894 {
895 if(Otherwin)
477 }
478 }});
479 0x2C: decode MOVCC3
480 {
481 0x0: Trap::movccfcc({{fault = new FpDisabled;}});
482 0x1: decode CC
483 {
484 0x0: movcci({{

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

888 fault = new MemAddressNotAligned;
889 else
890 NNPC = target;
891 if(fault == NoFault)
892 {
893 if(Canrestore == 0)
894 {
895 if(Otherwin)
896 fault = new FillNOther(Wstate<5:3>);
896 fault = new FillNOther(4*Wstate<5:3>);
897 else
897 else
898 fault = new FillNNormal(Wstate<2:0>);
898 fault = new FillNNormal(4*Wstate<2:0>);
899 }
900 else
901 {
902 //CWP should be set directly so that it always happens
903 //Also, this will allow writing to the new window and
904 //reading from the old one
905 Cwp = (Cwp - 1 + NWindows) % NWindows;
906 Cansave = Cansave + 1;

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

944 0x3B: Nop::flush({{/*Instruction memory flush*/}});
945 0x3C: save({{
946 //CWP should be set directly so that it always happens
947 //Also, this will allow writing to the new window and
948 //reading from the old one
949 if(Cansave == 0)
950 {
951 if(Otherwin)
899 }
900 else
901 {
902 //CWP should be set directly so that it always happens
903 //Also, this will allow writing to the new window and
904 //reading from the old one
905 Cwp = (Cwp - 1 + NWindows) % NWindows;
906 Cansave = Cansave + 1;

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

944 0x3B: Nop::flush({{/*Instruction memory flush*/}});
945 0x3C: save({{
946 //CWP should be set directly so that it always happens
947 //Also, this will allow writing to the new window and
948 //reading from the old one
949 if(Cansave == 0)
950 {
951 if(Otherwin)
952 fault = new SpillNOther(Wstate<5:3>);
952 fault = new SpillNOther(4*Wstate<5:3>);
953 else
953 else
954 fault = new SpillNNormal(Wstate<2:0>);
954 fault = new SpillNNormal(4*Wstate<2:0>);
955 //Cwp = (Cwp + 2) % NWindows;
956 }
957 else if(Cleanwin - Canrestore == 0)
958 {
959 //Cwp = (Cwp + 1) % NWindows;
960 fault = new CleanWindow;
961 }
962 else

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

970 //are written in the new window as well.
971 xc->setMiscRegWithEffect(MISCREG_CWP, Cwp);
972 }
973 }});
974 0x3D: restore({{
975 if(Canrestore == 0)
976 {
977 if(Otherwin)
955 //Cwp = (Cwp + 2) % NWindows;
956 }
957 else if(Cleanwin - Canrestore == 0)
958 {
959 //Cwp = (Cwp + 1) % NWindows;
960 fault = new CleanWindow;
961 }
962 else

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

970 //are written in the new window as well.
971 xc->setMiscRegWithEffect(MISCREG_CWP, Cwp);
972 }
973 }});
974 0x3D: restore({{
975 if(Canrestore == 0)
976 {
977 if(Otherwin)
978 fault = new FillNOther(Wstate<5:3>);
978 fault = new FillNOther(4*Wstate<5:3>);
979 else
979 else
980 fault = new FillNNormal(Wstate<2:0>);
980 fault = new FillNNormal(4*Wstate<2:0>);
981 }
982 else
983 {
984 //CWP should be set directly so that it always happens
985 //Also, this will allow writing to the new window and
986 //reading from the old one
987 Cwp = (Cwp - 1 + NWindows) % NWindows;
988 Rd = Rs1 + Rs2_or_imm13;

--- 323 unchanged lines hidden ---
981 }
982 else
983 {
984 //CWP should be set directly so that it always happens
985 //Also, this will allow writing to the new window and
986 //reading from the old one
987 Cwp = (Cwp - 1 + NWindows) % NWindows;
988 Rd = Rs1 + Rs2_or_imm13;

--- 323 unchanged lines hidden ---