summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/cpu/drcfe.h
Commit message (Collapse)AuthorAgeFilesLines
* Cleanups and version bump.mame0141u1 Aaron Giles2011-01-241-2/+2
|
* C++-ified drcfe and the associated frontends. You now create a Aaron Giles2011-01-041-96/+128
| | | | | | | | frontend by deriving from drc_frontend and implementing the describe method. RB, if you send me your latest SH4 WIP, I'll convert it for you if this makes you cranky. :)
* running_device -> device_t Aaron Giles2010-12-311-1/+1
| | | | | They both already existed. No sense in having two names for the same object type.
* Correct a long-standing design flaw: device configuration state Aaron Giles2010-01-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | is now separate from runtime device state. I have larger plans for devices, so there is some temporary scaffolding to hold everything together, but this first step does separate things out. There is a new class 'running_device' which represents the state of a live device. A list of these running_devices sits in machine->devicelist and is created when a running_machine is instantiated. To access the configuration state, use device->baseconfig() which returns a reference to the configuration. The list of running_devices in machine->devicelist has a 1:1 correspondance with the list of device configurations in machine->config->devicelist, and most navigation options work equally on either (scanning by class, type, etc.) For the most part, drivers will now deal with running_device objects instead of const device_config objects. In fact, in order to do this patch, I did the following global search & replace: const device_config -> running_device device->static_config -> device->baseconfig().static_config device->inline_config -> device->baseconfig().inline_config and then fixed up the compiler errors that fell out. Some specifics: Removed device_get_info_* functions and replaced them with methods called get_config_*. Added methods for get_runtime_* to access runtime state from the running_device. DEVICE_GET_INFO callbacks are only passed a device_config *. This means they have no access to the token or runtime state at all. For most cases this is fine. Added new DEVICE_GET_RUNTIME_INFO callback that is passed the running_device for accessing data that is live at runtime. In the future this will go away to make room for a cleaner mechanism. Cleaned up the handoff of memory regions from the memory subsystem to the devices.
* DRC frontends must do their own opcode fetching unfortunately. Updated all Aaron Giles2009-01-181-6/+5
| | | | DRC cores to do this. Also tweaked a few oddities in the SH2 DRC.
* Major cpuintrf changes: Aaron Giles2008-11-101-1/+1
| | | | | | | | | | | | | | | | | | | | | | * added a set of cpu_* calls which accept a CPU device object; these are now the preferred means of manipulating a CPU * removed the cpunum_* calls; added an array of cpu[] to the running_machine object; converted all existing cpunum_* calls to cpu_* calls, pulling the CPU device object from the new array in the running_machine * removed the activecpu_* calls; added an activecpu member to the running_machine object; converted all existing activecpu_* calls to cpu_* calls, pulling the active CPU device object from the running_machine * changed cpuintrf_push_context() to cpu_push_context(), taking a CPU object pointer; changed cpuintrf_pop_context() to cpu_pop_context(); eventually these will go away * many other similar changes moving toward a model where all CPU references are done by the CPU object and not by index
* Final CPU header updates. Mostly just re-naming the re-inclusions. Derrick Renaud2008-08-131-1/+3
| | | | | The structures/names were getting too complex for my macros to handle. They would require hand editing and my computer is too slow to keep re-compiling. Passes a clean compile.
* Hornet driver: Aaron Giles2008-06-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | - connected EEPROM (doesn't seem to affect much) - cleaned up system register access GTI Club driver: - altered network IRQ clear to fix several problems - added Guru readme - fixed crashes due to missing inputs - gticlub "works" again ZR107 driver: - added Guru readme - cleaned up system register access - these games work again with altered network IRQ timing NWK-TR driver: - added Guru readme DRC frontend: - now passes pointer to previous instruction when describing PPC frontend: - attempts to roughly take into account branch and CR logical folding in timing computations
* DRC frontend: Aaron Giles2008-06-101-16/+6
| | | | | | | | | | | | | | | | * changed from tracking "live" registers to tracking "necessary" registers * genericized register tracking to be more flexible * added previous instruction pointer to opcode descriptions PowerPC frontend/DRC: * cleaned up register tracking implementation * fixed numerous errors and shortcomings in the tracking * added support for removing unnecessary XER CA and CR0 computations * updated UML logging to output new frontend statistics MIPS3 frontend/DRC: * tweaked register tracking to match new DRC frontend system * updated UML logging to output new frontend statistics
* Added new front-end flag to tag privileged instructions. Aaron Giles2008-05-251-10/+11
| | | | Minor tweaks/cleanups to the MIPS3 drc.
* Minor cleanup. Aaron Giles2008-05-211-2/+0
|
* New universal dynamic recompiler system. The central module Aaron Giles2008-05-111-18/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* Normalized function pointer typedefs: they are now all Aaron Giles2008-03-031-2/+2
| | | | | | | | | | suffixed with _func. Did this throughout the core and drivers I was familiar with. Fixed gcc compiler error with recent render.c changes. gcc does not like explicit (int) casts on float or double functions. This is fracking annoying and stupid, but there you have it.
* Copyright cleanup: Aaron Giles2008-01-061-1/+1
| | | | | | - removed years from copyright notices - removed redundant (c) from copyright notices - updated "the MAME Team" to be "Nicola Salmoria and the MAME Team"
* Initial checkin of MAME 0.121.mame0121 Aaron Giles2007-12-171-0/+188