/*
|
*********************************************************************************************************
|
* AR100 System
|
* AR100 Software System Develop Kits
|
* Basic Data Types
|
*
|
* (c) Copyright 2012-2016, Sunny China
|
* All Rights Reserved
|
*
|
* File : types.h
|
* By : Sunny
|
* Version : v1.0
|
* Date : 2012-3-23
|
* Descript: general data types defines.
|
* Update : date auther ver notes
|
* 2012-3-23 13:53:43 Sunny 1.0 Create this file.
|
*********************************************************************************************************
|
*/
|
|
#ifndef __TYPES_H__
|
#define __TYPES_H__
|
|
/* return value defines */
|
#define OK (0)
|
#define FAIL (-1)
|
#define TRUE (1)
|
#define FALSE (0)
|
|
/* general data type defines */
|
typedef void *HANDLE;
|
typedef unsigned long long u64;
|
typedef unsigned int u32;
|
typedef unsigned short u16;
|
typedef unsigned char u8;
|
typedef signed long long s64;
|
typedef signed int s32;
|
typedef signed short s16;
|
typedef signed char s8;
|
typedef signed char bool;
|
|
/* general function pointer defines */
|
typedef s32(*__pCBK_t) (void *p_arg); /* call-back */
|
typedef s32(*__pISR_t) (void *p_arg); /* ISR */
|
typedef s32(*__pNotifier_t) (u32 message, u32 aux); /* notifer call-back */
|
typedef s32(*__pCPUExceptionHandler) (void); /* cpu exception handler pointer */
|
typedef s32(*ar100_cb_t) (void *arg);
|
typedef s32(*long_jump_fn) (void *arg);
|
typedef s32(*mem_long_jump_fn) (u32 arg);
|
|
/* Register read and write operations */
|
#define readb(reg) (*(volatile u8 *)(reg))
|
#define readw(reg) (*(volatile u16 *)(reg))
|
#define readl(reg) (*(volatile u32 *)(reg))
|
|
#define writeb(val, reg) (*(volatile u8 *)(reg) = (val))
|
#define writew(val, reg) (*(volatile u16 *)(reg) = (val))
|
#define writel(val, reg) (*(volatile u32 *)(reg) = (val))
|
|
|
/* Basic bit operations */
|
#define SET_REG_BIT(val, pos) ((val) |= 1U<<(pos))
|
#define CLEAR_REG_BIT(val, pos) ((val) &= ~(1U<<(pos)))
|
#define TEST_REG_BIT(val, pos) ((val) & (1U<<(pos)))
|
#define BITS_REG_MOD(len) ((1U<<(len)) - 1)
|
#define BITS_REG_MASK(len, pos) (~(BITS_REG_MOD(len)<<(pos)))
|
#define CLEAR_REG_BITS(val, pos, len) (val) &= BITS_REG_MASK(len, pos)
|
#define SET_REG_BITS(val, pos, len, _val) (val) = ((val) & BITS_REG_MASK(len, pos)) | (((_val) & BITS_REG_MOD(len))<<(pos))
|
#define TEST_REG_BITS(val, pos, len, _val) ((val) & (~BITS_REG_MASK(len, pos))) == ((_val)<<(pos))
|
#define GET_REG_BITS_VAL(val, pos, len) (((val)>>(pos)) & BITS_REG_MOD(len))
|
|
#define BITS_PER_LONG 32
|
#define DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
|
#define BITS_TO_LONGS(nr) DIV_ROUND_UP(nr, BITS_PER_BYTE * sizeof(long))
|
|
/* misc operations */
|
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
|
|
#endif /*__TYPES_H__*/
|