WS63 SDK 文档
7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
common_def.h
浏览该文件的文档.
1
8
#ifndef COMMON_DEF_H
9
#define COMMON_DEF_H
10
#ifndef __KERNEL__
11
#include <stdint.h>
12
#endif
13
#ifdef __cplusplus
14
#if __cplusplus
15
extern
"C"
{
16
#endif
17
#endif
18
19
20
#ifndef NULL
21
#define NULL 0L
22
#endif
23
24
#ifndef array_size
25
#define array_size(x) (sizeof(x) / sizeof((x)[0]))
26
#endif
27
28
#ifndef min
29
#define min(x, y) (((x) < (y)) ? (x) : (y))
30
#endif
31
32
#ifndef max
33
#define max(x, y) (((x) > (y)) ? (x) : (y))
34
#endif
35
36
#ifdef __GNUC__
37
#ifndef likely
38
#define likely(x) __builtin_expect(!!(x), 1)
39
#endif
40
#ifndef unlikely
41
#define unlikely(x) __builtin_expect(!!(x), 0)
42
#endif
43
#else
44
#define likely(x) (x)
45
#define unlikely(x) (x)
46
#endif
47
48
#ifndef unused
49
#define unused(var) (void)(var)
50
#endif
51
52
53
#ifndef STATIC
54
#if (defined(CONFIG_ROM_COMPILE) || defined(UT_TEST))
55
#define STATIC
56
#else
57
#define STATIC static
58
#endif
59
#endif
60
61
#ifndef INLINE
62
#if (defined(CONFIG_ROM_COMPILE) || defined(UT_TEST))
63
#define INLINE static inline
64
#else
65
#define INLINE inline
66
#endif
67
#endif
68
69
70
#ifndef bit
71
#define bit(x) (1UL << (uint32_t)(x))
72
#endif
73
74
75
#define makeu16(a, b) ((uint16_t)(((uint8_t)(a)) | ((uint16_t)((uint8_t)(b))) << 8))
76
#define makeu32(a, b) ((uint32_t)(((uint16_t)(a)) | ((uint32_t)((uint16_t)(b))) << 16))
77
#define makeu64(a, b) ((uint64_t)(((uint32_t)(a)) | ((uint64_t)((uint32_t)(b))) << 32))
78
#define joinu32(a, b, c, d) makeu32(makeu16((a), (b)), makeu16((c), (d)))
79
80
#define hiu32(x) ((uint32_t)(((uint64_t)(x) >> 32) & 0xFFFFFFFF))
81
#define lou32(x) ((uint32_t)(x))
82
83
#define hiu16(x) ((uint16_t)(((uint32_t)(x) >> 16) & 0xFFFF))
84
#define lou16(x) ((uint16_t)(x))
85
86
#define hiu8(x) ((uint8_t)(((uint16_t)(x) >> 8) & 0xFF))
87
#define lou8(x) ((uint8_t)(x))
88
89
#define uapi_max(a, b) (((a) > (b)) ? (a) : (b))
90
#define uapi_min(a, b) (((a) < (b)) ? (a) : (b))
91
92
#define uapi_reg_write(addr, val) (*(volatile unsigned int *)(uintptr_t)(addr) = (val))
93
#define uapi_reg_read(addr, val) ((val) = *(volatile unsigned int *)(uintptr_t)(addr))
94
#define uapi_reg_write32(addr, val) (*(volatile unsigned int *)(uintptr_t)(addr) = (val))
95
#define uapi_reg_read32(addr, val) ((val) = *(volatile unsigned int *)(uintptr_t)(addr))
96
#define uapi_reg_read_val32(addr) (*(volatile unsigned int*)(uintptr_t)(addr))
97
#define uapi_reg_setbitmsk(addr, msk) ((uapi_reg_read_val32(addr)) |= (msk))
98
#define uapi_reg_clrbitmsk(addr, msk) ((uapi_reg_read_val32(addr)) &= ~(msk))
99
#define uapi_reg_clrbit(addr, pos) ((uapi_reg_read_val32(addr)) &= ~((unsigned int)(1) << (pos)))
100
#define uapi_reg_setbit(addr, pos) ((uapi_reg_read_val32(addr)) |= ((unsigned int)(1) << (pos)))
101
#define uapi_reg_clrbits(addr, pos, bits) (uapi_reg_read_val32(addr) &= ~((((unsigned int)1 << (bits)) - 1) << (pos)))
102
#define uapi_reg_setbits(addr, pos, bits, val) (uapi_reg_read_val32(addr) = \
103
(uapi_reg_read_val32(addr) & (~((((unsigned int)1 << (bits)) - 1) << (pos)))) | \
104
((unsigned int)((val) & (((unsigned int)1 << (bits)) - 1)) << (pos)))
105
#define uapi_reg_getbits(addr, pos, bits) ((uapi_reg_read_val32(addr) >> (pos)) & (((unsigned int)1 << (bits)) - 1))
106
107
#define uapi_reg_write16(addr, val) (*(volatile unsigned short *)(uintptr_t)(addr) = (val))
108
#define uapi_reg_read16(addr, val) ((val) = *(volatile unsigned short *)(uintptr_t)(addr))
109
#define uapi_reg_read_val16(addr) (*(volatile unsigned short*)(uintptr_t)(addr))
110
#define uapi_reg_clrbit16(addr, pos) ((uapi_reg_read_val16(addr)) &= ~((unsigned short)(1) << (pos)))
111
#define uapi_reg_setbit16(addr, pos) ((uapi_reg_read_val16(addr)) |= ((unsigned short)(1) << (pos)))
112
#define uapi_reg_clrbits16(addr, pos, bits) (uapi_reg_read_val16(addr) &= \
113
~((((unsigned short)1 << (bits)) - 1) << (pos)))
114
#define uapi_reg_setbits16(addr, pos, bits, val) (uapi_reg_read_val16(addr) = \
115
(uapi_reg_read_val16(addr) & (~((((unsigned short)1 << (bits)) - 1) << (pos)))) | \
116
((unsigned short)((val) & (((unsigned short)1 << (bits)) - 1)) << (pos)))
117
#define uapi_reg_getbits16(addr, pos, bits) ((uapi_reg_read_val16(addr) >> (pos)) & (((unsigned short)1 << (bits)) - 1))
118
119
#define uapi_reg_write8(addr, val) (*(volatile unsigned char *)(uintptr_t)(addr) = (val))
120
#define uapi_reg_read8(addr, val) ((val) = *(volatile unsigned char *)(uintptr_t)(addr))
121
#define uapi_reg_read_val8(addr) (*(volatile unsigned char*)(uintptr_t)(addr))
122
#define uapi_reg_clrbit8(addr, pos) ((uapi_reg_read_val8(addr)) &= ~((unsigned char)(1) << (pos)))
123
#define uapi_reg_setbit8(addr, pos) ((uapi_reg_read_val8(addr)) |= ((unsigned char)(1) << (pos)))
124
#define uapi_reg_clrbits8(addr, pos, bits) (uapi_reg_read_val8(addr) &= ~((((unsigned char)1 << (bits)) - 1) << (pos)))
125
#define uapi_reg_setbits8(addr, pos, bits, val) (uapi_reg_read_val8(addr) = \
126
(uapi_reg_read_val8(addr) & (~((((unsigned char)1 << (bits)) - 1) << (pos)))) | \
127
((unsigned char)((val) & (((unsigned char)1 << (bits)) - 1)) << (pos)))
128
#define uapi_reg_getbits8(addr, pos, bits) ((uapi_reg_read_val8(addr) >> (pos)) & (((unsigned char)1 << (bits)) - 1))
129
137
#define fieldoffset(s, m) ((uint32_t) &(((s *)0)->m))
138
139
140
#ifdef __cplusplus
141
#if __cplusplus
142
}
143
#endif
144
#endif
145
146
#endif
src
include
common_def.h
由
William Goodspeed
维护 | E-mail: gongzl@stu.hebust.edu.cn | Wechat: a23333344 | ALSO CHECKOUT
WS63FLASH
!
生成于 2025年 一月 4日 星期六 17:47:12 , 为 WS63 SDK 文档使用
1.9.8