trunk/src/emu/cpu/arcompact/arcompactdasm_ops.c
| r242457 | r242458 | |
| 58 | 58 | /* 1f */ "0x1f Reserved" |
| 59 | 59 | }; |
| 60 | 60 | |
| 61 | #define UNUSED_REG "unusedreg" |
| 61 | 62 | |
| 63 | #define AUX_UNUSED_16 \ |
| 64 | /* 0xxx0 */ UNUSED_REG, /* 0xxx1 */ UNUSED_REG, /* 0xxx2 */ UNUSED_REG, /* 0xxx3 */ UNUSED_REG, /* 0xxx4 */ UNUSED_REG, /* 0xxx5 */ UNUSED_REG, /* 0xxx6 */ UNUSED_REG, /* 0xxx7 */ UNUSED_REG, /* 0xxx8 */ UNUSED_REG, /* 0xxx9 */ UNUSED_REG, /* 0xxxa */ UNUSED_REG, /* 0xxxb */ UNUSED_REG, /* 0xxxc */ UNUSED_REG, /* 0xxxd */ UNUSED_REG, /* 0xxxe */ UNUSED_REG, /* 0xxxf */ UNUSED_REG, |
| 65 | |
| 66 | // the Auxiliary Register set is actually a 2^32 dword address space (so 16 GB / 34-bit) |
| 67 | // this table just allows us to improve the debugger display for some of the common core / internal ones |
| 68 | static const char *auxregnames[0x420] = |
| 69 | { |
| 70 | /* 0x000 */ "STATUS", |
| 71 | /* 0x001 */ "SEMAPHOR", |
| 72 | /* 0x002 */ "LP_START", |
| 73 | /* 0x003 */ "LP_END", |
| 74 | /* 0x004 */ "IDENTITY", |
| 75 | /* 0x005 */ "DEBUG", |
| 76 | /* 0x006 */ "PC", |
| 77 | /* 0x007 */ UNUSED_REG, |
| 78 | /* 0x008 */ UNUSED_REG, |
| 79 | /* 0x009 */ UNUSED_REG, |
| 80 | /* 0x00a */ "STATUS32", |
| 81 | /* 0x00b */ "STATUS32_L1", |
| 82 | /* 0x00c */ "STATUS32_L2", |
| 83 | /* 0x00d */ UNUSED_REG, |
| 84 | /* 0x00e */ UNUSED_REG, |
| 85 | /* 0x00f */ UNUSED_REG, |
| 86 | |
| 87 | /* 0x010 */ UNUSED_REG, |
| 88 | /* 0x011 */ UNUSED_REG, |
| 89 | /* 0x012 */ "MULHI", // extension register |
| 90 | /* 0x013 */ UNUSED_REG, |
| 91 | /* 0x014 */ UNUSED_REG, |
| 92 | /* 0x015 */ UNUSED_REG, |
| 93 | /* 0x016 */ UNUSED_REG, |
| 94 | /* 0x017 */ UNUSED_REG, |
| 95 | /* 0x018 */ UNUSED_REG, |
| 96 | /* 0x019 */ UNUSED_REG, |
| 97 | /* 0x01a */ UNUSED_REG, |
| 98 | /* 0x01b */ UNUSED_REG, |
| 99 | /* 0x01c */ UNUSED_REG, |
| 100 | /* 0x01d */ UNUSED_REG, |
| 101 | /* 0x01e */ UNUSED_REG, |
| 102 | /* 0x01f */ UNUSED_REG, |
| 103 | |
| 104 | /* 0x020 */ UNUSED_REG, |
| 105 | /* 0x021 */ "COUNT0", |
| 106 | /* 0x022 */ "CONTROL0", |
| 107 | /* 0x023 */ "LIMIT0", |
| 108 | /* 0x024 */ UNUSED_REG, |
| 109 | /* 0x025 */ "INT_VECTOR_BASE", |
| 110 | /* 0x026 */ UNUSED_REG, |
| 111 | /* 0x027 */ UNUSED_REG, |
| 112 | /* 0x028 */ UNUSED_REG, |
| 113 | /* 0x029 */ UNUSED_REG, |
| 114 | /* 0x02a */ UNUSED_REG, |
| 115 | /* 0x02b */ UNUSED_REG, |
| 116 | /* 0x02c */ UNUSED_REG, |
| 117 | /* 0x02d */ UNUSED_REG, |
| 118 | /* 0x02e */ UNUSED_REG, |
| 119 | /* 0x02f */ UNUSED_REG, |
| 120 | AUX_UNUSED_16 /* 0x030 - 0x03f */ |
| 121 | /* 0x040 */ UNUSED_REG, |
| 122 | /* 0x041 */ "AUX_MACMODE", |
| 123 | /* 0x042 */ UNUSED_REG, |
| 124 | /* 0x043 */ "AUX_IRQLV12", |
| 125 | /* 0x044 */ UNUSED_REG, |
| 126 | /* 0x045 */ UNUSED_REG, |
| 127 | /* 0x046 */ UNUSED_REG, |
| 128 | /* 0x047 */ UNUSED_REG, |
| 129 | /* 0x048 */ UNUSED_REG, |
| 130 | /* 0x049 */ UNUSED_REG, |
| 131 | /* 0x04a */ UNUSED_REG, |
| 132 | /* 0x04b */ UNUSED_REG, |
| 133 | /* 0x04c */ UNUSED_REG, |
| 134 | /* 0x04d */ UNUSED_REG, |
| 135 | /* 0x04e */ UNUSED_REG, |
| 136 | /* 0x04f */ UNUSED_REG, |
| 137 | AUX_UNUSED_16 /* 0x050 - 0x05f */ |
| 138 | // build configuration registers 0x060 - 0x07f |
| 139 | /* 0x060 */ "RESERVED AUX 0x60",/* 0x061 */ "RESERVED AUX 0x61",/* 0x062 */ "RESERVED AUX 0x62",/* 0x063 */ "RESERVED AUX 0x63",/* 0x064 */ "RESERVED AUX 0x64",/* 0x065 */ "RESERVED AUX 0x65",/* 0x066 */ "RESERVED AUX 0x66",/* 0x067 */ "RESERVED AUX 0x67",/* 0x068 */ "RESERVED AUX 0x68",/* 0x069 */ "RESERVED AUX 0x69",/* 0x06a */ "RESERVED AUX 0x6a",/* 0x06b */ "RESERVED AUX 0x6b",/* 0x06c */ "RESERVED AUX 0x6c",/* 0x06d */ "RESERVED AUX 0x6d",/* 0x06e */ "RESERVED AUX 0x6e",/* 0x06f */ "RESERVED AUX 0x6f", |
| 140 | /* 0x070 */ "RESERVED AUX 0x70",/* 0x071 */ "RESERVED AUX 0x71",/* 0x072 */ "RESERVED AUX 0x72",/* 0x073 */ "RESERVED AUX 0x73",/* 0x074 */ "RESERVED AUX 0x74",/* 0x075 */ "RESERVED AUX 0x75",/* 0x076 */ "RESERVED AUX 0x76",/* 0x077 */ "RESERVED AUX 0x77",/* 0x078 */ "RESERVED AUX 0x78",/* 0x079 */ "RESERVED AUX 0x79",/* 0x07a */ "RESERVED AUX 0x7a",/* 0x07b */ "RESERVED AUX 0x7b",/* 0x07c */ "RESERVED AUX 0x7c",/* 0x07d */ "RESERVED AUX 0x7d",/* 0x07e */ "RESERVED AUX 0x7e",/* 0x07f */ "RESERVED AUX 0x7f", |
| 141 | AUX_UNUSED_16 /* 0x080 - 0x08f */ |
| 142 | AUX_UNUSED_16 /* 0x090 - 0x09f */ |
| 143 | AUX_UNUSED_16 /* 0x0a0 - 0x0af */ |
| 144 | AUX_UNUSED_16 /* 0x0b0 - 0x0bf */ |
| 145 | // build configuration registers 0x0c0 - 0x0ff |
| 146 | /* 0x0c0 */ "RESERVED AUX 0xc0",/* 0x0c1 */ "RESERVED AUX 0xc1",/* 0x0c2 */ "RESERVED AUX 0xc2",/* 0x0c3 */ "RESERVED AUX 0xc3",/* 0x0c4 */ "RESERVED AUX 0xc4",/* 0x0c5 */ "RESERVED AUX 0xc5",/* 0x0c6 */ "RESERVED AUX 0xc6",/* 0x0c7 */ "RESERVED AUX 0xc7",/* 0x0c8 */ "RESERVED AUX 0xc8",/* 0x0c9 */ "RESERVED AUX 0xc9",/* 0x0ca */ "RESERVED AUX 0xca",/* 0x0cb */ "RESERVED AUX 0xcb",/* 0x0cc */ "RESERVED AUX 0xcc",/* 0x0cd */ "RESERVED AUX 0xcd",/* 0x0ce */ "RESERVED AUX 0xce",/* 0x0cf */ "RESERVED AUX 0xcf", |
| 147 | /* 0x0d0 */ "RESERVED AUX 0xd0",/* 0x0d1 */ "RESERVED AUX 0xd1",/* 0x0d2 */ "RESERVED AUX 0xd2",/* 0x0d3 */ "RESERVED AUX 0xd3",/* 0x0d4 */ "RESERVED AUX 0xd4",/* 0x0d5 */ "RESERVED AUX 0xd5",/* 0x0d6 */ "RESERVED AUX 0xd6",/* 0x0d7 */ "RESERVED AUX 0xd7",/* 0x0d8 */ "RESERVED AUX 0xd8",/* 0x0d9 */ "RESERVED AUX 0xd9",/* 0x0da */ "RESERVED AUX 0xda",/* 0x0db */ "RESERVED AUX 0xdb",/* 0x0dc */ "RESERVED AUX 0xdc",/* 0x0dd */ "RESERVED AUX 0xdd",/* 0x0de */ "RESERVED AUX 0xde",/* 0x0df */ "RESERVED AUX 0xdf", |
| 148 | /* 0x0e0 */ "RESERVED AUX 0xe0",/* 0x0e1 */ "RESERVED AUX 0xe1",/* 0x0e2 */ "RESERVED AUX 0xe2",/* 0x0e3 */ "RESERVED AUX 0xe3",/* 0x0e4 */ "RESERVED AUX 0xe4",/* 0x0e5 */ "RESERVED AUX 0xe5",/* 0x0e6 */ "RESERVED AUX 0xe6",/* 0x0e7 */ "RESERVED AUX 0xe7",/* 0x0e8 */ "RESERVED AUX 0xe8",/* 0x0e9 */ "RESERVED AUX 0xe9",/* 0x0ea */ "RESERVED AUX 0xea",/* 0x0eb */ "RESERVED AUX 0xeb",/* 0x0ec */ "RESERVED AUX 0xec",/* 0x0ed */ "RESERVED AUX 0xed",/* 0x0ee */ "RESERVED AUX 0xee",/* 0x0ef */ "RESERVED AUX 0xef", |
| 149 | /* 0x0f0 */ "RESERVED AUX 0xf0",/* 0x0f1 */ "RESERVED AUX 0xf1",/* 0x0f2 */ "RESERVED AUX 0xf2",/* 0x0f3 */ "RESERVED AUX 0xf3",/* 0x0f4 */ "RESERVED AUX 0xf4",/* 0x0f5 */ "RESERVED AUX 0xf5",/* 0x0f6 */ "RESERVED AUX 0xf6",/* 0x0f7 */ "RESERVED AUX 0xf7",/* 0x0f8 */ "RESERVED AUX 0xf8",/* 0x0f9 */ "RESERVED AUX 0xf9",/* 0x0fa */ "RESERVED AUX 0xfa",/* 0x0fb */ "RESERVED AUX 0xfb",/* 0x0fc */ "RESERVED AUX 0xfc",/* 0x0fd */ "RESERVED AUX 0xfd",/* 0x0fe */ "RESERVED AUX 0xfe",/* 0x0ff */ "RESERVED AUX 0xff", |
| 150 | /* 0x100 */ "COUNT1", |
| 151 | /* 0x101 */ "CONTROL1", |
| 152 | /* 0x102 */ "LIMIT1", |
| 153 | /* 0x103 */ UNUSED_REG, |
| 154 | /* 0x104 */ UNUSED_REG, |
| 155 | /* 0x105 */ UNUSED_REG, |
| 156 | /* 0x106 */ UNUSED_REG, |
| 157 | /* 0x107 */ UNUSED_REG, |
| 158 | /* 0x108 */ UNUSED_REG, |
| 159 | /* 0x109 */ UNUSED_REG, |
| 160 | /* 0x10a */ UNUSED_REG, |
| 161 | /* 0x10b */ UNUSED_REG, |
| 162 | /* 0x10c */ UNUSED_REG, |
| 163 | /* 0x10d */ UNUSED_REG, |
| 164 | /* 0x10e */ UNUSED_REG, |
| 165 | /* 0x10f */ UNUSED_REG, |
| 166 | AUX_UNUSED_16 /* 0x110 - 0x11f */ |
| 167 | AUX_UNUSED_16 /* 0x120 - 0x12f */ |
| 168 | AUX_UNUSED_16 /* 0x130 - 0x13f */ |
| 169 | AUX_UNUSED_16 /* 0x140 - 0x14f */ |
| 170 | AUX_UNUSED_16 /* 0x150 - 0x15f */ |
| 171 | AUX_UNUSED_16 /* 0x160 - 0x16f */ |
| 172 | AUX_UNUSED_16 /* 0x170 - 0x17f */ |
| 173 | AUX_UNUSED_16 /* 0x180 - 0x18f */ |
| 174 | AUX_UNUSED_16 /* 0x190 - 0x19f */ |
| 175 | AUX_UNUSED_16 /* 0x1a0 - 0x1af */ |
| 176 | AUX_UNUSED_16 /* 0x1b0 - 0x1bf */ |
| 177 | AUX_UNUSED_16 /* 0x1c0 - 0x1cf */ |
| 178 | AUX_UNUSED_16 /* 0x1d0 - 0x1df */ |
| 179 | AUX_UNUSED_16 /* 0x1e0 - 0x1ef */ |
| 180 | AUX_UNUSED_16 /* 0x1f0 - 0x1ff */ |
| 181 | /* 0x200 */ "AUX_IRQ_LEV", |
| 182 | /* 0x201 */ "AUX_IRQ_HINT", |
| 183 | /* 0x203 */ UNUSED_REG, |
| 184 | /* 0x203 */ UNUSED_REG, |
| 185 | /* 0x204 */ UNUSED_REG, |
| 186 | /* 0x205 */ UNUSED_REG, |
| 187 | /* 0x206 */ UNUSED_REG, |
| 188 | /* 0x207 */ UNUSED_REG, |
| 189 | /* 0x208 */ UNUSED_REG, |
| 190 | /* 0x209 */ UNUSED_REG, |
| 191 | /* 0x20a */ UNUSED_REG, |
| 192 | /* 0x20b */ UNUSED_REG, |
| 193 | /* 0x20c */ UNUSED_REG, |
| 194 | /* 0x20d */ UNUSED_REG, |
| 195 | /* 0x20e */ UNUSED_REG, |
| 196 | /* 0x20f */ UNUSED_REG, |
| 197 | AUX_UNUSED_16 /* 0x210 - 0x21f */ |
| 198 | AUX_UNUSED_16 /* 0x220 - 0x22f */ |
| 199 | AUX_UNUSED_16 /* 0x230 - 0x23f */ |
| 200 | AUX_UNUSED_16 /* 0x240 - 0x24f */ |
| 201 | AUX_UNUSED_16 /* 0x250 - 0x25f */ |
| 202 | AUX_UNUSED_16 /* 0x260 - 0x26f */ |
| 203 | AUX_UNUSED_16 /* 0x270 - 0x27f */ |
| 204 | AUX_UNUSED_16 /* 0x280 - 0x28f */ |
| 205 | AUX_UNUSED_16 /* 0x290 - 0x29f */ |
| 206 | AUX_UNUSED_16 /* 0x2a0 - 0x2af */ |
| 207 | AUX_UNUSED_16 /* 0x2b0 - 0x2bf */ |
| 208 | AUX_UNUSED_16 /* 0x2c0 - 0x2cf */ |
| 209 | AUX_UNUSED_16 /* 0x2d0 - 0x2df */ |
| 210 | AUX_UNUSED_16 /* 0x2e0 - 0x2ef */ |
| 211 | AUX_UNUSED_16 /* 0x2f0 - 0x2ff */ |
| 212 | |
| 213 | AUX_UNUSED_16 /* 0x300 - 0x30f */ |
| 214 | AUX_UNUSED_16 /* 0x310 - 0x31f */ |
| 215 | AUX_UNUSED_16 /* 0x320 - 0x32f */ |
| 216 | AUX_UNUSED_16 /* 0x330 - 0x33f */ |
| 217 | AUX_UNUSED_16 /* 0x340 - 0x34f */ |
| 218 | AUX_UNUSED_16 /* 0x350 - 0x35f */ |
| 219 | AUX_UNUSED_16 /* 0x360 - 0x36f */ |
| 220 | AUX_UNUSED_16 /* 0x370 - 0x37f */ |
| 221 | AUX_UNUSED_16 /* 0x380 - 0x38f */ |
| 222 | AUX_UNUSED_16 /* 0x390 - 0x39f */ |
| 223 | AUX_UNUSED_16 /* 0x3a0 - 0x3af */ |
| 224 | AUX_UNUSED_16 /* 0x3b0 - 0x3bf */ |
| 225 | AUX_UNUSED_16 /* 0x3c0 - 0x3cf */ |
| 226 | AUX_UNUSED_16 /* 0x3d0 - 0x3df */ |
| 227 | AUX_UNUSED_16 /* 0x3e0 - 0x3ef */ |
| 228 | AUX_UNUSED_16 /* 0x3f0 - 0x3ff */ |
| 229 | |
| 230 | /* 0x400 */ "ERET", |
| 231 | /* 0x401 */ "ERBTA", |
| 232 | /* 0x403 */ "ERSTATUS", |
| 233 | /* 0x403 */ "ECR", |
| 234 | /* 0x404 */ "EFA", |
| 235 | /* 0x405 */ UNUSED_REG, |
| 236 | /* 0x406 */ UNUSED_REG, |
| 237 | /* 0x407 */ UNUSED_REG, |
| 238 | /* 0x408 */ UNUSED_REG, |
| 239 | /* 0x409 */ UNUSED_REG, |
| 240 | /* 0x40a */ "ICAUSE1", |
| 241 | /* 0x40b */ "ICAUSE2", |
| 242 | /* 0x40c */ "AUX_IENABLE", |
| 243 | /* 0x40d */ "AUX_ITRIGGER", |
| 244 | /* 0x40e */ UNUSED_REG, |
| 245 | /* 0x40f */ UNUSED_REG, |
| 246 | |
| 247 | /* 0x410 */ "XPU", |
| 248 | /* 0x411 */ UNUSED_REG, |
| 249 | /* 0x412 */ "BTA", |
| 250 | /* 0x413 */ "BTA_L1", |
| 251 | /* 0x414 */ "BTA_L2", |
| 252 | /* 0x415 */ "AUX_IRQ_PULSE_CANCEL", |
| 253 | /* 0x416 */ "AUX_IRQ_PENDING", |
| 254 | /* 0x417 */ UNUSED_REG, |
| 255 | /* 0x418 */ UNUSED_REG, |
| 256 | /* 0x419 */ UNUSED_REG, |
| 257 | /* 0x41a */ UNUSED_REG, |
| 258 | /* 0x41b */ UNUSED_REG, |
| 259 | /* 0x41c */ UNUSED_REG, |
| 260 | /* 0x41d */ UNUSED_REG, |
| 261 | /* 0x41e */ UNUSED_REG, |
| 262 | /* 0x41f */ UNUSED_REG |
| 263 | }; |
| 264 | |
| 62 | 265 | //#define EXPLICIT_EXTENSIONS |
| 63 | 266 | |
| 64 | 267 | static const char *datasize[0x4] = |
| r242457 | r242458 | |
| 896 | 1099 | return 4; |
| 897 | 1100 | } |
| 898 | 1101 | |
| 1102 | #define PRINT_AUX_REGNAME \ |
| 1103 | if ((auxreg >= 0) && (auxreg < 0x420)) \ |
| 1104 | { \ |
| 1105 | if (strcmp(auxregnames[auxreg],"unusedreg")) \ |
| 1106 | output += sprintf(output, "[%s]", auxregnames[auxreg]); \ |
| 1107 | else \ |
| 1108 | output += sprintf( output, "[%03x]", auxreg); \ |
| 1109 | } \ |
| 1110 | else \ |
| 1111 | output += sprintf( output, "[%03x]", auxreg); \ |
| 899 | 1112 | |
| 900 | | |
| 901 | 1113 | int arcompact_handle04_2a_dasm(DASM_OPS_32) // Load FROM Auxiliary register TO register |
| 902 | 1114 | { |
| 903 | 1115 | |
| r242457 | r242458 | |
| 962 | 1174 | int U = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 963 | 1175 | int res = (op & 0x0000003f) >> 0; op &= ~0x0000003f; |
| 964 | 1176 | |
| 965 | | output += sprintf( output, "U(%02x) ", U ); |
| 1177 | int auxreg = U; |
| 1178 | PRINT_AUX_REGNAME |
| 966 | 1179 | |
| 967 | 1180 | if (res) output += sprintf( output, "reserved(%02x) ", res ); |
| 968 | 1181 | } |
| r242457 | r242458 | |
| 970 | 1183 | { |
| 971 | 1184 | COMMON32_GET_s12; |
| 972 | 1185 | |
| 973 | | output += sprintf( output, "S(%03x)", S); |
| 1186 | int auxreg = S; |
| 1187 | PRINT_AUX_REGNAME |
| 974 | 1188 | |
| 975 | 1189 | } |
| 976 | 1190 | else if (p == 3) |
| r242457 | r242458 | |
| 1048 | 1262 | int U = (op & 0x00000fc0) >> 6; op &= ~0x00000fc0; |
| 1049 | 1263 | int res = (op & 0x0000003f) >> 0; op &= ~0x0000003f; |
| 1050 | 1264 | |
| 1051 | | output += sprintf( output, "[%02x]", U ); |
| 1265 | int auxreg = U; |
| 1266 | PRINT_AUX_REGNAME |
| 1052 | 1267 | |
| 1053 | 1268 | if (res) output += sprintf( output, " (reserved %02x) ", res ); |
| 1054 | 1269 | |
| r242457 | r242458 | |
| 1058 | 1273 | { |
| 1059 | 1274 | COMMON32_GET_s12; |
| 1060 | 1275 | |
| 1061 | | output += sprintf( output, "[%03x]", S); |
| 1276 | int auxreg = S; |
| 1062 | 1277 | |
| 1278 | PRINT_AUX_REGNAME |
| 1279 | |
| 1063 | 1280 | } |
| 1064 | 1281 | else if (p == 3) |
| 1065 | 1282 | { |