huangcm
2025-07-03 a76b2fadf6ad4adf86e241e3753a63efe03ef80c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
/*
*********************************************************************************************************
*                                                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__*/