summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/mips
Commit message (Collapse)AuthorAgeFilesLines
* MIPS disassembler refinements (mips1, mips3, psx, rsp) AJR2025-04-172-150/+210
| | | | | | | | * Change hexadecimal prefix from $ to 0x ($ means something else in MIPS assembler syntax) and omit for small numbers * mips1, mips3, psx: Use shorthand mnemonics bal, beqz(l), bnez(l), li, move, neg, negu, not where applicable * mips1, mips3, psx: Add delay slot to jr ra for stepping out * mips1, mips3: Remove invalid instructions from other MIPS cores and use .word syntax for invalid instructions * mips3: Fix field spacing for some instructions
* misc cpu: no need to check debug enabled flag manually hap2025-04-112-3/+3
|
* mips/mips1: remove embedded syscall logging Patrick Mackinlay2025-03-202-233/+4
|
* -cpu/drcbex64.cpp: Align HANDLE entry point to 16-byte boundary. Vas Crabb2025-03-122-122/+96
| | | | -cpu/mips/mips3drc.cpp: Don't start a new block for every callable helper.
* Cleanup: Vas Crabb2025-02-032-101/+106
| | | | | | | | | | | | | | | | | cpu/drcbex86.cpp: Don't use static address space accessors. This gives a big performance improvement. cpu/drcbeut.cpp: Made failure to resolve address space accessors fatal. cpu/drcbearm64.cpp: Removed fallback to static address space accessors. cpu/mips3/mibs3.cpp: Removed static address space accessors. All they were doing was hurting performance. cpu/drcbex64.cpp: Don't use goofy X64_WINDOWS_ABI macro, just check _WIN32. The only other environment that uses the Windows calling convention is (U)EFI, and we can move feature detection to util/abi.h if we ever need to care about it.
* Revert "wip" Patrick Mackinlay2025-01-101-1/+1
| | | | This reverts commit d731222aac57049354191bed35917206a25460db.
* wip Patrick Mackinlay2025-01-101-1/+1
|
* cpu/drcbec.cpp, cpu/mips/mips3.cpp: Use 32x32=64-bit multiply inlines AJR2024-11-101-6/+6
|
* mips3: Fixes for IDT-specific instructions. [Ryan Holtz] (#12958) MooglyGuy2024-11-102-2/+22
| | | Co-authored-by: Ryan Holtz <TheMogMiner>
* igs/igs_m027.cpp, igs/igs_m027xa.cpp: Miscellaneous improvements: Vas Crabb2024-10-101-2/+5
| | | | | | | | | | | | * igs/igs_m027.cpp: Added memory clear switch to clear memory contents when power is removed (hard reset with the switch on to clear NVRAM). * igs/igs_m027xa.cpp: Got rid of hopper from Crazy Bugs (V103JP) since there appears to be no way to use it and exposed hopper switch as a user input so it can still be tested. * igs/igs_m027xa.cpp: Got rid of third bank of DIP switches from Crazy Bugs (V103JP) as comments indicate it isn't physically present (although it is displayed in the input test). * Use mnemonic short names for clones.
* Added ATTR_COLD to common lifecycle methods for many files in src/devices. ↵ holub2024-09-275-26/+26
| | | | (#12822)
* diexec: remove vestigal execute_input_lines() hap2024-09-184-4/+0
|
* mips1: avoid sgi 4d1-3b panic Patrick Mackinlay2024-04-051-1/+1
| | | | * bump r2000 processor revision to avoid emulating a tlb bug
* mips3: Reduce amount of code hidden behind preprocessor #ifs AJR2024-01-092-12/+5
|
* mips/o2dprintf.hxx, pinball/wpc_pic.cpp, shared/isbc_215g.cpp, ↵ AJR2024-01-091-20/+12
| | | | sound/asc.cpp: Use multibyte.h helpers
* mips1: cache diagnostic fixes Patrick Mackinlay2023-09-221-4/+23
| | | | * implement cvt.w.fmt infinity/NaN exception
* r4000: intention is no longer a mask Patrick Mackinlay2023-08-081-6/+6
|
* mips1: improved cache logic for partial word store Patrick Mackinlay2023-08-082-21/+38
|
* sgi/ip20: enable memory configuration Patrick Mackinlay2023-07-252-3/+3
| | | | * add a minimal nvram dump to set eaddr and netaddr
* mips1: fix swl/swr cache logic Patrick Mackinlay2023-07-211-3/+2
|
* mips1: emulate instruction and data caches Patrick Mackinlay2023-07-182-252/+416
|
* mips3: revert mistaken change, fix MT#8694 Patrick Mackinlay2023-07-101-1/+1
|
* emu/devcb.h: Eliminated the need to call resolve() on callbacks. (#11333) Vas Crabb2023-06-171-4/+1
| | | | | | | | | | | | Read callbacks now need a default return value supplied at construction. Replaced isnull() with isunset() which tells you if the callback wasn't configured rather than whether it isn't safe to call. Enabled validation of device callbacks (it seems it was disabled at some point, probably accidentally). Device callbacks and object finders now implement the same interface for resolution.
* mips3: fix tlb modify exception registers Patrick Mackinlay2023-06-072-3/+3
|
* mips3: remove stray printf hap2023-06-031-3/+0
|
* emu/device.h: Removed device (READ|WRITE)_LINE_MEMBER in favor of explicit ↵ MooglyGuy2023-06-011-0/+3
| | | | function signatures. (#11283) [Ryan Holtz]
* mips1: fix build Patrick Mackinlay2023-05-272-8/+9
|
* mips1: fix address translation Patrick Mackinlay2023-05-272-22/+12
|
* Cleaned up logging across the codebase (GitHub #10183). (#11250) [Ryan Holtz] MooglyGuy2023-05-232-4/+1
| | | | | * Converted various logging patterns to use logmacro.h consistently. * Removed redefinitions of LOG_GENERAL. * Use LOGMASKED in more places.
* cpu/mips, sgi/sgi.cpp: Fixed MIPS3 PRID and memory controller RPSS issues: ↵ Jiaxun Yang2023-04-303-2/+15
| | | | | | | | | (#11128) * cpu/mips3: Report proper fcr0 PRID (same as CPU PRID in most cases). * cpu/mips3: Bumped major rev of R4600 PRID to 2 (original R4600 was too problematic so almost all systems are shipped with R4600 rev 2.0). * sgi/indigo.cpp, sgi/indy_indigo2.cpp: Supply clock frequency for memory controller. * sgi/indigo.cpp, sgi/indy_indigo2.cpp: Corrected CPU clock frequencies. * sgi/sgi.cpp: Reimplemented memory controller RPSS taking clock frequency into account and without using a timer.
* kpython: Change CPU to PS/2 Emotion Engine AJR2023-04-292-51/+149
|
* bus/gio64/newport.cpp, cpu/mips/mips3.cpp: Fixed issues affecting IRIX. (#11117) Jiaxun Yang2023-04-181-9/+10
| | | | | * cpu/mips/mips3.cpp: Sign-extend result of COP0 LL instruction. * cpu/mips/mips3.cpp: Ported COP0 Random implementation from new R4000 interpreter. * bus/gio64/newport.cpp: Use octant encoding used by hardware, and fixed Scr2Scr.
* cpu/mips: Fixed memory access handling in the IDT MIPS R4650 core. (#11065) ↵ MooglyGuy2023-04-034-74/+369
| | | | | [Ryan Holtz] Correctly support the R4650's lack of TLB.
* cpu/nec: Fixed build; also, srcclean Vas Crabb2023-03-261-1/+1
|
* -Lua engine: run everything in coroutines. (#11019) Vas Crabb2023-03-251-2/+1
| | | | | | | | | * This lets you use emu.wait(...) directly without mucking around creating coroutines. * Allow emu.wait to accept an attotime argument. * Added a couple more wait helper functions. -emu/profiler.h: Actually use scope-based profiling helpers. * This makes the comment at the top of emu/profile.h less dishonest, and makes it easier to write exception-safe code. * Got rid of some do { ... } while (0) loops that only existed so break could be used like a goto.
* dimemory: Add the target address space to translate, wrap the constants Olivier Galibert2023-03-189-104/+127
| | | | divtlb: Wrap the constants
* Interrupt callback rationalization AJR2023-03-112-7/+10
| | | | | | | | | | | - Make CPUs pass interrupt return PC as a second argument to standard_irq_callback - Add interrupt return PC to "Stopped at interrupt" message produced by debugger 'gint' command - Add messages to trace logs whenever interrupts are accepted - Attempt to step over interrupt routines for applicable debugger commands - Eliminate standard_irq_callback_member wrapper method - Update many CPU cores to invoke standard_irq_callback at the start of or during interrupt processing, rather than at the end or when the input line changes - Remove IRQ callbacks for some input lines that never cause interrupts - mb88xx, mcs48: Add IRQ callbacks for internal interrupts
* r4000.cpp: partially implement secondary cache tag manipulation (#9923) Brice Onken2022-06-132-73/+196
|
* Revert "stupid_git" AJR2022-06-041-5/+5
| | | | This reverts commit c2b6d57e5c966c1d5b986507e599d9919c0e2de7.
* Merge remote-tracking branch 'upstream/master' AJR2022-06-042-2/+2
|\
| * - Removed device_timer, device_timer_id, et al in favor of direct callback ↵ MooglyGuy2022-06-042-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | members. (#9788) Primarily, this removes device_t::device_timer, device_t::timer_set, device_t::synchronize, device_t::timer_expired, and device_timer_id. Use of device_timer often resulted in unnecessary trampolining in addition to switch/case overhead on a driver/device level, and additional logic to manage delegated vs. ID-based timers on a core level. In the worst cases, devices were performing a switch/case with only one valid case. device_scheduler::timer_set is marked deprecated as the only remaining direct uses are via the Lua engine and a few drivers that need refactoring anyway. The remaining uses occur via device_scheduler::synchronize. As a middle ground between the extremely short timer_alloc() and the extremely long machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(widget_device::contoso_tick), this)), a helper function in device_t has been added which can be invoked with the following syntax: timer_alloc(FUNC(widget_device::contoso_tick), this) - Additional changes/cleanups performed along the way: - Converted to use logmacro: * src/devices/bus/ieee488/hp9895.cpp * src/devices/bus/ieee488/remote488.cpp * src/devices/bus/isa/hdc.cpp * src/devices/bus/isa/omti8621.cpp * src/devices/bus/isa/sc499.cpp * src/devices/bus/vip/vp550.cpp * src/devices/cpu/i86/i186.cpp * src/devices/cpu/lc8670/lc8670.cpp * src/devices/machine/68230pit.cpp * src/devices/machine/corvushd.cpp * src/devices/machine/ds1994.cpp * src/devices/machine/ticket.cpp * src/mame/audio/pinsnd88.cpp * src/mame/drivers/notetaker.cpp * src/mame/machine/asic65.cpp * src/mame/machine/rmnimbus.cpp * src/mame/machine/victor9k_fdc.cpp * src/mame/video/uv201.cpp - Made usage of m_member prefix consistent: * src/devices/bus/isa/hdc.cpp * src/devices/bus/isa/omti8621.cpp * src/devices/bus/vme/vme_fccpu20.cpp * src/devices/machine/ds1386.cpp * src/devices/machine/i7220.cpp - Spacing consistency pass: * src/devices/bus/isa/hdc.cpp * src/devices/bus/isa/omti8621.cpp * src/devices/bus/thomson/nanoresau.cpp * src/devices/bus/ti99/internal/992board.cpp * src/devices/bus/ti99/internal/genkbd.cpp * src/devices/bus/ti99/internal/joyport/handset.cpp * src/devices/bus/vme/vme_fccpu20.cpp * src/devices/cpu/i86/i186.cpp * src/devices/cpu/lc8670/lc8670.cpp * src/devices/machine/68230pit.cpp * src/devices/machine/cop452.cpp * src/devices/machine/corvushd.cpp * src/devices/machine/hp_dc100_tape.cpp * src/devices/machine/hp_taco.cpp * src/devices/machine/meters.cpp * src/devices/machine/microtch.cpp * src/devices/machine/phi.cpp * src/devices/video/ef9365.cpp * src/devices/video/v9938.cpp * src/mame/drivers/alphaskop41xx.cpp * src/mame/drivers/myb3k.cpp * src/mame/drivers/notetaker.cpp * src/mame/drivers/wpc_an.cpp * src/mame/machine/midikbd.cpp * src/mame/machine/rmnimbus.cpp * src/mame/machine/wpc_lamp.cpp * src/mame/machine/wpc_out.cpp - Removed string-based ioport lookups: * src/devices/bus/ti99/internal/joyport/handset.cpp * src/devices/bus/ti99/internal/joyport/mecmouse.cpp * src/devices/bus/vme/vme_hcpu30.cpp * src/mame/machine/k7659kb.cpp * src/mame/machine/ti85.cpp - Adjustments to grammar/wording in comments * src/devices/bus/sms_ctrl/lphaser.cpp * src/devices/bus/sms_ctrl/sports.cpp * src/devices/bus/snes/event.cpp * src/devices/bus/snes/sa1.cpp * src/devices/bus/thomson/nanoresau.cpp * src/devices/bus/z88/z88.cpp * src/devices/machine/ds1386.cpp * src/devices/machine/vic_pl192.cpp - Favored BIT() macro for single-bit checks * src/devices/bus/ti99/internal/992board.cpp * src/devices/bus/ti99/joyport/handset.cpp * src/mame/drivers/notetaker.cpp * src/mame/machine/wpc_lamp.cpp * src/mame/machine/wpc_out.cpp - Removed C89-style variable declarations when noticed * src/devices/bus/isa/hdc.cpp * src/devices/bus/sms_ctrl/lphaser.cpp * src/devices/bus/ti99/joyport/mecmouse.cpp * src/devices/machine/acorn_vidc.cpp * src/devices/sound/ymz280b.cpp * src/devices/video/vic4567.cpp - Removed FUNCNAME to avoid compiler-specific #define checks in devices * src/devices/bus/vme/vme_fccpu20.cpp * src/devices/bus/vme/vme_hcpu30.cpp * src/devices/machine/68230pit.cpp * src/devices/machine/mc14411.cpp * src/mame/drivers/myb3k.cpp - Removed unecessary member prefixes/suffixes * src/devices/video/ef9340_1.cpp * src/mame/drivers/fuukifg2.cpp * src/mame/drivers/fuukifg3.cpp * src/mame/drivers/intv.cpp * src/mame/drivers/simpsons.cpp * src/mame/drivers/socrates.cpp * src/mame/drivers/special_gambl.cpp * src/mame/drivers/sprint4.cpp * src/mame/drivers/ti990_10.cpp * src/mame/drivers/tubep.cpp * src/mame/drivers/vectrex.cpp * src/mame/drivers/wpc_an.cpp * src/mame/drivers/wpc_dot.cpp * src/mame/drivers/wpc_flip1.cpp * src/mame/drivers/wpc_flip2.cpp * src/mame/machine/z80ne.cpp * src/mame/video/rollerg.cpp - Switched to lower-case hex constants * src/devices/video/ef9365.cpp * src/mame/machine/rmnimbus.cpp - Re-ordered driver overrides and function members * src/mame/drivers/boxer.cpp * src/mame/drivers/eurocom2.cpp * src/mame/drivers/exidy.cpp * src/mame/drivers/gpworld.cpp * src/mame/drivers/h19.cpp * src/mame/drivers/ibmpcjr.cpp * src/mame/drivers/mekd5.cpp * src/mame/drivers/mgolf.cpp * src/mame/drivers/myb3k.cpp * src/mame/drivers/nightmare.cpp * src/mame/drivers/notetaker.cpp * src/mame/drivers/ptcsol.cpp * src/mame/drivers/pwrview.cpp * src/mame/drivers/rabbit.cpp * src/mame/drivers/sitcom.cpp * src/mame/drivers/socrates.cpp * src/mame/drivers/sprint4.cpp * src/mame/drivers/techno.cpp * src/mame/drivers/thayers.cpp * src/mame/drivers/ti990_10.cpp * src/mame/drivers/ti990_4.cpp * src/mame/drivers/tv912.cpp * src/mame/drivers/tv990.cpp * src/mame/drivers/uchroma68.cpp * src/mame/drivers/vk100.cpp * src/mame/drivers/votrhv.cpp * src/mame/drivers/wicat.cpp * src/mame/drivers/wpc_an.cpp * src/mame/includes/abc80.h * src/mame/includes/asterix.h * src/mame/includes/fuukifg2.h * src/mame/includes/fuukifg3.h * src/mame/includes/gunbustr.h * src/mame/includes/intv.h * src/mame/includes/namcona1.h * src/mame/includes/newbrain.h * src/mame/includes/poly.h * src/mame/includes/prof80.h * src/mame/includes/rollerg.h * src/mame/includes/s11.h * src/mame/includes/segahang.h * src/mame/includes/simpsons.h * src/mame/includes/spacefb.h * src/mame/includes/tandy2k.h * src/mame/includes/trucocl.h * src/mame/includes/tubebp.h * src/mame/includes/vidbrain.h * src/mame/includes/wolfpack.h * src/mame/includes/wpc_dot.h - Made capitalization consistent on class members * src/devices/machine/meters.cpp * src/mame/drivers/namcona1.cpp * src/mame/drivers/notetaker.cpp -src/devices/bus/isa/hdc.cpp: * Removed fixed-size std::vector in favor of std::unique_ptr -src/devices/bus/isa/s3virge.cpp: * Moved unusually large (for a header) functions into .cpp from header -src/devices/bus/vip/vp550.cpp * Switched to required_device_array to simplify code paths -src/devices/machine/arm_iomd.cpp * Added initializers to constructor * Favored std::size over fixed static sizes -src/devices/machine/ds1386.cpp * Moved register #defines into header enums -src/devices/machine/mc68901.cpp * Removed unnecessary parameters and emu_timer::enable calls -src/devices/machine/mccs1850.cpp * Removed inline overuse -src/devices/machine/meters.cpp * Removed unused members -src/devices/machine/mos6526.cpp * Removed inline overuse -src/devices/machine/nsc810.cpp * Converted to arrays rather than individually-numbered members -src/devices/machine/pxa255.cpp * Simplified DMA transfer code -src/devices/machine/saa1043.cpp * Removed extraneous members in favor of resolve_all_safe -src/devices/machine/vic_pl192.cpp * Shifted constructors, start-up, and maps to be at the top of the source file -src/devices/machine/z8536.cpp * Removed stray uses of device_timer_id -src/devices/sound/cdp1869.cpp * Removed inline overuse -src/devices/sound/mos7360.cpp * Converted to arrays rather than individually-numbered members -src/emu/device.cpp * Removed ID-based timer_alloc * Removed timer_set * Removed synchronize * Removed timer_expired * Added shorthand timer_alloc to avoid lengthy machine().scheduler().timer_alloc() calls -src/emu/schedule.cpp * Removed now-unused m_id and m_device members -src/mame/audio/alesis.cpp * Added initializers to constructor -src/mame/drivers/alto2.cpp * Removed custom-named driver init in favor of driver_init override * Removed octal constant in favor of more standard hex -src/mame/drivers/astinvad.cpp * Fixed 'kamizake' typo -src/mame/drivers/tm990189.cpp * Removed unnecessary machine reset override -src/mame/drivers/unichamp.cpp * Removed custom-named driver init in favor of driver_init override -src/mame/drivers/votrhv.cpp * Fixed ROM_LOAD macros and region() usage in memory maps -src/mame/machine/victor9k_fdc.cpp * Made bracing style consistent across the file -src/mame/video/gime.cpp * Removed unnecessary void specifiers in function prototypes
* | stupid_git AJR2022-06-041-5/+5
|/
* cpu/mips/r4000.cpp: Added TimerIntDis mux to IPEX5. (#9718) Brice Onken2022-05-132-11/+37
|
* mips3: Fixed error flagged by GCC 12 [Ryan Holtz, R. Belmont] arbee2022-05-111-4/+4
|
* Addressed performance loss from recent z80scc changes (#9629) [Ryan Holtz] MooglyGuy2022-04-261-12/+13
| | | | | | | z80scc: Removed unused Z80SCC_USE_LOCAL_BRG and simplified WR15_ZEROCOUNT usage to reduce the likelihood of needless timer activation. mips3drc: Additional micro-optimizations to generate_checksum_block.
* -mips3drc: Moved unchanging conditionals outside for loop in ↵ MooglyGuy2022-04-251-17/+48
| | | | generate_checksum_block; 7% faster. [Ryan Holtz] (#9626)
* srcclean in preparation for 0.243 Vas Crabb2022-04-241-2/+2
|
* Replaced a couple of static_cast downcasts with dynamic_cast for safety, ↵ Vas Crabb2022-04-162-15/+14
| | | | cleaned up some formatting.
* Fix MT07823: nbagold (vegas) watchdog reset when select other game menu from ↵ tedgreen992022-04-142-14/+92
| | | | | | | service menu (#9560) mips3: Add new DRC option to add extra validation to hash jumps vegas: Use new MIPS DRC option atlantis: Use new MIPS DRC option
* src/devices/cpu: Remove #include "debugger.h" where no longer necessary AJR2022-04-065-5/+1
|