You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
5.4 KiB
114 lines
5.4 KiB
#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
|
|
|