summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu
Commit message (Collapse)AuthorAgeFilesLines
* Cleanups for 0.125u3. Aaron Giles2008-05-299-56/+56
|
* Removed obsolete comment. Aaron Giles2008-05-291-2/+0
|
* Moved implementation-specific state into a pointer hanging off of the core Aaron Giles2008-05-292-341/+366
| | | | | | | MIPS3 state. Removed large context in favor of a pointer to the large context to help improve context switch times.
* Several miscellaneous changes: Aaron Giles2008-05-2919-102/+399
| | | | | | | | | | | | | | | | | | | | | | | | 1. In the MIPS core: - renamed struct mips3_config -> mips3_config - updated all drivers to the new names - removed MIPS3DRC_STRICT_COP0 flag, which is no longer used - a few minor cleanups 2. In the CPU interface: - added new 'intention' parameter to the translate callback to indicate read/write/fetch access, user/supervisor mode, and a flag for debugging - updated all call sites to pass an appropriate value - updated all CPU cores to the new prototype 3. In the UML: - added new opcode SETC to set the carry flag from a source bit - added new opcode BSWAP to swap bytes within a value - updated C, x86, x64 back-ends to support the new opcodes - updated disassembler to support the new opcodes 4. In the DRC frontend: - fixed bug in handling edge case with the PC near the 0 or ~0
* Fixed a benign bug in the x86 DRC backend Nathan Woods2008-05-281-1/+1
|
* Added new front-end flag to tag privileged instructions. Aaron Giles2008-05-255-82/+23
| | | | Minor tweaks/cleanups to the MIPS3 drc.
* Fixed memory access in the 80286 cpu core which made i286.h obsolete. ↵ Wilbert Pol2008-05-242-38/+4
| | | | Changed CPUINFO_INT_MAX_INSTRUCTION_BYTES to prevent crashes during disassembly.
* Fixed COP420 instructions XAS and INIL. Fixed cycle count for extended ↵ Curt Coder2008-05-235-56/+86
| | | | opcodes. Added CKO general purpose input.
* Fixed COP420 instructions JSRP, LBI, LQID, and SKT. Draco now has sound. Curt Coder2008-05-223-26/+26
|
* Cleanups and version bump. Aaron Giles2008-05-2211-110/+110
|
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2008-05-223-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Subject: [patch] More Machine->machine changes, add machine to irq callbacks Hi mamedev, Here are two more patches to eliminate Machine globals. The first patch was autogenerated by the attached fixup script. That script has been updated to catch additional cases which it previously missed (when Machine is the last parameter to a function or Machine is used in an assignment). This makes ~50 more files deprecat.h free. A sizable chunk (~20%) of the remaining uses of the Machine global in the drivers are due to irq callbacks for sound and machine updates. Typically such callbacks need to call cpunum_set_input_line, which requires a machine parameter, so if the callbacks don't pass the machine parameter, these routines have no choice but to reference the global variable. The second patch attempts to address most cases of this by adding the machine parameter to the callback interfaces. This allows us to remove #include "deprecat.h" from ~150 files, at the cost of having to fix up hundreds of callbacks. In total, these patches reduced the number of files with deprecat.h from 783 to 575. ~aa
* From: Antoine Mine [mailto:Antoine.Mine@ens.fr] Aaron Giles2008-05-227-892/+968
| | | | | | | | | | | | | | | | | | | Subject: saturn CPU patch Dear MAMEDev, The attached patch corrects several bugs in the emulation of the saturn CPU. These corrections are needed to make new HP48 drivers (to be submitted to MESS imminently) work. AFAIK, MESS is the only place where this CPU is used, so, the patch should not cause any regression in MAME. The patch is against 0125u1. Best regards, - Antoine Mine
* Moving old DRC out of the way. Aaron Giles2008-05-222-2/+2
|
* UML changes: Aaron Giles2008-05-228-179/+627
| | | | | | | | | | | | | | | | | | * Added new opcode LZCNT which returns the number of leading zeros in a parameter. * Added new opcode XTRACT which is a combined rotate/mask (basically rlwinm from PowerPC) * Added new opcode INSERT which is a combined rotate/mask/blend (basically rlwimi from PowerPC). Best. Opcode. Ever. * Updated all back-ends to support these new opcodes. * Fixed several bugs relating to shifts/rotates and optimizing out cases incorrectly. MIPS3 DRC changes: * Updated to use INSERT and XTRACT where appropriate * Cleaned up register usage to enable an additional direct mapping; this means Linux gets 1 now and Windows gets 3
* Added support in the MIPS recompiler to map a few common registers to Aaron Giles2008-05-212-71/+132
| | | | | | machine registers if the machine supports it. Currently only x64 on Windows has enough free registers to do so, though PowerPC will almost certainly be able to take advantage of this. Gives a minor speedup.
* Minor cleanup. Aaron Giles2008-05-212-14/+0
|
* Fix crasher in drcfe.c. Aaron Giles2008-05-201-3/+4
|
* Implemented IDT instructions. All invalid instruction asserts are now ↵ Aaron Giles2008-05-201-37/+19
| | | | runtime-only.
* Fixed 80286 databus widths. Wilbert Pol2008-05-191-2/+2
|
* 64-bit GCC compile fix. R. Belmont2008-05-191-1/+1
|
* Numerous MIPS3 DRC updates: Aaron Giles2008-05-196-221/+382
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * Fixed front-end so that virtual no-op instructions are still targeted as branch targets. * Fixed front-end to mark the beginning of each sequence as needing TLB validation, since any sequence can be jumped to from anywhere. * Redid the MIPS3 TLB implementation. Fixed the exception vector and type handling. Changed the bitfields to directly map from the MIPS TLB format. Added distinction between TLB fill and TLB valid/modified exceptions. * Added separate modes for user, supervisor, and kernel modes. Each mode does proper verification of addresses now and generates address errors for invalid accesses. * Fixed several bugs in the TLB implementation; not everything works yet but it's a lot closer. * Made COP0 access checking mandatory in non-kernel modes. * Fixed several crashes when recompiling virtual no-ops. * Fixed TLB bug where entries for virtual address 0 were present by default. * Fixed bug in the map variable implementation that would sometimes result in incorrectly recovered values.
* Fixed compiler warning for Apple GCC. R. Belmont2008-05-191-1/+1
|
* Added back-end validation mechanism, and a handful of tests as examples. Aaron Giles2008-05-199-195/+1108
| | | | | | | | | | | | | | This will be expanded in the future. Added two new opcodes: SAVE and RESTORE to save and restore the entire virtual machine state for examination/setup. Added new back-end function get_info() which returns information from the back-end about how many actual registers will be mapped. Fixed a bug that mapped the high a low parts of registers to the same address. This should help the C back-end run better on big-endian architectures.
* Fixed a couple of obvious errors in the TLB implementation. Aaron Giles2008-05-171-3/+3
|
* Added some instrumentation for the MMU. To enable it, turn on PRINTF_MMU at ↵ Aaron Giles2008-05-171-6/+46
| | | | | | the top of the file. Currently it is left on because none of the MAME games rely on it.
* Cleaned up operand sizing in the C core. Should be closer to working Aaron Giles2008-05-172-21/+37
| | | | on big-endian systems.
* Added support for ROUNDSS and ROUNDSD on Penryn architectures. Aaron Giles2008-05-172-224/+127
|
* As if Intel didn't already have enough opcodes. Added defines for new Aaron Giles2008-05-162-0/+126
| | | | Penryn opcodes.
* Added a quick & dirty attempt at implementing tlb_mismatch. It's likely wrong, Aaron Giles2008-05-162-9/+68
| | | | | but it's better than nothing. Also added an assertion if you jump to unmapped code and added handling for compile-time page faults.
* Oops forgot to save EBX. Aaron Giles2008-05-161-0/+2
|
* Fix bug 1804. Now checking for SSE3 before using truncation functions. Aaron Giles2008-05-162-15/+78
| | | | Also fixed incorrect floating point assertion in x86 back-end.
* Cleanups and version bump.mame0125u1 Aaron Giles2008-05-1510-545/+545
|
* Removed unused functions. Aaron Giles2008-05-151-72/+3
|
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2008-05-152-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | Subject: [patch] Remove opbase globals from the public interface Hi mamedev, There are several variables associated with opbase handling which are global and documented in memory.h and thus their use is not well controlled. This patch attempts to remedy this. Because they are used in various inline memory functions, they can't yet be made local to memory.c, but by rescoping their declaration they can be hidden, much like we hide totalcpu. Most of the uses are in OPBASE_HANDLER() macros, so by encapsulating the opbase state into a struct and adding that to the handler interface those can be converted to local variable manipulation. There is one use in missile.c in a MACHINE_START that I simply removed, it shouldn't be needed. One side effect of this patch is that the various unsafe memory macros can't be used directly, they will be a compiler error now. That is probably for the best. ~aa
* - revert commit 1566 Laurent Desnogues2008-05-131-1/+1
|
* - don't use $(LIBS) for linking where it's not needed (hope I did not break Laurent Desnogues2008-05-131-1/+1
| | | | Windows or cross builds)
* Fixed unused function and uninitialized variable errors. R. Belmont2008-05-121-6/+12
|
* - define isnan as _isnan for MSC_VER Laurent Desnogues2008-05-121-2/+3
|
* Fix incorrect assertion. Aaron Giles2008-05-121-13/+7
|
* DS5002FP core Manuel Abadia2008-05-125-0/+4754
|
* Potential fix for Linux crashes. Aaron Giles2008-05-121-2/+2
|
* Fixed a bunch of compiler errors w/64-bit GCC. Result does not run. R. Belmont2008-05-122-7/+13
|
* New universal dynamic recompiler system. The central module Aaron Giles2008-05-1126-11213/+23865
| | | | | | | | | | | | | | | | | | | | | | | | | | | | is drcuml.c, which defines a universal machine language syntax that can be generated by a frontend recompiler and then retargeted via a generic backend interface to any of a number of different architectures. A disassembler for the UML is also included to allow examination of the generated UML code. Currently supported backend architectures include 32-bit x86, 64-bit x86, and a platform-neutral interpreted C backend that can be used as a fallback for platforms without native support. The C backend also performs additional validation to ensure assumptions are met. Along with the new architecture is a new MIPS III/IV recompiler frontend. This frontend has been rewritten from the old x64-specific recompiler to generate UML opcodes instead. This means that the single recompiler can be used to target multiple backend architectures and should in theory produce identical results across all of them. The old 32-bit and 64-bit MIPS recompilers are now officially retired. The new system provides similar performance (within 5% generally) to the old system and has similar compatibility. The only currently known issues are some problems with the two Gauntlet 3D games.
* [CDP1802] Appease compiler. Curt Coder2008-05-101-1/+1
|
* [CDP1802] Added memory address parameter to DMA callbacks, and added a macro ↵ Curt Coder2008-05-092-25/+32
| | | | for the CPU interface.
* Spacing and version bump.mame0125 Aaron Giles2008-05-051-4/+4
|
* Added xchg opcodes. Aaron Giles2008-05-051-1/+60
|
* From: Atari Ace [mailto:atari_ace@verizon.net] Aaron Giles2008-05-016-1/+8
| | | | | | | | | | | | | | | | | | Subject: [patch] Small deprecat.h related cleanup Hi mamedev, While doing some work on eliminating some uses of deprecat.h, I came across a few files that didn't have it that used deprecated features. A little investigation revealed they were getting it through debugger.h, typically by referencing m68000.h. Since deprecat.h is intended to document the files that need updating (otherwise it would just be included in a common header), I reworked debugger.h to not import it when the debugger is not enabled, and fixed the files that broke as a result. ~aa
* Couple of minor tweaks to sync with offline WIP work. Aaron Giles2008-05-012-1/+34
|
* Cleanups for 0.124u4. Aaron Giles2008-04-241-10/+10
|