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

#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