#ifndef ARCH_SYSTEM_API_H #define ARCH_SYSTEM_API_H //#include "AmbaDSP_ImgOSAL.h" #include "datatype.h" typedef struct { uint8 resered[28]; } OS_MUTEX_TYPE; typedef void* (*ik_system_memcpy_t)(void *p_str1, const void *p_str2, size_t n); typedef void* (*ik_system_memset_t)(void *p_str, int32 c, size_t n); typedef int32 (*ik_system_memcmp_t)(const void *p_str1, const void *p_str2, size_t n); typedef int32 (*ik_system_create_mutex_t)(OS_MUTEX_TYPE *p_mutex); typedef int32 (*ik_system_destroy_mutex_t)(OS_MUTEX_TYPE *p_mutex); typedef int32 (*ik_system_lock_mutex_t)(OS_MUTEX_TYPE *p_mutex, uint32 timeout); typedef int32 (*ik_system_unlock_mutex_t)(OS_MUTEX_TYPE *p_mutex); typedef int32 (*ik_system_print_t)(const char *p_format, ...); typedef int32 (*ik_system_clean_cache_t)(void *p_str, size_t n); typedef void* (*ik_system_convert_virtual_to_physical_t)(void* addr); typedef void* (*ik_system_convert_physical_to_virtual_t)(void* addr); typedef double64 (*ik_system_sqrt_t)(double64 x); #ifdef __unix__ extern ik_system_memcpy_t ik_system_memcpy; extern ik_system_memset_t ik_system_memset; extern ik_system_memcmp_t ik_system_memcmp; extern ik_system_create_mutex_t ik_system_create_mutex; extern ik_system_destroy_mutex_t ik_system_destroy_mutex; extern ik_system_lock_mutex_t ik_system_lock_mutex; extern ik_system_unlock_mutex_t ik_system_unlock_mutex; extern ik_system_convert_virtual_to_physical_t ik_system_virtual_to_physical_address; extern ik_system_convert_physical_to_virtual_t ik_system_physical_to_virtual_address; extern ik_system_print_t ik_system_print; extern ik_system_clean_cache_t ik_system_clean_cache; extern ik_system_sqrt_t ik_system_sqrt; #define amba_ik_system_memcpy ik_system_memcpy #define amba_ik_system_memset ik_system_memset #define amba_ik_system_memcmp ik_system_memcmp #define amba_ik_system_create_mutex ik_system_create_mutex #define amba_ik_system_destroy_mutex ik_system_destroy_mutex #define amba_ik_system_lock_mutex ik_system_lock_mutex #define amba_ik_system_unlock_mutex ik_system_unlock_mutex #define amba_ik_system_virtual_to_physical_address ik_system_virtual_to_physical_address #define amba_ik_system_physical_to_virtual_address ik_system_physical_to_virtual_address #define amba_ik_system_print ik_system_print #define amba_ik_system_clean_cache ik_system_clean_cache #define amba_ik_system_sqrt ik_system_sqrt void img_arch_registe_system_memcpy(const ik_system_memcpy_t *p_system_memcpy); void img_arch_registe_system_memset(const ik_system_memset_t *p_system_memset); void img_arch_registe_system_memcmp(const ik_system_memcmp_t *p_system_memcmp); void img_arch_registe_system_create_mutex(const ik_system_create_mutex_t *p_system_create_mutex); void img_arch_registe_system_destroy_mutex(const ik_system_destroy_mutex_t *p_system_destroy_mutex); void img_arch_registe_system_lock_mutex(const ik_system_lock_mutex_t *p_system_lock_mutex); void img_arch_registe_system_unlock_mutex(const ik_system_unlock_mutex_t *p_system_unlock_mutex); void img_arch_registe_system_print(const ik_system_print_t *p_system_print); void img_arch_registe_system_clean_cache(const ik_system_clean_cache_t *p_system_clean_cache); void img_arch_registe_system_virtual_to_physical_address(const ik_system_convert_virtual_to_physical_t *p_system_virtual_to_physical_address); void img_arch_registe_system_physical_to_virtual_address(const ik_system_convert_physical_to_virtual_t *p_system_physical_to_virtual_address); void img_arch_unregiste_system_memcpy(void); void img_arch_unregiste_system_memset(void); void img_arch_unregiste_system_memcmp(void); void img_arch_unregiste_system_create_mutex(void); void img_arch_unregiste_system_destroy_mutex(void); void img_arch_unregiste_system_lock_mutex(void); void img_arch_unregiste_system_unlock_mutex(void); void img_arch_unregiste_system_print(void); void img_arch_unregiste_system_clean_cache(void); void img_arch_unregiste_system_virtual_to_physical_address(void); void img_arch_unregiste_system_physical_to_virtual_address(void); void img_arch_registe_system_sqrt(const ik_system_sqrt_t *p_system_sqrt); void img_arch_unregiste_system_sqrt(void); uint32 img_arch_check_system_control_callback_function(void); #else //rtos #define amba_ik_system_memcpy memcpy #define amba_ik_system_memset memset #define amba_ik_system_memcmp memcmp #define amba_ik_system_create_mutex AmbaKAL_MutexCreate #define amba_ik_system_destroy_mutex AmbaKAL_MutexDelete #define amba_ik_system_lock_mutex AmbaKAL_MutexTake #define amba_ik_system_unlock_mutex AmbaKAL_MutexGive #define amba_ik_system_virtual_to_physical_address AmbaMmuVirtToPhys #define amba_ik_system_physical_to_virtual_address AmbaMmuPhysToVirt #define amba_ik_system_print AmbaPrint #define amba_ik_system_clean_cache AmbaCache_Clean #define amba_ik_system_sqrt sqrt #endif typedef struct { ik_system_memcpy_t system_memcpy; ik_system_memset_t system_memset; ik_system_memcmp_t system_memcmp; ik_system_create_mutex_t system_create_mutex; ik_system_destroy_mutex_t system_destroy_mutex; ik_system_lock_mutex_t system_lock_mutex; ik_system_unlock_mutex_t system_unlock_mutex; ik_system_print_t system_print; ik_system_clean_cache_t system_clean_cache; ik_system_convert_virtual_to_physical_t system_virtual_to_physical_address; ik_system_convert_physical_to_virtual_t system_physical_to_virtual_address; ik_system_sqrt_t system_sqrt; // FIXME: convert to virtual } ik_system_api_t; #endif