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
15extern "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