Changeset 109128 in vbox for trunk/src/VBox/Runtime/r0drv/darwin/the-darwin-kernel.h
- Timestamp:
- May 1, 2025 1:31:56 AM (9 days ago)
- svn:sync-xref-src-repo-rev:
- 168680
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/r0drv/darwin/the-darwin-kernel.h
r106061 r109128 133 133 * @remarks Unlike linux, we have to restore it unconditionally on darwin. 134 134 * @{ */ 135 #include <iprt/asm-amd64-x86.h> 136 #include <iprt/x86.h> 137 #define IPRT_DARWIN_SAVE_EFL_AC() RTCCUINTREG const fSavedEfl = ASMGetFlags(); 138 #define IPRT_DARWIN_RESTORE_EFL_AC() ASMSetFlags(fSavedEfl) 139 #define IPRT_DARWIN_RESTORE_EFL_ONLY_AC() ASMChangeFlags(~X86_EFL_AC, fSavedEfl & X86_EFL_AC) 140 #define IPRT_DARWIN_RESTORE_EFL_ONLY_AC_EX(a_fSavedEfl) ASMChangeFlags(~X86_EFL_AC, (a_fSavedEfl) & X86_EFL_AC) 135 #if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) 136 # include <iprt/asm-amd64-x86.h> 137 # include <iprt/x86.h> 138 # define IPRT_DARWIN_SAVE_EFL_AC() RTCCUINTREG const fSavedEfl = ASMGetFlags(); 139 # define IPRT_DARWIN_RESTORE_EFL_AC() ASMSetFlags(fSavedEfl) 140 # define IPRT_DARWIN_RESTORE_EFL_ONLY_AC() ASMChangeFlags(~X86_EFL_AC, fSavedEfl & X86_EFL_AC) 141 # define IPRT_DARWIN_RESTORE_EFL_ONLY_AC_EX(a_fSavedEfl) ASMChangeFlags(~X86_EFL_AC, (a_fSavedEfl) & X86_EFL_AC) 142 #else 143 # define IPRT_DARWIN_SAVE_EFL_AC() ((void)0) 144 # define IPRT_DARWIN_RESTORE_EFL_AC() ((void)0) 145 # define IPRT_DARWIN_RESTORE_EFL_ONLY_AC() ((void)0) 146 # define IPRT_DARWIN_RESTORE_EFL_ONLY_AC_EX(a_fSavedEfl) ((void)0) 147 #endif 141 148 /** @} */ 142 149 … … 163 170 extern kern_return_t vm_map_unwire(vm_map_t, vm_map_offset_t, vm_map_offset_t, boolean_t); 164 171 165 /* mach/ i386/thread_act.h */172 /* mach/thread_act.defs / mach/i386/thread_act.h */ 166 173 extern kern_return_t thread_terminate(thread_t); 167 174 175 #if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) 168 176 /* osfmk/i386/mp.h */ 169 177 extern void mp_rendezvous(void (*)(void *), void (*)(void *), void (*)(void *), void *); 170 178 extern void mp_rendezvous_no_intrs(void (*)(void *), void *); 171 179 180 #elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 181 /* mach/arm/machine_routines.h */ 182 extern kern_return_t cpu_xcall(int, void (*)(void *), void *); 183 extern kern_return_t cpu_immediate_xcall(int, void (*)(void *), void *); 184 extern unsigned int cpu_broadcast_xcall(uint32_t *, boolean_t, void (*)(void *), void *); 185 extern unsigned int cpu_broadcast_xcall_simple(boolean_t, void (*)(void *), void *); 186 typedef kern_return_t (*PFN_DARWIN_CPU_XCALL_T)(int, void (*)(void *), void *); 187 typedef kern_return_t (*PFN_DARWIN_CPU_IMMEDIATE_XCALL_T)(int, void (*)(void *), void *); 188 typedef unsigned int (*PFN_DARWIN_CPU_BROADCAST_XCALL_T)(uint32_t *, boolean_t, void (*)(void *), void *); 189 typedef unsigned int (*PFN_DARWIN_CPU_BROADCAST_XCALL_SIMPLE_T)(boolean_t, void (*)(void *), void *); 190 #endif 191 192 #if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86) 172 193 /* osfmk/i386/cpu_data.h */ 173 194 struct my_cpu_data_x86 … … 193 214 int cpu_running; 194 215 }; 216 #endif /* RT_ARCH_AMD64 || RT_ARCH_X86 */ 195 217 196 218 /* osfmk/i386/cpu_number.h */ … … 224 246 #endif 225 247 248 #if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32) 249 extern DECL_HIDDEN_DATA(PFN_DARWIN_CPU_XCALL_T) g_pfnR0DarwinCpuXCall; 250 extern DECL_HIDDEN_DATA(PFN_DARWIN_CPU_BROADCAST_XCALL_T) g_pfnR0DarwinCpuBroadcastXCall; 251 typedef int (*PFN_DARWIN_CPU_NUMBER_T)(void); /* private API for arm */ 252 extern DECL_HIDDEN_DATA(PFN_DARWIN_CPU_NUMBER_T) g_pfnR0DarwinCpuNumber; 253 # define cpu_number() (g_pfnR0DarwinCpuNumber()) 254 #endif 255 226 256 /* threadpreempt-r0drv-darwin.cpp */ 227 257 int rtThreadPreemptDarwinInit(void);
Note:
See TracChangeset
for help on using the changeset viewer.