| # SPDX-License-Identifier: Apache-2.0 |
| |
| zephyr_library() |
| |
| zephyr_library_sources( |
| cpu_idle.S |
| fatal.c |
| irq_init.c |
| irq_manage.c |
| prep_c.c |
| reset.S |
| reset.c |
| switch.S |
| thread.c |
| vector_table.S |
| ) |
| |
| # Use large code model for addresses larger than 32 bits, |
| # This is 10 characters long (0x12345678). We can't use a |
| # simple numeric comparison because these values may be |
| # beyond the numeric range of integers for cmake. |
| |
| string(LENGTH "x${CONFIG_SRAM_BASE_ADDRESS}" SRAM_LENGTH) |
| string(LENGTH "x${CONFIG_KERNEL_VM_BASE}" KERNEL_VM_LENGTH) |
| |
| if(${SRAM_LENGTH} GREATER 11 OR ${KERNEL_VM_LENGTH} GREATER 11) |
| zephyr_cc_option(-mcmodel=large) |
| endif() |
| |
| zephyr_library_sources_ifdef(CONFIG_FPU_SHARING fpu.c fpu.S) |
| zephyr_library_sources_ifdef(CONFIG_ARM_MMU mmu.c mmu.S) |
| zephyr_library_sources_ifdef(CONFIG_ARM_MPU cortex_r/arm_mpu.c) |
| zephyr_library_sources_ifdef(CONFIG_USERSPACE userspace.S) |
| zephyr_library_sources_ifdef(CONFIG_GEN_SW_ISR_TABLE isr_wrapper.S) |
| zephyr_library_sources_ifdef(CONFIG_IRQ_OFFLOAD irq_offload.c) |
| zephyr_library_sources_ifdef(CONFIG_THREAD_LOCAL_STORAGE tls.c) |
| zephyr_library_sources_ifdef(CONFIG_HAS_ARM_SMCCC smccc-call.S) |
| zephyr_library_sources_ifdef(CONFIG_AARCH64_IMAGE_HEADER header.S) |
| zephyr_library_sources_ifdef(CONFIG_SEMIHOST semihost.c) |
| if ((CONFIG_MP_MAX_NUM_CPUS GREATER 1) OR (CONFIG_SMP)) |
| zephyr_library_sources(smp.c) |
| endif () |
| |
| zephyr_cc_option_ifdef(CONFIG_USERSPACE -mno-outline-atomics) |
| |
| # GCC may generate ldp/stp instructions with the Advanced SIMD Qn registers for |
| # consecutive 32-byte loads and stores. Saving and restoring the Advanced SIMD |
| # context is very expensive, and it is preferable to keep it turned off by not |
| # emitting these instructions for better context switching performance. |
| |
| if(CMAKE_C_COMPILER_ID STREQUAL "GNU") |
| zephyr_cc_option(-moverride=tune=no_ldp_stp_qregs) |
| endif() |
| |
| add_subdirectory_ifdef(CONFIG_SOC_XENVM xen) |