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} |