103 lines
2.2 KiB
C
103 lines
2.2 KiB
C
/*
|
|
* Copyright (c) XMEDIA. All rights reserved.
|
|
*/
|
|
#include <linux/module.h>
|
|
#include <linux/kernel.h>
|
|
// #include <asm/div64.h>
|
|
#include <linux/random.h>
|
|
#include <linux/version.h>
|
|
#include <linux/ctype.h>
|
|
#include <asm/neon.h>
|
|
#include "osal.h"
|
|
|
|
int osal_isdigit(int c)
|
|
{
|
|
return isdigit(c);
|
|
}
|
|
EXPORT_SYMBOL(osal_isdigit);
|
|
|
|
#ifdef CONFIG_KERNEL_MODE_NEON
|
|
void osal_kernel_neon_begin(void)
|
|
{
|
|
kernel_neon_begin();
|
|
}
|
|
EXPORT_SYMBOL(osal_kernel_neon_begin);
|
|
|
|
void osal_kernel_neon_end(void)
|
|
{
|
|
kernel_neon_end();
|
|
}
|
|
EXPORT_SYMBOL(osal_kernel_neon_end);
|
|
#endif
|
|
|
|
/* the result of u64/u32. */
|
|
unsigned long long osal_div_u64(unsigned long long dividend, unsigned int divisor)
|
|
{
|
|
return div_u64(dividend, divisor);
|
|
}
|
|
EXPORT_SYMBOL(osal_div_u64);
|
|
|
|
/* the result of s64/s32. */
|
|
long long osal_div_s64(long long dividend, int divisor)
|
|
{
|
|
return div_s64(dividend, divisor);
|
|
}
|
|
EXPORT_SYMBOL(osal_div_s64);
|
|
|
|
/* the result of u64/u64. */
|
|
unsigned long long osal_div64_u64(unsigned long long dividend, unsigned long long divisor)
|
|
{
|
|
return div64_u64(dividend, divisor);
|
|
}
|
|
EXPORT_SYMBOL(osal_div64_u64);
|
|
|
|
/* the result of s64/s64. */
|
|
long long osal_div64_s64(long long dividend, long long divisor)
|
|
{
|
|
return div64_s64(dividend, divisor);
|
|
}
|
|
EXPORT_SYMBOL(osal_div64_s64);
|
|
|
|
/* the remainder of u64/u32. */
|
|
unsigned long long osal_div_u64_rem(unsigned long long dividend, unsigned int divisor)
|
|
{
|
|
unsigned int remainder;
|
|
|
|
div_u64_rem(dividend, divisor, &remainder);
|
|
|
|
return remainder;
|
|
}
|
|
EXPORT_SYMBOL(osal_div_u64_rem);
|
|
|
|
/* the remainder of s64/s32. */
|
|
long long osal_div_s64_rem(long long dividend, int divisor)
|
|
{
|
|
int remainder;
|
|
|
|
div_s64_rem(dividend, divisor, &remainder);
|
|
|
|
return remainder;
|
|
}
|
|
EXPORT_SYMBOL(osal_div_s64_rem);
|
|
|
|
/* the remainder of u64/u64. */
|
|
unsigned long long osal_div64_u64_rem(unsigned long long dividend, unsigned long long divisor)
|
|
{
|
|
unsigned long long remainder;
|
|
|
|
div64_u64_rem(dividend, divisor, &remainder);
|
|
|
|
return remainder;
|
|
}
|
|
EXPORT_SYMBOL(osal_div64_u64_rem);
|
|
|
|
unsigned int osal_random(void)
|
|
{
|
|
#if LINUX_VERSION_CODE < KERNEL_VERSION(3, 18, 0)
|
|
return random32();
|
|
#else
|
|
return get_random_int();
|
|
#endif
|
|
}
|
|
EXPORT_SYMBOL(osal_random);
|