Lines Matching defs:patch
53 * Internal patch type flags (starts at RT_BIT(11))
71 #define PATMFL_GLOBAL_FUNCTIONS RT_BIT_64(26) /** fake patch for global patm functions. */
72 #define PATMFL_TRAMPOLINE RT_BIT_64(27) /** trampoline patch that clears PATM_ASMFIX_INTERRUPTFLAG and jumps to patch destination */
74 #define PATMFL_INSTR_HINT RT_BIT_64(29) /** Generate patch, but don't activate it. */
76 #define PATMFL_MUST_INSTALL_PATCHJMP RT_BIT_64(31) /** Need to patch guest code in order to activate patch. */
78 #define PATMFL_EXTERNAL_JUMP_INSIDE RT_BIT_64(33) /** A trampoline patch was created that jumps to an instruction in the patch block */
79 #define PATMFL_CODE_REFERENCED RT_BIT_64(34) /** patch block referenced (called, jumped to) by another patch. */
99 /* Maximum nr of writes before a patch is marked dirty. (disabled) */
101 /* Maximum nr of invalid writes before a patch is disabled. */
111 /** Absolute fixup in patch assembly code template.
113 * The source and desination addresses both set to the patch fixup type (see
122 /** Relative call to a patch helper routine in VMMRC. The source and destination
130 /** Size of the instruction that's used for requests from patch code (currently only call) */
154 /** Size of memory allocated for patch statistics. */
213 /** patch to guest */
215 /** guest to patch + patch to guest */
224 /** The key is an offset inside the patch memory block. */
233 * a trampoline patch. */
240 * Guest to patch address lookup record
251 * Temporary information used in ring 3 only; no need to waste memory in the patch record itself.
275 /** Forward declaration for a pointer to a trampoline patch record. */
283 /** Current patch state (enabled, disabled, etc.). */
285 /** Previous patch state. Used when enabling a disabled patch. */
293 /** Original privileged guest instructions overwritten by the jump patch. */
299 /** Size of the patch jump in the guest code. */
303 /** Offset of the patch code from the beginning of the patch memory area. */
305 /** Size of the patch code in bytes. */
307 /** Current offset of the patch starting from pPatchBlockOffset.
308 * Used during patch creation. */
320 /* Tree of fixup records for the patch. */
323 /* Tree of jumps inside the generated patch code. */
328 * instruction in the patch block.
338 /** Temporary information during patch creation. Don't waste hypervisor memory for this. */
340 /** List of trampoline patches referencing this patch.
341 * Used when refreshing the patch. (Only for function duplicates) */
345 /** Some statistics to determine if we should keep this patch activated. */
347 /** Count the number of invalid writes to pages monitored for the patch. */
351 /** First opcode byte, that's overwritten when a patch is marked dirty. */
367 /** The key is a patch offset. */
369 /** The patch information. */
370 PATCHINFO patch;
374 * Record for a trampoline patch.
378 /** Pointer to the next trampoline patch. */
380 /** Pointer to the trampoline patch record. */
388 * Lookup record for patch pages
401 /** Array of patch pointers for this page. */
406 #define PATM_PATCHREC_FROM_PATCHINFO(a) (PPATMPATCHREC)((uintptr_t)a - RT_OFFSETOF(PATMPATCHREC, patch))
419 * AVL tree with all patches sorted by patch address (offset actually)
440 /** Pointer to the patch memory area (GC) */
442 /** Pointer to the patch memory area (HC) */
444 /** Size of the patch memory area in bytes. */
448 /** Flag whether PATM ran out of patch memory. */
482 /** Temporary counter for patch installation call depth. (in order not to go on forever) */
489 /** Pointer to the patch tree for instructions replaced by 'int 3'. */
500 /** Fake patch record for global functions. */
506 /** Sysenter patch index (for stats only) */
510 /** Temporary information for pending MMIO patch. Set in GC or R0 context. */
527 /** Debug module for the patch memory. */