1 /* 2 * Copyright (c) 2010-2014 Wind River Systems, Inc. 3 * Copyright (c) 2017 Oticon A/S 4 * 5 * SPDX-License-Identifier: Apache-2.0 6 */ 7 8 /** 9 * @file 10 * @brief POSIX arch specific kernel interface header 11 * This header contains the POSIX arch specific kernel interface. 12 * It is included by the generic kernel interface header (include/arch/cpu.h) 13 * 14 */ 15 16 17 #ifndef ZEPHYR_INCLUDE_ARCH_POSIX_ARCH_H_ 18 #define ZEPHYR_INCLUDE_ARCH_POSIX_ARCH_H_ 19 20 /* Add include for DTS generated information */ 21 #include <zephyr/devicetree.h> 22 23 #include <zephyr/toolchain.h> 24 #include <zephyr/irq.h> 25 #include <zephyr/arch/posix/exception.h> 26 #include <zephyr/arch/posix/asm_inline.h> 27 #include <zephyr/arch/posix/thread.h> 28 #include <board_irq.h> /* Each board must define this */ 29 #include <zephyr/sw_isr_table.h> 30 #include <zephyr/arch/posix/posix_soc_if.h> 31 32 #ifdef __cplusplus 33 extern "C" { 34 #endif 35 36 #ifdef CONFIG_64BIT 37 #define ARCH_STACK_PTR_ALIGN 8 38 #else 39 #define ARCH_STACK_PTR_ALIGN 4 40 #endif 41 42 extern uint32_t sys_clock_cycle_get_32(void); 43 arch_k_cycle_get_32(void)44static inline uint32_t arch_k_cycle_get_32(void) 45 { 46 return sys_clock_cycle_get_32(); 47 } 48 49 extern uint64_t sys_clock_cycle_get_64(void); 50 arch_k_cycle_get_64(void)51static inline uint64_t arch_k_cycle_get_64(void) 52 { 53 return sys_clock_cycle_get_64(); 54 } 55 arch_nop(void)56static ALWAYS_INLINE void arch_nop(void) 57 { 58 __asm__ volatile("nop"); 59 } 60 arch_irq_unlocked(unsigned int key)61static ALWAYS_INLINE bool arch_irq_unlocked(unsigned int key) 62 { 63 return key == false; 64 } 65 arch_irq_lock(void)66static ALWAYS_INLINE unsigned int arch_irq_lock(void) 67 { 68 return posix_irq_lock(); 69 } 70 71 arch_irq_unlock(unsigned int key)72static ALWAYS_INLINE void arch_irq_unlock(unsigned int key) 73 { 74 posix_irq_unlock(key); 75 } 76 77 #ifdef __cplusplus 78 } 79 #endif 80 81 #endif /* ZEPHYR_INCLUDE_ARCH_POSIX_ARCH_H_ */ 82