mirror of
https://github.com/joncampbell123/dosbox-x.git
synced 2025-10-14 02:17:36 +08:00
Flush paging TLB on guest page fault exception. If we do not do this, the Linux kernel runs but syscalls often get stuck
This commit is contained in:
@@ -406,6 +406,13 @@ static Bitu Normal_Loop(void) {
|
|||||||
catch (const GuestPageFaultException& pf) {
|
catch (const GuestPageFaultException& pf) {
|
||||||
Bitu FillFlags(void);
|
Bitu FillFlags(void);
|
||||||
|
|
||||||
|
// LOG_MSG("Guest page fault %08x code %08x",(unsigned int)pf.lin_addr,(unsigned int)pf.faultcode);
|
||||||
|
|
||||||
|
/* Clear TLB because the guest OS is likely going to update the page tables to resolve the fault.
|
||||||
|
* This is REQUIRED for the normal core to run the Linux kernel properly, or else things just get "stuck"
|
||||||
|
* when you run commands. */
|
||||||
|
PAGING_ClearTLB();
|
||||||
|
|
||||||
ret = 0;
|
ret = 0;
|
||||||
FillFlags();
|
FillFlags();
|
||||||
paging.cr2=pf.lin_addr;
|
paging.cr2=pf.lin_addr;
|
||||||
|
Reference in New Issue
Block a user