2
2
3
3
#include <stdint.h>
4
4
5
+ __attribute__((always_inline ))
5
6
static inline void
6
7
reg_wr (uint32_t addr , uint32_t value )
7
8
{
8
9
volatile uint32_t * ptr = (uint32_t * )addr ;
9
10
* ptr = value ;
10
11
}
11
12
13
+ __attribute__((always_inline ))
12
14
static inline void
13
15
reg_wr8 (uint32_t addr , uint8_t value )
14
16
{
15
17
volatile uint8_t * ptr = (uint8_t * )addr ;
16
18
* ptr = value ;
17
19
}
18
20
21
+ __attribute__((always_inline ))
19
22
static inline void
20
23
reg_wr16 (uint32_t addr , uint16_t value )
21
24
{
22
25
volatile uint16_t * ptr = (uint16_t * )addr ;
23
26
* ptr = value ;
24
27
}
25
28
29
+ __attribute__((always_inline ))
26
30
static inline uint32_t
27
31
reg_rd (uint32_t addr )
28
32
{
29
33
volatile uint32_t * ptr = (uint32_t * )addr ;
30
34
return * ptr ;
31
35
}
32
36
37
+ __attribute__((always_inline ))
33
38
static inline uint8_t
34
39
reg_rd8 (uint32_t addr )
35
40
{
36
41
volatile uint8_t * ptr = (uint8_t * )addr ;
37
42
return * ptr ;
38
43
}
39
44
45
+ __attribute__((always_inline ))
40
46
static inline void
41
47
reg_set (uint32_t addr , uint32_t mask )
42
48
{
43
49
volatile uint32_t * ptr = (uint32_t * )addr ;
44
50
* ptr |= mask ;
45
51
}
46
52
53
+ __attribute__((always_inline ))
47
54
static inline void
48
55
reg_set_bits (uint32_t addr , uint32_t shift , uint32_t length , uint32_t bits )
49
56
{
@@ -54,24 +61,28 @@ reg_set_bits(uint32_t addr, uint32_t shift, uint32_t length, uint32_t bits)
54
61
* ptr = (* ptr & ~mask ) | ((bits << shift ) & mask );
55
62
}
56
63
64
+ __attribute__((always_inline ))
57
65
static inline void
58
66
reg_set_bit (uint32_t addr , uint32_t bit )
59
67
{
60
68
reg_set_bits (addr , bit , 1 , 1 );
61
69
}
62
70
71
+ __attribute__((always_inline ))
63
72
static inline void
64
73
reg_clr_bit (uint32_t addr , uint32_t bit )
65
74
{
66
75
reg_set_bits (addr , bit , 1 , 0 );
67
76
}
68
77
78
+ __attribute__((always_inline ))
69
79
static inline int
70
80
reg_get_bit (uint32_t addr , int bit )
71
81
{
72
82
return (reg_rd (addr ) >> bit ) & 1 ;
73
83
}
74
84
85
+ __attribute__((always_inline ))
75
86
static inline void
76
87
reg_or (uint32_t addr , uint32_t bits )
77
88
{
0 commit comments