First post, by superfury
I've been running the latest test386.asm commit against UniPCemu's improved protection and instruction emulation, but now I strangely see it crashing on the very first or second paging test?
It's never done that, as far as I can remember?
Perhaps the cause is somewhere else? I see the instruction causing the Page Fault trying to move 0xDEADBEEF into the memory at logical address 49F000?
Anyone knows why said problem occurs?
Edit: Turning on the DEBUG constant(set to 1), I get in my logs(UniPCemu itself adds the timestamp in front of it):
00:05:01:78.02720: P SUPER W, SUPER W, SUPER R, #PF
So the problem is a non-present access somehow, which it doesn't like?
Edit: Just found a little bug that made the Paging unit think there were writes to memory when there were actually only reads(due to the new paging vs segmentation check being split).
Edit: Said bugfix seems to have fixed said checks. They are passing correctly now. 😁
Now the next check(12h segmentation checks?) fails.
Edit: Whoops. The segmentation checks that check for read/write/execute permissions to fault or not when accessing it's contents(e.g. CS:xxxx, checking the xxxx read/write against the descriptor) wasn't properly protected against the new bits that were added(the same problem as with the paging unit above). Thus reads/writes/executes were incorrectly throwing and not throwing faults.
Now it progresses onward to the next text, which(guess what) fails(test 1Ah in this case).
Author of the UniPCemu emulator.
UniPCemu Git repository
UniPCemu for Android, Windows, PSP, Vita and Switch on itch.io