From: Sébastien G. <kx...@us...> - 2004-09-15 22:13:05
|
Update of /cvsroot/vba/VisualBoyAdvance/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28314 Modified Files: 2xSaI.cpp GBA.cpp Util.h arm-new.h bios.cpp thumb.h Log Message: Added prefetch emulation. Fixed HuffUnComp BIOS emulation regarding the tree size (SourceForge #984608). Index: Util.h =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/Util.h,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Util.h 13 May 2004 15:06:44 -0000 1.10 --- Util.h 15 Sep 2004 22:12:52 -0000 1.11 *************** *** 62,64 **** --- 62,65 ---- extern long utilGzMemTell(gzFile file); extern void utilGBAFindSave(const u8 *, const int); + extern void utilUpdateSystemColorMaps(); #endif Index: thumb.h =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/thumb.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** thumb.h 13 May 2004 15:06:45 -0000 1.11 --- thumb.h 15 Sep 2004 22:12:52 -0000 1.12 *************** *** 764,768 **** #endif ! u32 opcode = CPUReadHalfWordQuick(armNextPC); clockTicks = thumbCycles[opcode >> 8] + memoryWaitFetch[(armNextPC >> 24) & 15]; #ifndef FINAL_VERSION --- 764,769 ---- #endif ! u32 opcode = cpuPrefetch[0]; ! cpuPrefetch[0] = cpuPrefetch[1]; clockTicks = thumbCycles[opcode >> 8] + memoryWaitFetch[(armNextPC >> 24) & 15]; #ifndef FINAL_VERSION *************** *** 774,777 **** --- 775,779 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH_NEXT; switch(opcode >> 8) { *************** *** 1295,1298 **** --- 1297,1301 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks++; } *************** *** 1305,1308 **** --- 1308,1312 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks++; } *************** *** 1363,1366 **** --- 1367,1371 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks++; } *************** *** 1373,1376 **** --- 1378,1382 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks++; } *************** *** 1390,1393 **** --- 1396,1400 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; } else { armState = true; *************** *** 1395,1398 **** --- 1402,1406 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } break; *************** *** 1404,1407 **** --- 1412,1416 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; } else { armState = true; *************** *** 1409,1412 **** --- 1418,1422 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } break; *************** *** 1944,1947 **** --- 1954,1958 ---- reg[15].I += 2; reg[13].I = temp; + THUMB_PREFETCH; } break; *************** *** 2261,2264 **** --- 2272,2276 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2270,2273 **** --- 2282,2286 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2279,2282 **** --- 2292,2296 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2288,2291 **** --- 2302,2306 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2297,2300 **** --- 2312,2316 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2306,2309 **** --- 2322,2326 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2315,2318 **** --- 2332,2336 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2324,2327 **** --- 2342,2346 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2333,2336 **** --- 2352,2356 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2342,2345 **** --- 2362,2366 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2351,2354 **** --- 2372,2376 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2360,2363 **** --- 2382,2386 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2369,2372 **** --- 2392,2396 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2378,2381 **** --- 2402,2406 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; clockTicks = 3; } *************** *** 2401,2404 **** --- 2426,2430 ---- armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; } break; *************** *** 2439,2442 **** --- 2465,2469 ---- reg[15].I += 2; reg[14].I = temp|1; + THUMB_PREFETCH; } break; Index: bios.cpp =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/bios.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** bios.cpp 13 May 2004 15:06:45 -0000 1.12 --- bios.cpp 15 Sep 2004 22:12:52 -0000 1.13 *************** *** 549,553 **** u32 treeStart = source; ! source += (treeSize<<1) + 1; int len = header >> 8; --- 549,553 ---- u32 treeStart = source; ! source += (treeSize+1)<<1; int len = header >> 8; Index: GBA.cpp =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/GBA.cpp,v retrieving revision 1.56 retrieving revision 1.57 diff -C2 -d -r1.56 -r1.57 *** GBA.cpp 11 Jun 2004 22:17:03 -0000 1.56 --- GBA.cpp 15 Sep 2004 22:12:52 -0000 1.57 *************** *** 45,48 **** --- 45,66 ---- #define UPDATE_REG(address, value) WRITE16LE(((u16 *)&ioMem[address]),value) + #define ARM_PREFETCH \ + {\ + cpuPrefetch[0] = CPUReadMemoryQuick(armNextPC);\ + cpuPrefetch[1] = CPUReadMemoryQuick(armNextPC+4);\ + } + + #define THUMB_PREFETCH \ + {\ + cpuPrefetch[0] = CPUReadHalfWordQuick(armNextPC);\ + cpuPrefetch[1] = CPUReadHalfWordQuick(armNextPC+2);\ + } + + #define ARM_PREFETCH_NEXT \ + cpuPrefetch[1] = CPUReadMemoryQuick(armNextPC+4); + + #define THUMB_PREFETCH_NEXT\ + cpuPrefetch[1] = CPUReadHalfWordQuick(armNextPC+2); + #ifdef __GNUC__ #define _stricmp strcasecmp *************** *** 80,83 **** --- 98,103 ---- bool cpuEEPROMSensorEnabled = false; + u32 cpuPrefetch[2]; + #ifdef PROFILING int profilingTicks = 0; *************** *** 813,816 **** --- 833,841 ---- systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED; + if(armState) { + ARM_PREFETCH; + } else { + THUMB_PREFETCH; + } return true; *************** *** 1627,1630 **** --- 1652,1656 ---- armIrqEnable = false; armNextPC = 0x04; + ARM_PREFETCH; reg[15].I += 4; } *************** *** 1640,1643 **** --- 1666,1670 ---- armIrqEnable = false; armNextPC = 0x08; + ARM_PREFETCH; reg[15].I += 4; } *************** *** 3137,3141 **** reg[15].I = 0x00000000; armMode = 0x13; ! armIrqEnable = false; } else { reg[13].I = 0x03007F00; --- 3164,3168 ---- reg[15].I = 0x00000000; armMode = 0x13; ! armIrqEnable = false; } else { reg[13].I = 0x03007F00; *************** *** 3299,3302 **** --- 3326,3331 ---- } + ARM_PREFETCH; + systemSaveUpdateCounter = SYSTEM_SAVE_NOT_UPDATED; *************** *** 3318,3321 **** --- 3347,3351 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; // if(!holdState) Index: 2xSaI.cpp =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/2xSaI.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** 2xSaI.cpp 26 Jan 2004 02:12:15 -0000 1.9 --- 2xSaI.cpp 15 Sep 2004 22:12:51 -0000 1.10 *************** *** 2,5 **** --- 2,7 ---- #include "Port.h" + extern int RGB_LOW_BITS_MASK; + extern "C" { *************** *** 49,52 **** --- 51,55 ---- qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0xF7DEF7DE; hq2x_init(16); + RGB_LOW_BITS_MASK = 0x0821; } else if (BitFormat == 555) { colorMask = 0x7BDE7BDE; *************** *** 58,61 **** --- 61,65 ---- qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0x7BDE7BDE; hq2x_init(15); + RGB_LOW_BITS_MASK = 0x0421; } else { return 0; *************** *** 68,71 **** --- 72,76 ---- qRGB_COLOR_MASK[0] = qRGB_COLOR_MASK[1] = 0xfefefe; hq2x_init(32); + RGB_LOW_BITS_MASK = 0x010101; } else return 0; Index: arm-new.h =================================================================== RCS file: /cvsroot/vba/VisualBoyAdvance/src/arm-new.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** arm-new.h 13 May 2004 15:06:44 -0000 1.11 --- arm-new.h 15 Sep 2004 22:12:52 -0000 1.12 *************** *** 1130,1137 **** --- 1130,1139 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1167,1174 **** --- 1169,1178 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1209,1216 **** --- 1213,1222 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1244,1251 **** --- 1250,1259 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1287,1294 **** --- 1295,1304 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1330,1337 **** --- 1340,1349 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1375,1382 **** --- 1387,1396 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1417,1424 **** --- 1431,1440 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1465,1472 **** --- 1481,1490 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1502,1509 **** --- 1520,1529 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1538,1545 **** --- 1558,1567 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1579,1586 **** --- 1601,1610 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1613,1620 **** --- 1637,1646 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1655,1662 **** --- 1681,1690 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1697,1704 **** --- 1725,1734 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1741,1748 **** --- 1771,1780 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1782,1789 **** --- 1814,1823 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1829,1836 **** --- 1863,1872 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1865,1872 **** --- 1901,1910 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1899,1906 **** --- 1937,1946 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1935,1942 **** --- 1975,1984 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 1969,1976 **** --- 2011,2020 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 2007,2014 **** --- 2051,2060 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 2045,2052 **** --- 2091,2100 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 2085,2092 **** --- 2133,2142 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 2124,2131 **** --- 2174,2183 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 2169,2176 **** --- 2221,2230 ---- armNextPC = reg[15].I;\ reg[15].I += 4;\ + ARM_PREFETCH;\ } else {\ reg[15].I &= 0xFFFFFFFE;\ armNextPC = reg[15].I;\ reg[15].I += 2;\ + THUMB_PREFETCH;\ }\ } else {\ *************** *** 2180,2184 **** break; ! u32 opcode = CPUReadMemoryQuick(armNextPC); clockTicks = memoryWaitFetch32[(armNextPC >> 24) & 15]; --- 2234,2239 ---- break; ! u32 opcode = cpuPrefetch[0]; ! cpuPrefetch[0] = cpuPrefetch[1]; clockTicks = memoryWaitFetch32[(armNextPC >> 24) & 15]; *************** *** 2192,2195 **** --- 2247,2252 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH_NEXT; + int cond = opcode >> 28; // suggested optimization for frequent cases *************** *** 3188,3195 **** --- 3245,3254 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } else { reg[15].I = reg[base].I & 0xFFFFFFFE; armNextPC = reg[15].I; reg[15].I += 2; + THUMB_PREFETCH; } } *************** *** 3412,3415 **** --- 3471,3475 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 3444,3447 **** --- 3504,3508 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 3474,3477 **** --- 3535,3539 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 3493,3496 **** --- 3555,3559 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 3510,3513 **** --- 3573,3577 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 3529,3532 **** --- 3593,3597 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4115,4118 **** --- 4180,4184 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4139,4142 **** --- 4205,4209 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4169,4172 **** --- 4236,4240 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4198,4201 **** --- 4266,4270 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4221,4224 **** --- 4290,4294 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4245,4248 **** --- 4315,4319 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4275,4278 **** --- 4346,4350 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4304,4307 **** --- 4376,4380 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4322,4325 **** --- 4395,4399 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4341,4344 **** --- 4415,4419 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4366,4369 **** --- 4441,4445 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4390,4393 **** --- 4466,4470 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4410,4413 **** --- 4487,4491 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4431,4434 **** --- 4509,4513 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4458,4461 **** --- 4537,4541 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4484,4487 **** --- 4564,4568 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4502,4505 **** --- 4583,4587 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4521,4524 **** --- 4603,4607 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4546,4549 **** --- 4629,4633 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4570,4573 **** --- 4654,4658 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4590,4593 **** --- 4675,4679 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4611,4614 **** --- 4697,4701 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4638,4641 **** --- 4725,4729 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 4664,4667 **** --- 4752,4756 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 6229,6232 **** --- 6318,6322 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 6264,6267 **** --- 6354,6358 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } if(!(opcode & (1 << base))) *************** *** 6305,6311 **** --- 6396,6404 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 6382,6388 **** --- 6475,6483 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 6454,6457 **** --- 6549,6553 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 6489,6492 **** --- 6585,6589 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } if(!(opcode & (1 << base))) *************** *** 6528,6534 **** --- 6625,6633 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 6605,6611 **** --- 6704,6712 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 6679,6682 **** --- 6780,6784 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 6714,6717 **** --- 6816,6820 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } if(!(opcode & (1 << base))) *************** *** 6755,6761 **** --- 6858,6866 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 6832,6838 **** --- 6937,6945 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 6904,6907 **** --- 7011,7015 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } } *************** *** 6939,6942 **** --- 7047,7051 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } if(!(opcode & (1 << base))) *************** *** 6978,6984 **** --- 7087,7095 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 7055,7061 **** --- 7166,7174 ---- armNextPC = reg[15].I & 0xFFFFFFFC; reg[15].I = armNextPC + 4; + ARM_PREFETCH; } else { armNextPC = reg[15].I & 0xFFFFFFFE; reg[15].I = armNextPC + 2; + THUMB_PREFETCH; } } else { *************** *** 7108,7111 **** --- 7221,7225 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } break; *************** *** 7123,7126 **** --- 7237,7241 ---- armNextPC = reg[15].I; reg[15].I += 4; + ARM_PREFETCH; } break; |