Changeset 106401 in vbox for trunk/src/VBox/VMM/include/IEMInternal.h
- Timestamp:
- Oct 16, 2024 8:56:01 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/include/IEMInternal.h
r106329 r106401 2977 2977 2978 2978 2979 /** @def IEM_DECL_MSC_GUARD_IGNORE 2980 * Disables control flow guards checks inside a method and any function pointers 2981 * referenced by it. */ 2982 #if defined(_MSC_VER) && !defined(IN_RING0) 2983 # define IEM_DECL_MSC_GUARD_IGNORE __declspec(guard(ignore)) 2984 #else 2985 # define IEM_DECL_MSC_GUARD_IGNORE 2986 #endif 2987 2988 /** @def IEM_DECL_MSC_GUARD_NONE 2989 * Disables control flow guards checks inside a method and but continue track 2990 * function pointers references by it. */ 2991 #if defined(_MSC_VER) && !defined(IN_RING0) 2992 # define IEM_DECL_MSC_GUARD_NONE __declspec(guard(nocf)) 2993 #else 2994 # define IEM_DECL_MSC_GUARD_NONE 2995 #endif 2996 2997 2979 2998 /** @def IEM_DECL_IMPL_TYPE 2980 2999 * For typedef'ing an instruction implementation function. … … 3005 3024 a_RetType (__fastcall a_Name) a_ArgList 3006 3025 # define IEM_DECL_IMPL_DEF(a_RetType, a_Name, a_ArgList) \ 3007 a_RetType __fastcall a_Name a_ArgList RT_NOEXCEPT3026 IEM_DECL_MSC_GUARD_IGNORE a_RetType __fastcall a_Name a_ArgList RT_NOEXCEPT 3008 3027 # define IEM_DECL_IMPL_PROTO(a_RetType, a_Name, a_ArgList) \ 3009 a_RetType __fastcall a_Name a_ArgList RT_NOEXCEPT3028 IEM_DECL_MSC_GUARD_IGNORE a_RetType __fastcall a_Name a_ArgList RT_NOEXCEPT 3010 3029 3011 3030 #elif __cplusplus >= 201700 /* P0012R1 support */ … … 3013 3032 a_RetType (VBOXCALL a_Name) a_ArgList RT_NOEXCEPT 3014 3033 # define IEM_DECL_IMPL_DEF(a_RetType, a_Name, a_ArgList) \ 3015 DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList RT_NOEXCEPT3034 IEM_DECL_MSC_GUARD_IGNORE DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList RT_NOEXCEPT 3016 3035 # define IEM_DECL_IMPL_PROTO(a_RetType, a_Name, a_ArgList) \ 3017 DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList RT_NOEXCEPT3036 IEM_DECL_MSC_GUARD_IGNORE DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList RT_NOEXCEPT 3018 3037 3019 3038 #else … … 3021 3040 a_RetType (VBOXCALL a_Name) a_ArgList 3022 3041 # define IEM_DECL_IMPL_DEF(a_RetType, a_Name, a_ArgList) \ 3023 DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList3042 IEM_DECL_MSC_GUARD_IGNORE DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList 3024 3043 # define IEM_DECL_IMPL_PROTO(a_RetType, a_Name, a_ArgList) \ 3025 DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList3044 IEM_DECL_MSC_GUARD_IGNORE DECL_HIDDEN_ONLY(a_RetType) VBOXCALL a_Name a_ArgList 3026 3045 3027 3046 #endif … … 5394 5413 typedef VBOXSTRICTRC (* PFNIEMOPRM)(PVMCPUCC pVCpu, uint8_t bRm); 5395 5414 # define FNIEMOP_DEF(a_Name) \ 5396 IEM_STATIC VBOXSTRICTRC a_Name(PVMCPUCC pVCpu) IEM_NOEXCEPT_MAY_LONGJMP5415 IEM_STATIC IEM_DECL_MSC_GUARD_IGNORE VBOXSTRICTRC a_Name(PVMCPUCC pVCpu) IEM_NOEXCEPT_MAY_LONGJMP 5397 5416 # define FNIEMOP_DEF_1(a_Name, a_Type0, a_Name0) \ 5398 IEM_STATIC VBOXSTRICTRC a_Name(PVMCPUCC pVCpu, a_Type0 a_Name0) IEM_NOEXCEPT_MAY_LONGJMP5417 IEM_STATIC IEM_DECL_MSC_GUARD_IGNORE VBOXSTRICTRC a_Name(PVMCPUCC pVCpu, a_Type0 a_Name0) IEM_NOEXCEPT_MAY_LONGJMP 5399 5418 # define FNIEMOP_DEF_2(a_Name, a_Type0, a_Name0, a_Type1, a_Name1) \ 5400 IEM_STATIC VBOXSTRICTRC a_Name(PVMCPUCC pVCpu, a_Type0 a_Name0, a_Type1 a_Name1) IEM_NOEXCEPT_MAY_LONGJMP5419 IEM_STATIC IEM_DECL_MSC_GUARD_IGNORE VBOXSTRICTRC a_Name(PVMCPUCC pVCpu, a_Type0 a_Name0, a_Type1 a_Name1) IEM_NOEXCEPT_MAY_LONGJMP 5401 5420 5402 5421 #endif … … 6726 6745 typedef FNIEMTHREADEDFUNC *PFNIEMTHREADEDFUNC; 6727 6746 # define IEM_DECL_IEMTHREADEDFUNC_DEF(a_Name) \ 6728 VBOXSTRICTRC a_Name(PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2) IEM_NOEXCEPT_MAY_LONGJMP6747 IEM_DECL_MSC_GUARD_IGNORE VBOXSTRICTRC a_Name(PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2) IEM_NOEXCEPT_MAY_LONGJMP 6729 6748 # define IEM_DECL_IEMTHREADEDFUNC_PROTO(a_Name) \ 6730 VBOXSTRICTRC a_Name(PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2) IEM_NOEXCEPT_MAY_LONGJMP6749 IEM_DECL_MSC_GUARD_IGNORE VBOXSTRICTRC a_Name(PVMCPU pVCpu, uint64_t uParam0, uint64_t uParam1, uint64_t uParam2) IEM_NOEXCEPT_MAY_LONGJMP 6731 6750 #endif 6732 6751
Note:
See TracChangeset
for help on using the changeset viewer.