decoder.isa (3279:cf42adf4588f) decoder.isa (3378:4be53ff74fa8)
1// Copyright (c) 2006 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

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

946 0x16: FailUnimpl::ldblockf_aiup();
947 //ASI_BLOCK_AS_IF_USER_SECONDARY
948 0x17: FailUnimpl::ldblockf_aius();
949 //ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE
950 0x1E: FailUnimpl::ldblockf_aiupl();
951 //ASI_BLOCK_AS_IF_USER_SECONDARY_LITTLE
952 0x1F: FailUnimpl::ldblockf_aiusl();
953 //ASI_BLOCK_PRIMARY
1// Copyright (c) 2006 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

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

946 0x16: FailUnimpl::ldblockf_aiup();
947 //ASI_BLOCK_AS_IF_USER_SECONDARY
948 0x17: FailUnimpl::ldblockf_aius();
949 //ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE
950 0x1E: FailUnimpl::ldblockf_aiupl();
951 //ASI_BLOCK_AS_IF_USER_SECONDARY_LITTLE
952 0x1F: FailUnimpl::ldblockf_aiusl();
953 //ASI_BLOCK_PRIMARY
954 0xF0: ldblockf_p({{Frd_N = Mem.udw;}});
954 0xF0: ldblockf_p({{Frd_N.udw = Mem.udw;}});
955 //ASI_BLOCK_SECONDARY
956 0xF1: FailUnimpl::ldblockf_s();
957 //ASI_BLOCK_PRIMARY_LITTLE
958 0xF8: FailUnimpl::ldblockf_pl();
959 //ASI_BLOCK_SECONDARY_LITTLE
960 0xF9: FailUnimpl::ldblockf_sl();
961 }
962

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

973 0xD2: FailUnimpl::ldshortf_16p();
974 //ASI_FL16_SECONDARY
975 0xD3: FailUnimpl::ldshortf_16s();
976 //ASI_FL16_PRIMARY_LITTLE
977 0xDA: FailUnimpl::ldshortf_16pl();
978 //ASI_FL16_SECONDARY_LITTLE
979 0xDB: FailUnimpl::ldshortf_16sl();
980 //Not an ASI which is legal with lddfa
955 //ASI_BLOCK_SECONDARY
956 0xF1: FailUnimpl::ldblockf_s();
957 //ASI_BLOCK_PRIMARY_LITTLE
958 0xF8: FailUnimpl::ldblockf_pl();
959 //ASI_BLOCK_SECONDARY_LITTLE
960 0xF9: FailUnimpl::ldblockf_sl();
961 }
962

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

973 0xD2: FailUnimpl::ldshortf_16p();
974 //ASI_FL16_SECONDARY
975 0xD3: FailUnimpl::ldshortf_16s();
976 //ASI_FL16_PRIMARY_LITTLE
977 0xDA: FailUnimpl::ldshortf_16pl();
978 //ASI_FL16_SECONDARY_LITTLE
979 0xDB: FailUnimpl::ldshortf_16sl();
980 //Not an ASI which is legal with lddfa
981 default: Trap::lddfa_bad_asi({{fault = new DataAccessException;}});
982
983 //LoadAlt::lddfa({{
984 //Do the actual loading
985 //if(fault == NoFault)
986 //{
987 //if(AsiIsBlock(asi))
988 //{
989 //Do the block transfer
990 //}
991 //else
992 //{
993 //uint64_t val = Mem;
994 //if(AsiIsLittle(asi))
995 //val = gtole(val);
996 //Frd.udw = val;
997 //}
998 //}
999 //}}, {{64}});*/
981 default: Trap::lddfa_bad_asi(
982 {{fault = new DataAccessException;}});
1000 }
1001 }
1002 0x34: Store::stfa({{Mem.uw = Frd.uw;}});
1003 0x36: stqfa({{fault = new FpDisabled;}});
983 }
984 }
985 0x34: Store::stfa({{Mem.uw = Frd.uw;}});
986 0x36: stqfa({{fault = new FpDisabled;}});
1004 //XXX need to work in the ASI thing
1005 0x37: Store::stdfa({{Mem.udw = Frd.udw;}});
987 format StoreAlt {
988 0x37: decode EXT_ASI {
989 //ASI_NUCLEUS
990 0x04: FailUnimpl::stdfa_n();
991 //ASI_NUCLEUS_LITTLE
992 0x0C: FailUnimpl::stdfa_nl();
993 //ASI_AS_IF_USER_PRIMARY
994 0x10: FailUnimpl::stdfa_aiup();
995 //ASI_AS_IF_USER_PRIMARY_LITTLE
996 0x18: FailUnimpl::stdfa_aiupl();
997 //ASI_AS_IF_USER_SECONDARY
998 0x11: FailUnimpl::stdfa_aius();
999 //ASI_AS_IF_USER_SECONDARY_LITTLE
1000 0x19: FailUnimpl::stdfa_aiusl();
1001 //ASI_REAL
1002 0x14: FailUnimpl::stdfa_real();
1003 //ASI_REAL_LITTLE
1004 0x1C: FailUnimpl::stdfa_real_l();
1005 //ASI_REAL_IO
1006 0x15: FailUnimpl::stdfa_real_io();
1007 //ASI_REAL_IO_LITTLE
1008 0x1D: FailUnimpl::stdfa_real_io_l();
1009 //ASI_PRIMARY
1010 0x80: FailUnimpl::stdfa_p();
1011 //ASI_PRIMARY_LITTLE
1012 0x88: FailUnimpl::stdfa_pl();
1013 //ASI_SECONDARY
1014 0x81: FailUnimpl::stdfa_s();
1015 //ASI_SECONDARY_LITTLE
1016 0x89: FailUnimpl::stdfa_sl();
1017 //ASI_PRIMARY_NO_FAULT
1018 0x82: FailUnimpl::stdfa_pnf();
1019 //ASI_PRIMARY_NO_FAULT_LITTLE
1020 0x8A: FailUnimpl::stdfa_pnfl();
1021 //ASI_SECONDARY_NO_FAULT
1022 0x83: FailUnimpl::stdfa_snf();
1023 //ASI_SECONDARY_NO_FAULT_LITTLE
1024 0x8B: FailUnimpl::stdfa_snfl();
1025
1026 format BlockStore {
1027 // STBLOCKF
1028 //ASI_BLOCK_AS_IF_USER_PRIMARY
1029 0x16: FailUnimpl::stblockf_aiup();
1030 //ASI_BLOCK_AS_IF_USER_SECONDARY
1031 0x17: FailUnimpl::stblockf_aius();
1032 //ASI_BLOCK_AS_IF_USER_PRIMARY_LITTLE
1033 0x1E: FailUnimpl::stblockf_aiupl();
1034 //ASI_BLOCK_AS_IF_USER_SECONDARY_LITTLE
1035 0x1F: FailUnimpl::stblockf_aiusl();
1036 //ASI_BLOCK_PRIMARY
1037 0xF0: stblockf_p({{Mem.udw = Frd_N.udw;}});
1038 //ASI_BLOCK_SECONDARY
1039 0xF1: FailUnimpl::stblockf_s();
1040 //ASI_BLOCK_PRIMARY_LITTLE
1041 0xF8: FailUnimpl::stblockf_pl();
1042 //ASI_BLOCK_SECONDARY_LITTLE
1043 0xF9: FailUnimpl::stblockf_sl();
1044 }
1045
1046 //STSHORTF
1047 //ASI_FL8_PRIMARY
1048 0xD0: FailUnimpl::stshortf_8p();
1049 //ASI_FL8_SECONDARY
1050 0xD1: FailUnimpl::stshortf_8s();
1051 //ASI_FL8_PRIMARY_LITTLE
1052 0xD8: FailUnimpl::stshortf_8pl();
1053 //ASI_FL8_SECONDARY_LITTLE
1054 0xD9: FailUnimpl::stshortf_8sl();
1055 //ASI_FL16_PRIMARY
1056 0xD2: FailUnimpl::stshortf_16p();
1057 //ASI_FL16_SECONDARY
1058 0xD3: FailUnimpl::stshortf_16s();
1059 //ASI_FL16_PRIMARY_LITTLE
1060 0xDA: FailUnimpl::stshortf_16pl();
1061 //ASI_FL16_SECONDARY_LITTLE
1062 0xDB: FailUnimpl::stshortf_16sl();
1063 //Not an ASI which is legal with lddfa
1064 default: Trap::stdfa_bad_asi(
1065 {{fault = new DataAccessException;}});
1066 }
1067 }
1006 0x3C: Cas::casa({{
1007 uint64_t val = Mem.uw;
1008 if(Rs2.uw == val)
1009 Mem.uw = Rd.uw;
1010 Rd.uw = val;
1011 }});
1012 0x3D: Nop::prefetcha({{ }});
1013 0x3E: Cas::casxa({{
1014 uint64_t val = Mem.udw;
1015 if(Rs2 == val)
1016 Mem.udw = Rd;
1017 Rd = val;
1018 }});
1019 }
1020 }
1021}
1068 0x3C: Cas::casa({{
1069 uint64_t val = Mem.uw;
1070 if(Rs2.uw == val)
1071 Mem.uw = Rd.uw;
1072 Rd.uw = val;
1073 }});
1074 0x3D: Nop::prefetcha({{ }});
1075 0x3E: Cas::casxa({{
1076 uint64_t val = Mem.udw;
1077 if(Rs2 == val)
1078 Mem.udw = Rd;
1079 Rd = val;
1080 }});
1081 }
1082 }
1083}