Commit Graph

290 Commits

Author SHA1 Message Date
joevt
50dbd5eccd Fix RTC not always updating
Fixed an issue where RTC was not being updated if only the upper 32 bits (seconds) was read.
Also simplified things by always updating the timestamp instead of only when the seconds changes.
2022-09-15 20:54:22 -07:00
joevt
01d7d6bac3 Make accessing RTC or TBR not affect the other
Fixed an issue where the following would cause inconsistent results (tb in the left column would sometimes decrement instead of always incrementing):
2 0 do 2 0 do cr tb@ 8 u.r ." ." 8 u.r loop 2 0 do cr 12 spaces rtc@ 8 u.r ." ." 8 u.r loop 2 0 do cr tb@ 8 u.r ." ." 8 u.r space rtc@ 8 u.r ." ." 8 u.r loop loop

RTC and TBR could not be used simultaneously because they are both incremented by an amount based on the last time stamp but that time stamp can be changed by accessing either RTC or TBR. The solution is to have a different time stamp for each.
2022-09-15 20:21:54 -07:00
joevt
ce925f5e56 Fix RTC upper
Fixed a typo that caused rtc@ to always return 0 for the upper 32 bits (represents seconds).
The problem could cause the following to hang on Power Mac 7500:
cr 2000 0 do get-msecs u. 1 ms loop
2022-09-15 19:34:46 -07:00
Maxim Poliakovski
b38d00ce2d cpu/ppc: improve support for external interrupts.
Support generating of external interrupt exception
in MTMSR and RFI when MSR[EE] is re-enabled and
external interrupt still pending.
2022-08-24 14:15:47 +02:00
Maxim Poliakovski
8c0f391548 ppcemu: add enums for HID0 and HID1. 2022-08-15 14:45:55 +02:00
joevt
b76bfedf4b Remove unnecessary linefeeds from log
To remove blank lines in the dingusppc.log file or in the console output when -d is used.
2022-08-14 05:26:56 -07:00
Maxim Poliakovski
0c77cccb9e ppcopcodes: fix mcrf (again). 2022-05-21 14:51:28 +02:00
Maxim Poliakovski
b47de8b042 Implement MPC601 style RTC. 2022-05-21 14:51:27 +02:00
Maxim Poliakovski
d83fdd8866 ppcexec: remove old code. 2022-03-02 17:02:32 +01:00
Maxim Poliakovski
646880cbf2 Interpreter loop is now controlled by exec_flags. 2022-03-02 16:55:20 +01:00
Maxim Poliakovski
f1ed56ae9a debugger: a couple of cosmetic improvements. 2022-02-26 10:57:13 +01:00
Maxim Poliakovski
123f820775 ppcopcodes: fix lswi/stswi emulation. 2022-02-19 23:23:24 +01:00
Maxim Poliakovski
477ad7ddee ppcopcodes: fix lswx/stswx emulation. 2022-02-19 23:23:24 +01:00
Maxim Poliakovski
b39e884d61 ppcfpopcodes: add missing std:: prefixes. 2022-02-17 00:20:18 +01:00
Maxim Poliakovski
de65196c4f ppcfpopcodes: remove unused template parameters. 2022-02-17 00:11:14 +01:00
Maxim Poliakovski
8f528184b8 Fix compilation with gcc, part 1. 2022-02-16 23:52:43 +01:00
Maxim Poliakovski
25a4fd1107 Allow adding timers from timer callbacks. 2022-02-05 17:10:57 +01:00
dingusdev
3258abe190 crnand and crnor fixes 2022-01-22 22:33:13 -07:00
Maxim Poliakovski
c8d39d5ee5 ppcopcodes: fix creqv emulation. 2022-01-21 16:32:07 +01:00
Maxim Poliakovski
2442bd17b3 ppcopcodes: fix crand emulation. 2022-01-21 14:56:10 +01:00
Maxim Poliakovski
c864b9b7d9 ppcopcodes: fix cror emulation. 2022-01-21 14:37:51 +01:00
Maxim Poliakovski
d8c3cfc38e Fix next instruction address after external exceptions. 2022-01-20 01:38:41 +01:00
Maxim Poliakovski
e1e651966e Revert "Further condition reg opcode patches"
This reverts commit 756d32df07.
2022-01-10 18:10:39 +01:00
Maxim Poliakovski
c12bab9e27 Revert "Quick fix for creqv"
This reverts commit 8efc61e1b9.
2022-01-10 18:01:48 +01:00
Maxim Poliakovski
aefc66d118 Fix external exception processing. 2022-01-10 17:56:24 +01:00
Maxim Poliakovski
339db4a078 Add timers management. 2022-01-10 17:56:24 +01:00
dingusdev
8efc61e1b9 Quick fix for creqv 2022-01-08 15:22:27 -07:00
dingusdev
756d32df07
Further condition reg opcode patches 2022-01-07 20:40:07 -07:00
Maxim Poliakovski
9cd7ca0077 ppcopcodes: fix crxor. 2022-01-08 04:21:09 +01:00
Maxim Poliakovski
7bdad7703c Predict TBR values based on elapsed virtual time. 2021-12-20 00:12:44 +01:00
Maxim Poliakovski
087402290d Implement virtual time based on instruction counting. 2021-12-20 00:10:02 +01:00
Maxim Poliakovski
fd33c10712 ppcmmu.cpp: remove unused local variables. 2021-12-07 23:23:39 +01:00
dingusdev
c2a63bab09 FP Opcode Test Fixes 2021-10-30 16:43:13 -07:00
dingusdev
767735251b FP comp tests & various fixes 2021-10-24 14:00:35 -07:00
dingusdev
a28ef677fd Fixing FP mul ops & tests 2021-10-23 13:05:20 -07:00
Maxim Poliakovski
c0cd6eb38f Add missing licence headers, update license date. 2021-10-23 21:00:31 +02:00
Maxim Poliakovski
9329d56d83 Move devices into dedicated subdirectories. 2021-10-23 20:17:47 +02:00
dingusdev
7919cd0590
Merge pull request #21 from dingusdev/floating-point
Floating point fixes. Rehauled floating-point emulation code. Fixed a test suite for floating points.
2021-10-19 07:18:21 -07:00
dingusdev
fb277945c2 Floating point test fixes 2021-10-19 07:16:15 -07:00
Maxim Poliakovski
331b93d4d6 Fix compilation with Clang 11. 2021-10-17 23:41:53 +02:00
dingusdev
3c7fc58ac0 Small test case fixes for floating points 2021-10-16 22:33:56 -07:00
dingusdev
00dd99d851 Temporarily removing comparisons
These seem to cause the test program to crash. Will reinstate once the cause of the crash is resolved.
2021-10-15 20:02:00 -07:00
dingusdev
7d7a4b453f Partial test file reading fix 2021-10-15 06:28:11 -07:00
dingusdev
7ce94a6ab5 Further fixing the test code 2021-10-14 21:05:58 -07:00
dingusdev
061b061813 Floating point overhaul, part 4
Reworked the INF/NAN checks again - This time, only checking them when the result is calculated
2021-10-14 20:31:10 -07:00
dingusdev
9251745d6f Fixed floating-point test generation 2021-10-14 07:19:04 -07:00
Maxim Poliakovski
e53296f7a9 Implement all required context-synchronizing events. 2021-10-13 20:58:09 +02:00
Maxim Poliakovski
2a9d364b1b ppcmmu: implement separate TLB pointers for read/write. 2021-10-10 22:01:02 +02:00
Maxim Poliakovski
3eb2d3cba7 ppcmmu: verbose MMU state with mmu_print_regs(). 2021-10-10 22:01:02 +02:00
Maxim Poliakovski
bde5b71167 ppcmmu: re-arrange code to avoid formward declarations. 2021-10-10 22:01:02 +02:00