X-Git-Url: https://git.saurik.com/apple/xnu.git/blobdiff_plain/5ba3f43ea354af8ad55bea84372a2bc834d8757c..refs/heads/master:/osfmk/arm64/genassym.c diff --git a/osfmk/arm64/genassym.c b/osfmk/arm64/genassym.c index 5c06aabce..afe165947 100644 --- a/osfmk/arm64/genassym.c +++ b/osfmk/arm64/genassym.c @@ -28,28 +28,28 @@ /* * @OSF_COPYRIGHT@ */ -/* +/* * Mach Operating System * Copyright (c) 1991,1990 Carnegie Mellon University * All Rights Reserved. - * + * * Permission to use, copy, modify and distribute this software and its * documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. - * + * * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. - * + * * Carnegie Mellon requests users of this software to return to - * + * * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU * School of Computer Science * Carnegie Mellon University * Pittsburgh PA 15213-3890 - * + * * any improvements or extensions that they make and grant Carnegie Mellon * the rights to redistribute these changes. */ @@ -85,11 +85,10 @@ #include #include #include - -#if CONFIG_DTRACE -#define NEED_DTRACE_DEFS -#include <../bsd/sys/lockstat.h> -#endif /* CONFIG_DTRACE */ +#if HIBERNATION +#include +#include +#endif /* HIBERNATION */ /* * genassym.c is used to produce an @@ -104,84 +103,51 @@ * the values, but we cannot run anything on the target machine. */ -#define DECLARE(SYM,VAL) \ - __asm("DEFINITION__define__" SYM ":\t .ascii \"%0\"" : : "n" ((u_long)(VAL))) +#define DECLARE(SYM, VAL) \ + __asm("DEFINITION__define__" SYM ":\t .ascii \"%0\"" : : "i" ((u_long)(VAL))) -int main( - int argc, - char ** argv); +int main(int argc, + char ** argv); int -main( - int argc, - char **argv) +main(int argc, + char ** argv) { + DECLARE("AST_URGENT", AST_URGENT); - DECLARE("T_PREFETCH_ABT", T_PREFETCH_ABT); - DECLARE("T_DATA_ABT", T_DATA_ABT); - - DECLARE("AST_URGENT", AST_URGENT); - DECLARE("AST_PREEMPTION", AST_PREEMPTION); - - DECLARE("TH_RECOVER", offsetof(struct thread, recover)); - DECLARE("TH_CONTINUATION", offsetof(struct thread, continuation)); - DECLARE("TH_KERNEL_STACK", offsetof(struct thread, kernel_stack)); + DECLARE("TH_RECOVER", offsetof(struct thread, recover)); DECLARE("TH_KSTACKPTR", offsetof(struct thread, machine.kstackptr)); - DECLARE("THREAD_UTHREAD", offsetof(struct thread, uthread)); - - DECLARE("TASK_MACH_EXC_PORT", - offsetof(struct task, exc_actions[EXC_MACH_SYSCALL].port)); + DECLARE("TH_THREAD_ID", offsetof(struct thread, thread_id)); +#if defined(HAS_APPLE_PAC) + DECLARE("TH_ROP_PID", offsetof(struct thread, machine.rop_pid)); + DECLARE("TH_JOP_PID", offsetof(struct thread, machine.jop_pid)); + DECLARE("TH_DISABLE_USER_JOP", offsetof(struct thread, machine.disable_user_jop)); +#endif /* defined(HAS_APPLE_PAC) */ /* These fields are being added on demand */ - DECLARE("ACT_TASK", offsetof(struct thread, task)); DECLARE("ACT_CONTEXT", offsetof(struct thread, machine.contextData)); - DECLARE("ACT_UPCB", offsetof(struct thread, machine.upcb)); -// DECLARE("ACT_PCBDATA", offsetof(struct thread, machine.contextData.ss)); - DECLARE("ACT_UNEON", offsetof(struct thread, machine.uNeon)); -// DECLARE("ACT_NEONDATA", offsetof(struct thread, machine.contextData.ns)); - DECLARE("TH_CTH_SELF", offsetof(struct thread, machine.cthread_self)); - DECLARE("TH_CTH_DATA", offsetof(struct thread, machine.cthread_data)); - DECLARE("ACT_PREEMPT_CNT", offsetof(struct thread, machine.preemption_count)); - DECLARE("ACT_CPUDATAP", offsetof(struct thread, machine.CpuDatap)); - DECLARE("ACT_MAP", offsetof(struct thread, map)); - DECLARE("ACT_DEBUGDATA", offsetof(struct thread, machine.DebugData)); - DECLARE("TH_IOTIER_OVERRIDE", offsetof(struct thread, iotier_override)); - DECLARE("TH_RWLOCK_CNT", offsetof(struct thread, rwlock_count)); - DECLARE("TH_SCHED_FLAGS", offsetof(struct thread, sched_flags)); - DECLARE("TH_SFLAG_RW_PROMOTED_BIT", TH_SFLAG_RW_PROMOTED_BIT); - - DECLARE("TH_MACH_SYSCALLS", offsetof(struct thread, syscalls_mach)); - DECLARE("TH_UNIX_SYSCALLS", offsetof(struct thread, syscalls_unix)); - DECLARE("TASK_BSD_INFO", offsetof(struct task, bsd_info)); - - DECLARE("MACH_TRAP_TABLE_COUNT", MACH_TRAP_TABLE_COUNT); - DECLARE("MACH_TRAP_TABLE_ENTRY_SIZE", sizeof(mach_trap_t)); - - DECLARE("MAP_PMAP", offsetof(struct _vm_map, pmap)); + DECLARE("TH_CTH_SELF", offsetof(struct thread, machine.cthread_self)); + DECLARE("ACT_PREEMPT_CNT", offsetof(struct thread, machine.preemption_count)); + DECLARE("ACT_CPUDATAP", offsetof(struct thread, machine.CpuDatap)); + DECLARE("ACT_DEBUGDATA", offsetof(struct thread, machine.DebugData)); + DECLARE("TH_IOTIER_OVERRIDE", offsetof(struct thread, iotier_override)); + DECLARE("TH_RWLOCK_CNT", offsetof(struct thread, rwlock_count)); + DECLARE("TH_TMP_ALLOC_CNT", offsetof(struct thread, t_temp_alloc_count)); + DECLARE("TH_TASK", offsetof(struct thread, task)); + +#if defined(HAS_APPLE_PAC) + DECLARE("TASK_ROP_PID", offsetof(struct task, rop_pid)); + DECLARE("TASK_JOP_PID", offsetof(struct task, jop_pid)); +#endif /* defined(HAS_APPLE_PAC) */ + DECLARE("ARM_CONTEXT_SIZE", sizeof(arm_context_t)); - DECLARE("CONTEXT_SS", offsetof(arm_context_t, ss)); DECLARE("SS_FLAVOR", offsetof(arm_context_t, ss.ash.flavor)); - DECLARE("ARM_SAVED_STATE32", ARM_SAVED_STATE32); DECLARE("ARM_SAVED_STATE64", ARM_SAVED_STATE64); DECLARE("ARM_SAVED_STATE64_COUNT", ARM_SAVED_STATE64_COUNT); - DECLARE("SS32_W0", offsetof(arm_context_t, ss.ss_32.r[0])); - DECLARE("SS32_W2", offsetof(arm_context_t, ss.ss_32.r[2])); - DECLARE("SS32_W4", offsetof(arm_context_t, ss.ss_32.r[4])); - DECLARE("SS32_W6", offsetof(arm_context_t, ss.ss_32.r[6])); - DECLARE("SS32_W8", offsetof(arm_context_t, ss.ss_32.r[8])); - DECLARE("SS32_W10", offsetof(arm_context_t, ss.ss_32.r[10])); - DECLARE("SS32_W12", offsetof(arm_context_t, ss.ss_32.r[12])); - DECLARE("SS32_SP", offsetof(arm_context_t, ss.ss_32.sp)); - DECLARE("SS32_LR", offsetof(arm_context_t, ss.ss_32.lr)); - DECLARE("SS32_PC", offsetof(arm_context_t, ss.ss_32.pc)); - DECLARE("SS32_CPSR", offsetof(arm_context_t, ss.ss_32.cpsr)); - DECLARE("SS32_VADDR", offsetof(arm_context_t, ss.ss_32.far)); - DECLARE("SS32_STATUS", offsetof(arm_context_t, ss.ss_32.esr)); - DECLARE("SS64_X0", offsetof(arm_context_t, ss.ss_64.x[0])); DECLARE("SS64_X2", offsetof(arm_context_t, ss.ss_64.x[2])); DECLARE("SS64_X4", offsetof(arm_context_t, ss.ss_64.x[4])); @@ -190,6 +156,7 @@ main( DECLARE("SS64_X10", offsetof(arm_context_t, ss.ss_64.x[10])); DECLARE("SS64_X12", offsetof(arm_context_t, ss.ss_64.x[12])); DECLARE("SS64_X14", offsetof(arm_context_t, ss.ss_64.x[14])); + DECLARE("SS64_X15", offsetof(arm_context_t, ss.ss_64.x[15])); DECLARE("SS64_X16", offsetof(arm_context_t, ss.ss_64.x[16])); DECLARE("SS64_X18", offsetof(arm_context_t, ss.ss_64.x[18])); DECLARE("SS64_X19", offsetof(arm_context_t, ss.ss_64.x[19])); @@ -209,25 +176,15 @@ main( DECLARE("SS64_CPSR", offsetof(arm_context_t, ss.ss_64.cpsr)); DECLARE("SS64_FAR", offsetof(arm_context_t, ss.ss_64.far)); DECLARE("SS64_ESR", offsetof(arm_context_t, ss.ss_64.esr)); +#if defined(HAS_APPLE_PAC) + DECLARE("SS64_JOPHASH", offsetof(arm_context_t, ss.ss_64.jophash)); +#endif /* defined(HAS_APPLE_PAC) */ - DECLARE("CONTEXT_NS", offsetof(arm_context_t, ns)); DECLARE("NS_FLAVOR", offsetof(arm_context_t, ns.nsh.flavor)); DECLARE("NS_COUNT", offsetof(arm_context_t, ns.nsh.count)); - DECLARE("ARM_NEON_SAVED_STATE32", ARM_NEON_SAVED_STATE32); DECLARE("ARM_NEON_SAVED_STATE64", ARM_NEON_SAVED_STATE64); DECLARE("ARM_NEON_SAVED_STATE64_COUNT", ARM_NEON_SAVED_STATE64_COUNT); - DECLARE("NS32_Q0", offsetof(arm_context_t, ns.ns_32.v.q[0])); - DECLARE("NS32_Q2", offsetof(arm_context_t, ns.ns_32.v.q[2])); - DECLARE("NS32_Q4", offsetof(arm_context_t, ns.ns_32.v.q[4])); - DECLARE("NS32_Q6", offsetof(arm_context_t, ns.ns_32.v.q[6])); - DECLARE("NS32_Q8", offsetof(arm_context_t, ns.ns_32.v.q[8])); - DECLARE("NS32_Q10", offsetof(arm_context_t, ns.ns_32.v.q[10])); - DECLARE("NS32_Q12", offsetof(arm_context_t, ns.ns_32.v.q[12])); - DECLARE("NS32_Q14", offsetof(arm_context_t, ns.ns_32.v.q[14])); - DECLARE("NS32_FPSR", offsetof(arm_context_t, ns.ns_32.fpsr)); - DECLARE("NS32_FPCR", offsetof(arm_context_t, ns.ns_32.fpcr)); - DECLARE("NS64_D8", offsetof(arm_context_t, ns.ns_64.v.d[8])); DECLARE("NS64_D9", offsetof(arm_context_t, ns.ns_64.v.d[9])); DECLARE("NS64_D10", offsetof(arm_context_t, ns.ns_64.v.d[10])); @@ -256,175 +213,126 @@ main( DECLARE("NS64_FPSR", offsetof(arm_context_t, ns.ns_64.fpsr)); DECLARE("NS64_FPCR", offsetof(arm_context_t, ns.ns_64.fpcr)); + DECLARE("ARM_KERNEL_CONTEXT_SIZE", sizeof(arm_kernel_context_t)); + + DECLARE("SS64_KERNEL_X16", offsetof(arm_kernel_context_t, ss.x[0])); + DECLARE("SS64_KERNEL_X17", offsetof(arm_kernel_context_t, ss.x[1])); + DECLARE("SS64_KERNEL_X19", offsetof(arm_kernel_context_t, ss.x[2])); + DECLARE("SS64_KERNEL_X20", offsetof(arm_kernel_context_t, ss.x[3])); + DECLARE("SS64_KERNEL_X21", offsetof(arm_kernel_context_t, ss.x[4])); + DECLARE("SS64_KERNEL_X22", offsetof(arm_kernel_context_t, ss.x[5])); + DECLARE("SS64_KERNEL_X23", offsetof(arm_kernel_context_t, ss.x[6])); + DECLARE("SS64_KERNEL_X24", offsetof(arm_kernel_context_t, ss.x[7])); + DECLARE("SS64_KERNEL_X25", offsetof(arm_kernel_context_t, ss.x[8])); + DECLARE("SS64_KERNEL_X26", offsetof(arm_kernel_context_t, ss.x[9])); + DECLARE("SS64_KERNEL_X27", offsetof(arm_kernel_context_t, ss.x[10])); + DECLARE("SS64_KERNEL_X28", offsetof(arm_kernel_context_t, ss.x[11])); + DECLARE("SS64_KERNEL_FP", offsetof(arm_kernel_context_t, ss.fp)); + DECLARE("SS64_KERNEL_LR", offsetof(arm_kernel_context_t, ss.lr)); + DECLARE("SS64_KERNEL_SP", offsetof(arm_kernel_context_t, ss.sp)); + DECLARE("SS64_KERNEL_PC", offsetof(arm_kernel_context_t, ss.pc)); + DECLARE("SS64_KERNEL_CPSR", offsetof(arm_kernel_context_t, ss.cpsr)); +#if defined(HAS_APPLE_PAC) + DECLARE("SS64_KERNEL_JOPHASH", offsetof(arm_kernel_context_t, ss.jophash)); +#endif /* defined(HAS_APPLE_PAC) */ + + DECLARE("NS64_KERNEL_D8", offsetof(arm_kernel_context_t, ns.d[0])); + DECLARE("NS64_KERNEL_D9", offsetof(arm_kernel_context_t, ns.d[1])); + DECLARE("NS64_KERNEL_D10", offsetof(arm_kernel_context_t, ns.d[2])); + DECLARE("NS64_KERNEL_D11", offsetof(arm_kernel_context_t, ns.d[3])); + DECLARE("NS64_KERNEL_D12", offsetof(arm_kernel_context_t, ns.d[4])); + DECLARE("NS64_KERNEL_D13", offsetof(arm_kernel_context_t, ns.d[5])); + DECLARE("NS64_KERNEL_D14", offsetof(arm_kernel_context_t, ns.d[6])); + DECLARE("NS64_KERNEL_D15", offsetof(arm_kernel_context_t, ns.d[7])); + + DECLARE("NS64_KERNEL_FPCR", offsetof(arm_kernel_context_t, ns.fpcr)); + + + DECLARE("PGBYTES", ARM_PGBYTES); DECLARE("PGSHIFT", ARM_PGSHIFT); - DECLARE("PGMASK", ARM_PGMASK); - - - DECLARE("VM_MIN_ADDRESS", VM_MIN_ADDRESS); - DECLARE("VM_MAX_ADDRESS", VM_MAX_ADDRESS); - DECLARE("VM_MIN_KERNEL_ADDRESS", VM_MIN_KERNEL_ADDRESS); - DECLARE("VM_MAX_KERNEL_ADDRESS", VM_MAX_KERNEL_ADDRESS); - DECLARE("KERNELBASE", VM_MIN_KERNEL_ADDRESS); - DECLARE("KERNEL_STACK_SIZE", KERNEL_STACK_SIZE); - DECLARE("TBI_MASK", TBI_MASK); - - DECLARE("KERN_INVALID_ADDRESS", KERN_INVALID_ADDRESS); - - - DECLARE("MAX_CPUS", MAX_CPUS); - - DECLARE("cdeSize", - sizeof(struct cpu_data_entry)); - - DECLARE("cdSize", - sizeof(struct cpu_data)); - - DECLARE("CPU_ACTIVE_THREAD", - offsetof(cpu_data_t, cpu_active_thread)); - DECLARE("CPU_ACTIVE_STACK", - offsetof(cpu_data_t, cpu_active_stack)); - DECLARE("CPU_ISTACKPTR", - offsetof(cpu_data_t, istackptr)); - DECLARE("CPU_INTSTACK_TOP", - offsetof(cpu_data_t, intstack_top)); - DECLARE("CPU_EXCEPSTACKPTR", - offsetof(cpu_data_t, excepstackptr)); - DECLARE("CPU_EXCEPSTACK_TOP", - offsetof(cpu_data_t, excepstack_top)); - DECLARE("CPU_FIQSTACKPTR", - offsetof(cpu_data_t, fiqstackptr)); - DECLARE("CPU_FIQSTACK_TOP", - offsetof(cpu_data_t, fiqstack_top)); - DECLARE("CPU_NUMBER_GS", - offsetof(cpu_data_t,cpu_number)); - DECLARE("CPU_IDENT", - offsetof(cpu_data_t,cpu_ident)); - DECLARE("CPU_RUNNING", - offsetof(cpu_data_t,cpu_running)); - DECLARE("CPU_MCOUNT_OFF", - offsetof(cpu_data_t,cpu_mcount_off)); - DECLARE("CPU_PENDING_AST", - offsetof(cpu_data_t,cpu_pending_ast)); - DECLARE("CPU_PROCESSOR", - offsetof(cpu_data_t,cpu_processor)); - DECLARE("CPU_CACHE_DISPATCH", - offsetof(cpu_data_t,cpu_cache_dispatch)); - DECLARE("CPU_BASE_TIMEBASE", - offsetof(cpu_data_t,cpu_base_timebase)); - DECLARE("CPU_DECREMENTER", - offsetof(cpu_data_t,cpu_decrementer)); - DECLARE("CPU_GET_DECREMENTER_FUNC", - offsetof(cpu_data_t,cpu_get_decrementer_func)); - DECLARE("CPU_SET_DECREMENTER_FUNC", - offsetof(cpu_data_t,cpu_set_decrementer_func)); - DECLARE("CPU_GET_FIQ_HANDLER", - offsetof(cpu_data_t,cpu_get_fiq_handler)); - DECLARE("CPU_TBD_HARDWARE_ADDR", - offsetof(cpu_data_t,cpu_tbd_hardware_addr)); - DECLARE("CPU_TBD_HARDWARE_VAL", - offsetof(cpu_data_t,cpu_tbd_hardware_val)); - DECLARE("CPU_INT_STATE", - offsetof(cpu_data_t,cpu_int_state)); - DECLARE("INTERRUPT_HANDLER", - offsetof(cpu_data_t,interrupt_handler)); - DECLARE("INTERRUPT_TARGET", - offsetof(cpu_data_t,interrupt_target)); - DECLARE("INTERRUPT_REFCON", - offsetof(cpu_data_t,interrupt_refCon)); - DECLARE("INTERRUPT_NUB", - offsetof(cpu_data_t,interrupt_nub)); - DECLARE("INTERRUPT_SOURCE", - offsetof(cpu_data_t,interrupt_source)); - DECLARE("CPU_USER_DEBUG", - offsetof(cpu_data_t, cpu_user_debug)); - DECLARE("CPU_STAT_IRQ", - offsetof(cpu_data_t, cpu_stat.irq_ex_cnt)); - DECLARE("CPU_STAT_IRQ_WAKE", - offsetof(cpu_data_t, cpu_stat.irq_ex_cnt_wake)); - DECLARE("CPU_RESET_HANDLER", - offsetof(cpu_data_t, cpu_reset_handler)); - DECLARE("CPU_RESET_ASSIST", - offsetof(cpu_data_t, cpu_reset_assist)); - DECLARE("CPU_REGMAP_PADDR", - offsetof(cpu_data_t, cpu_regmap_paddr)); - DECLARE("CPU_PHYS_ID", - offsetof(cpu_data_t, cpu_phys_id)); - DECLARE("RTCLOCK_DATAP", - offsetof(cpu_data_t, rtclock_datap)); - - DECLARE("RTCLOCKDataSize", - sizeof(rtclock_data_t)); - DECLARE("RTCLOCK_ADJ_ABSTIME_LOW", - offsetof(rtclock_data_t, rtc_adj.abstime_val.low)); - DECLARE("RTCLOCK_ADJ_ABSTIME_HIGH", - offsetof(rtclock_data_t, rtc_adj.abstime_val.high)); - DECLARE("RTCLOCK_BASE_ABSTIME_LOW", - offsetof(rtclock_data_t, rtc_base.abstime_val.low)); - DECLARE("RTCLOCK_BASE_ABSTIME_HIGH", - offsetof(rtclock_data_t, rtc_base.abstime_val.high)); - - DECLARE("SIGPdec", SIGPdec); - - DECLARE("rhdSize", - sizeof(struct reset_handler_data)); + + DECLARE("VM_MIN_KERNEL_ADDRESS", VM_MIN_KERNEL_ADDRESS); + DECLARE("KERNEL_STACK_SIZE", KERNEL_STACK_SIZE); + DECLARE("TBI_MASK", TBI_MASK); + + DECLARE("cdeSize", sizeof(struct cpu_data_entry)); + + DECLARE("cdSize", sizeof(struct cpu_data)); + + DECLARE("CPU_ACTIVE_THREAD", offsetof(cpu_data_t, cpu_active_thread)); + DECLARE("CPU_ISTACKPTR", offsetof(cpu_data_t, istackptr)); + DECLARE("CPU_INTSTACK_TOP", offsetof(cpu_data_t, intstack_top)); + DECLARE("CPU_EXCEPSTACK_TOP", offsetof(cpu_data_t, excepstack_top)); +#if __ARM_KERNEL_PROTECT__ + DECLARE("CPU_EXC_VECTORS", offsetof(cpu_data_t, cpu_exc_vectors)); +#endif /* __ARM_KERNEL_PROTECT__ */ + DECLARE("CPU_NUMBER_GS", offsetof(cpu_data_t, cpu_number)); + DECLARE("CPU_PENDING_AST", offsetof(cpu_data_t, cpu_pending_ast)); + DECLARE("CPU_INT_STATE", offsetof(cpu_data_t, cpu_int_state)); + DECLARE("CPU_USER_DEBUG", offsetof(cpu_data_t, cpu_user_debug)); + DECLARE("CPU_STAT_IRQ", offsetof(cpu_data_t, cpu_stat.irq_ex_cnt)); + DECLARE("CPU_STAT_IRQ_WAKE", offsetof(cpu_data_t, cpu_stat.irq_ex_cnt_wake)); + DECLARE("CPU_RESET_HANDLER", offsetof(cpu_data_t, cpu_reset_handler)); + DECLARE("CPU_PHYS_ID", offsetof(cpu_data_t, cpu_phys_id)); + + DECLARE("RTCLOCKDataSize", sizeof(rtclock_data_t)); + + DECLARE("rhdSize", sizeof(struct reset_handler_data)); #if WITH_CLASSIC_S2R || !__arm64__ - DECLARE("stSize", - sizeof(SleepToken)); -#endif - - DECLARE("CPU_DATA_ENTRIES", offsetof(struct reset_handler_data, cpu_data_entries)); - DECLARE("ASSIST_RESET_HANDLER", offsetof(struct reset_handler_data, assist_reset_handler)); - - DECLARE("CPU_DATA_PADDR", offsetof(struct cpu_data_entry, cpu_data_paddr)); - - - DECLARE("INTSTACK_SIZE", INTSTACK_SIZE); - - DECLARE("TIMER_TSTAMP", - offsetof(struct timer, tstamp)); - DECLARE("THREAD_TIMER", - offsetof(struct processor, processor_data.thread_timer)); - DECLARE("KERNEL_TIMER", - offsetof(struct processor, processor_data.kernel_timer)); - DECLARE("SYSTEM_STATE", - offsetof(struct processor, processor_data.system_state)); - DECLARE("USER_STATE", - offsetof(struct processor, processor_data.user_state)); - DECLARE("CURRENT_STATE", - offsetof(struct processor, processor_data.current_state)); - - DECLARE("SYSTEM_TIMER", - offsetof(struct thread, system_timer)); - DECLARE("USER_TIMER", - offsetof(struct thread, user_timer)); - -#if !CONFIG_SKIP_PRECISE_USER_KERNEL_TIME - DECLARE("PRECISE_USER_KERNEL_TIME", - offsetof(struct thread, precise_user_kernel_time)); -#endif - - DECLARE("BA_VIRT_BASE", - offsetof(struct boot_args, virtBase)); - DECLARE("BA_PHYS_BASE", - offsetof(struct boot_args, physBase)); - DECLARE("BA_MEM_SIZE", - offsetof(struct boot_args, memSize)); - DECLARE("BA_TOP_OF_KERNEL_DATA", - offsetof(struct boot_args, topOfKernelData)); - DECLARE("BA_DEVICE_TREE", - offsetof(struct boot_args, deviceTreeP)); - DECLARE("BA_DEVICE_TREE_LENGTH", - offsetof(struct boot_args, deviceTreeLength)); - - DECLARE("ENTROPY_INDEX_PTR", - offsetof(entropy_data_t, index_ptr)); - DECLARE("ENTROPY_BUFFER", - offsetof(entropy_data_t, buffer)); - DECLARE("ENTROPY_DATA_SIZE", sizeof(struct entropy_data)); + DECLARE("stSize", sizeof(SleepToken)); +#endif /* WITH_CLASSIC_S2R || !__arm64__ */ - DECLARE("SR_RESTORE_TCR_EL1", offsetof(struct sysreg_restore, tcr_el1)); + DECLARE("CPU_DATA_ENTRIES", offsetof(struct reset_handler_data, cpu_data_entries)); + + DECLARE("CPU_DATA_PADDR", offsetof(struct cpu_data_entry, cpu_data_paddr)); + + DECLARE("INTSTACK_SIZE", INTSTACK_SIZE); + DECLARE("EXCEPSTACK_SIZE", EXCEPSTACK_SIZE); + DECLARE("PAGE_MAX_SHIFT", PAGE_MAX_SHIFT); + DECLARE("PAGE_MAX_SIZE", PAGE_MAX_SIZE); + + DECLARE("BA_VIRT_BASE", offsetof(struct boot_args, virtBase)); + DECLARE("BA_PHYS_BASE", offsetof(struct boot_args, physBase)); + DECLARE("BA_MEM_SIZE", offsetof(struct boot_args, memSize)); + DECLARE("BA_TOP_OF_KERNEL_DATA", offsetof(struct boot_args, topOfKernelData)); + DECLARE("BA_BOOT_FLAGS", offsetof(struct boot_args, bootFlags)); + + DECLARE("SR_RESTORE_TCR_EL1", offsetof(struct sysreg_restore, tcr_el1)); - return (0); +#if XNU_MONITOR + DECLARE("PMAP_CPU_DATA_PPL_STATE", offsetof(struct pmap_cpu_data, ppl_state)); + DECLARE("PMAP_CPU_DATA_ARRAY_ENTRY_SIZE", sizeof(struct pmap_cpu_data_array_entry)); + DECLARE("PMAP_CPU_DATA_PPL_STACK", offsetof(struct pmap_cpu_data, ppl_stack)); + DECLARE("PMAP_CPU_DATA_KERN_SAVED_SP", offsetof(struct pmap_cpu_data, ppl_kern_saved_sp)); + DECLARE("PMAP_CPU_DATA_SAVE_AREA", offsetof(struct pmap_cpu_data, save_area)); + DECLARE("PMAP_COUNT", PMAP_COUNT); +#endif /* XNU_MONITOR */ + + +#if defined(HAS_APPLE_PAC) + DECLARE("CPU_ROP_KEY", offsetof(cpu_data_t, rop_key)); + DECLARE("CPU_JOP_KEY", offsetof(cpu_data_t, jop_key)); +#if __has_feature(ptrauth_function_pointer_type_discrimination) + DECLARE("THREAD_CONTINUE_T_DISC", __builtin_ptrauth_type_discriminator(thread_continue_t)); +#else + DECLARE("THREAD_CONTINUE_T_DISC", 0); +#endif /* __has_feature(ptrauth_function_pointer_type_discrimination) */ +#endif /* defined(HAS_APPLE_PAC) */ + + +#if __ARM_ARCH_8_5__ + DECLARE("CPU_SYNC_ON_CSWITCH", offsetof(cpu_data_t, sync_on_cswitch)); +#endif /* __ARM_ARCH_8_5__ */ + +#if HIBERNATION + DECLARE("HIBHDR_STACKOFFSET", offsetof(IOHibernateImageHeader, restore1StackOffset)); + DECLARE("HIBTRAMP_TTBR0", offsetof(pal_hib_tramp_result_t, ttbr0)); + DECLARE("HIBTRAMP_TTBR1", offsetof(pal_hib_tramp_result_t, ttbr1)); + DECLARE("HIBTRAMP_MEMSLIDE", offsetof(pal_hib_tramp_result_t, memSlide)); + DECLARE("HIBGLOBALS_KERNELSLIDE", offsetof(pal_hib_globals_t, kernelSlide)); +#endif /* HIBERNATION */ + + return 0; }