Léo Lam
c3dadd140b
Merge pull request #10074 from lioncash/pte
...
MMU: Tidy up PTE-related code
2021-08-31 19:17:08 +02:00
Léo Lam
ef358a122a
Merge pull request #10075 from lioncash/memcheck
...
MMU: Don't truncate 64-bit values when calling Memcheck()
2021-08-31 19:06:33 +02:00
Lioncash
ed0aa5928f
Gekko: Remove unused UReg_PTE
...
PTEs are only ever operated on in terms of their halves in our code
currently, so this can be removed.
2021-08-31 12:18:31 -04:00
Lioncash
029aff0741
MMU: Remove now-unused defines
...
Now that we're using register unions where applicable, we can remove
these defines, since they're now unused.
2021-08-31 12:18:28 -04:00
Lioncash
7a6b63b309
MMU: Don't truncate 64-bit values when calling Memcheck()
...
Previously in Read_U64 and Write_U64 the value that was read or written
would be truncated to a 32-bit value before being passed off to the
memcheck handler, which can result in incorrect values being logged out.
2021-08-31 11:39:13 -04:00
Lioncash
a8ebca4fc6
MMU: Invert conditionals in Memcheck()
...
Lets us unindent code a little bit.
2021-08-31 11:30:57 -04:00
Lioncash
ee40b640d3
MMU: Make use of UPTE_Lo and UReg_SR in TranslatePageAddress()
...
Allows us to get rid of a bit of masking in exchange for stating the
bits being accessed or written to directly.
2021-08-31 10:52:52 -04:00
Lioncash
e687569e02
Gekko: Add union for segment registers
...
Will be used in the following commit.
2021-08-31 10:45:12 -04:00
Lioncash
75840f62ff
MMU: Make use of UReg_SDR1 in SDRUpdated()
...
Lets us simplify SDRUpdated() a little bit.
This also fixes the layout of UReg_SDR1. Turns out this struct has been
incorrect (from a little-endian perspective) the entire time and went
unnoticed, since the union was never used.
2021-08-31 10:20:56 -04:00
Lioncash
1c776d8c1a
MMU: Move invalidation logic into the TLBEntry struct
...
Puts the invalidation logic in one place and lets us tidy up
InvalidateTLBEntry a little.
2021-08-31 10:04:44 -04:00
Lioncash
3216040bfe
MMU: Remove implicit sign conversions and truncation in UpdateTLBEntry
...
These are trivial to resolve.
Converting the structure member into a u32 results in no increase in
structure size, as it's making use of the three extra padding bits in
the structure.
2021-08-31 10:00:18 -04:00
Lioncash
c008b1c335
MMU: Move UPTE1/UPTE2 unions into Gekko.h
...
Keeps the register definitions in one spot and lets us remove a comment
about them.
2021-08-31 09:45:28 -04:00
Lioncash
65e131ef5f
MMU: Convert PTE unions over to Common::BitField
2021-08-31 09:36:13 -04:00
Léo Lam
c5becb4a7e
Merge pull request #10040 from JosJuice/simplify-mcrfs
...
Interpreter: Simplify mcrfs implementation
2021-08-31 15:31:54 +02:00
Léo Lam
48339afb98
Merge pull request #10041 from lioncash/conv
...
Interpreter: Make signedness and narrowing conversions explicit
2021-08-31 01:07:27 +02:00
Léo Lam
271612f328
Merge pull request #10064 from lioncash/regs
...
Gekko: Migrate register structs over to Common::BitField
2021-08-30 23:19:17 +02:00
Léo Lam
6659f8019e
Merge pull request #10035 from JosJuice/jitarm64-dcbx-in-loop
...
JitArm64: dcbx loop detection for improved performance when invalidating large memory regions
2021-08-30 22:39:20 +02:00
Léo Lam
86f2c7889d
Merge pull request #8932 from sepalani/cw-map
...
PPCSymbolDB: Improve symbol map column detection
2021-08-29 23:28:09 +02:00
Lioncash
dbf8e27d7f
Gekko: Convert UReg_PTE over to using Common::BitField
2021-08-29 06:16:55 -04:00
Lioncash
e4e1b6064d
Gekko: Convert UReg_THRM3 over to using Common::BitField
2021-08-29 06:16:55 -04:00
Lioncash
11e76e1f67
Gekko: Convert UReg_THRM12 over to using Common::BitField
2021-08-29 06:16:55 -04:00
Lioncash
12b87922fb
Gekko: Convert UReg_BAT_Lo over to using Common::BitField
2021-08-29 06:16:54 -04:00
Lioncash
b4496e6653
Gekko: Convert UReg_BAT_Up over to using Common::BitField
2021-08-29 06:16:51 -04:00
Lioncash
1e4ecfe3d4
Gekko: Convert UReg_DMAL over to using Common::BitField
2021-08-27 11:20:37 -04:00
Lioncash
474e09c239
Gekko: Convert UReg_DMAU over to using Common::BitField
2021-08-27 11:19:21 -04:00
Lioncash
a126821d5e
Gekko: Convert UReg_WPAR over to using Common::BitField
2021-08-27 11:18:03 -04:00
Lioncash
8ac079a647
Gekko: Convert UReg_MMCR1 over to using Common::BitField
2021-08-27 11:16:41 -04:00
Lioncash
300f7c10bd
Gekko: Convert UReg_MMCR0 over to using Common::BitField
2021-08-27 11:15:15 -04:00
Lioncash
1ec3768b84
Gekko: Convert UReg_SDR1 over to using Common::BitField
...
Also fixes a typo in the struct name, since it was referring to SPR1
instead of SDR1. Given this isn't used anywhere yet, it's a painless
change.
2021-08-27 11:12:30 -04:00
Lioncash
9e183e63f1
Gekko: Convert UReg_HID4 over to using Common::BitField
2021-08-27 11:10:22 -04:00
Lioncash
6ab2e5ab16
Gekko: Convert UReg_HID2 over to using Common::BitField
2021-08-27 11:08:14 -04:00
Lioncash
02ec9c3b50
Gekko: Convert UReg_HID0 over to using Common::BitField
2021-08-27 11:05:51 -04:00
Lioncash
4591246608
Gekko: Convert UReg_FPSCR over to using Common::BitField
2021-08-27 11:01:32 -04:00
Lioncash
4ecdcc9d78
Gekko: Convert UReg_MSR over to using Common::BitField
2021-08-27 10:54:49 -04:00
Lioncash
1863212d94
Gekko: Convert UReg_XER over to using Common::BitField
2021-08-27 10:46:38 -04:00
Franz-Josef Haider
9cd878218c
Interpreter_Tables: specify FL_IN_A for twi.
...
rGPR[inst.RA] is an input to twi.
2021-08-27 16:59:02 +03:00
Mai M
922f53e16e
Merge pull request #10049 from JosJuice/jitarm64-fault-to-handler
...
JitArm64: Make HandleFastmemFault less unsafe
2021-08-24 08:33:58 -04:00
JosJuice
6b8d17ce57
Revert "JitArm64: Disable indexed paired loadstore instructions"
...
This reverts commit f70ddebb40 .
2021-08-23 11:01:07 +02:00
JosJuice
3071a1d13b
JitArm64: Indexed paired loadstores workaround, attempt 2
...
f70ddeb did not make the issue go away.
2021-08-23 10:46:28 +02:00
Mai M
c227023375
Merge pull request #10050 from JosJuice/jitarm64-disable-psq-x
...
JitArm64: Disable indexed paired loadstore instructions
2021-08-22 19:11:16 -04:00
JosJuice
f70ddebb40
JitArm64: Disable indexed paired loadstore instructions
...
Since the merge of b24b79e , we've gotten reports that the
following games are broken on JitArm64:
* Sonic Heroes
* The SpongeBob SquarePants Movie
* Astérix & Obélix XXL
* The Incredibles: Rise of the Underminer
Disabling the register cache avoids the issue, so the cause
of the bug might not actually have anything to do with the
newly implemented instructions. Nevertheless, I don't want
to ship a beta with this problem present, so I would like to
disable these instructions for the time being.
2021-08-22 22:16:02 +02:00
JosJuice
0cf8405126
JitArm64: Make HandleFastmemFault less unsafe
...
HandleFastmemFault works correctly when faults only happen in
expected locations, but it does some things that are rather
dangerous for faults in unexpected locations, like decrementing
an iterator without checking whether it's equal to begin.
This change cleans up the logic by making m_fault_to_handler's
key be the end of the fastmem region instead of the start.
2021-08-22 19:51:21 +02:00
JosJuice
90fcaf7e96
Jit: Use one less register in dcbx
...
We were using a "value" register to avoid clobbering physical_addr,
but this isn't actually needed anymore. The only bits we need from
physical_addr after we start clobbering it are bits 5-9, and
those bits are identical in effective_addr and physical_addr,
so we can read them from effective_addr instead.
2021-08-19 23:26:11 +02:00
Admiral H. Curtiss
f5cd17925a
PowerPC: Fix for calling InvalidateICacheLines() with a count of 1 causing a (harmless) second invalidation.
2021-08-19 22:54:34 +02:00
JosJuice
4f09c320e8
Interpreter: Simplify mcrfs implementation
2021-08-18 18:18:19 +02:00
Lioncash
b7b45eb111
Interpreter: Make signedness and narrowing conversions explicit
...
Makes our conversions between the different signs explicit to indicate
that they're intentional and also silences compiler warnings when
compiling with sign conversion or stricter truncation warnings enabled.
2021-08-18 09:56:00 -04:00
Mai M
6863b7ae9e
Merge pull request #10036 from JosJuice/jitarm64-psq-x
...
JitArm64: Implement indexed paired loadstore instructions
2021-08-17 23:00:57 -04:00
JosJuice
b24b79e373
JitArm64: Implement indexed paired loadstore instructions
...
After writing 23b81ef without realizing that we hadn't actually
implemented the indexed paired loadstore instructions yet,
I am now implementing them.
2021-08-17 11:29:38 +02:00
JMC47
a36855c983
Merge pull request #9818 from JosJuice/jits-cdts-double
...
Jits: Don't use fast double-to-single when input is double precision
2021-08-17 05:21:08 -04:00
JosJuice
62e7b34c88
JitArm64: Don't lock W30 in dcbx
...
If W30 is in use and we don't lock it, it will be pushed to the
stack before the BLR, so there isn't really any reason to lock W30.
2021-08-17 10:30:18 +02:00