VirtualBox

Ignore:
Timestamp:
May 1, 2025 1:31:56 AM (9 days ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168680
Message:

IPRT/r0drv: Build adjustments for darwin.arm64. jiraref:VBP-1653

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Runtime/r0drv/darwin/the-darwin-kernel.h

    r106061 r109128  
    133133 * @remarks Unlike linux, we have to restore it unconditionally on darwin.
    134134 * @{ */
    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
    141148/** @} */
    142149
     
    163170extern kern_return_t vm_map_unwire(vm_map_t, vm_map_offset_t, vm_map_offset_t, boolean_t);
    164171
    165 /* mach/i386/thread_act.h */
     172/* mach/thread_act.defs / mach/i386/thread_act.h */
    166173extern kern_return_t thread_terminate(thread_t);
    167174
     175#if defined(RT_ARCH_AMD64) || defined(RT_ARCH_X86)
    168176/* osfmk/i386/mp.h */
    169177extern void mp_rendezvous(void (*)(void *), void (*)(void *), void (*)(void *), void *);
    170178extern void mp_rendezvous_no_intrs(void (*)(void *), void *);
    171179
     180#elif defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
     181/* mach/arm/machine_routines.h */
     182extern kern_return_t cpu_xcall(int, void (*)(void *), void *);
     183extern kern_return_t cpu_immediate_xcall(int, void (*)(void *), void *);
     184extern unsigned int  cpu_broadcast_xcall(uint32_t *, boolean_t, void (*)(void *), void *);
     185extern unsigned int  cpu_broadcast_xcall_simple(boolean_t, void (*)(void *), void *);
     186typedef kern_return_t (*PFN_DARWIN_CPU_XCALL_T)(int, void (*)(void *), void *);
     187typedef kern_return_t (*PFN_DARWIN_CPU_IMMEDIATE_XCALL_T)(int, void (*)(void *), void *);
     188typedef unsigned int  (*PFN_DARWIN_CPU_BROADCAST_XCALL_T)(uint32_t *, boolean_t, void (*)(void *), void *);
     189typedef 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)
    172193/* osfmk/i386/cpu_data.h */
    173194struct my_cpu_data_x86
     
    193214    int                     cpu_running;
    194215};
     216#endif /* RT_ARCH_AMD64 || RT_ARCH_X86 */
    195217
    196218/* osfmk/i386/cpu_number.h */
     
    224246#endif
    225247
     248#if defined(RT_ARCH_ARM64) || defined(RT_ARCH_ARM32)
     249extern DECL_HIDDEN_DATA(PFN_DARWIN_CPU_XCALL_T)            g_pfnR0DarwinCpuXCall;
     250extern DECL_HIDDEN_DATA(PFN_DARWIN_CPU_BROADCAST_XCALL_T)  g_pfnR0DarwinCpuBroadcastXCall;
     251typedef int (*PFN_DARWIN_CPU_NUMBER_T)(void); /* private API for arm */
     252extern DECL_HIDDEN_DATA(PFN_DARWIN_CPU_NUMBER_T)           g_pfnR0DarwinCpuNumber;
     253# define cpu_number()                                      (g_pfnR0DarwinCpuNumber())
     254#endif
     255
    226256/* threadpreempt-r0drv-darwin.cpp */
    227257int  rtThreadPreemptDarwinInit(void);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette