notdirty_write: fix store-related performance problems

Every store would always cause the tb_invalidate_phys_page_fast path to be invoked,
amounting to a 40x slowdown of stores compared to loads.

Change this code to only worry about TB invalidation for regions marked as
executable (i.e. emulated executable).

Even without uc_set_native_thunks, this change fixes most of the performance
issues seen with thunking to native calls.

Signed-off-by: Andrei Warkentin <andrei.warkentin@intel.com>
This commit is contained in:
Andrei Warkentin
2022-12-13 00:13:58 -06:00
committed by mio
parent 9f21566b53
commit d01035767e
20 changed files with 76 additions and 23 deletions

View File

@@ -787,6 +787,7 @@
#define tlb_protect_code tlb_protect_code_sparc
#define tlb_unprotect_code tlb_unprotect_code_sparc
#define tlb_reset_dirty tlb_reset_dirty_sparc
#define tlb_reset_dirty_by_vaddr tlb_reset_dirty_by_vaddr_sparc
#define tlb_set_dirty tlb_set_dirty_sparc
#define tlb_set_page_with_attrs tlb_set_page_with_attrs_sparc
#define tlb_set_page tlb_set_page_sparc