Skip to content

Commit 3d0b7c4

Browse files
author
Seppo Takalo
committed
Add some functionality to atomic stubs
1 parent 738f521 commit 3d0b7c4

File tree

1 file changed

+51
-21
lines changed

1 file changed

+51
-21
lines changed

UNITTESTS/stubs/mbed_atomic_stub.c

Lines changed: 51 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -57,113 +57,143 @@ uint32_t core_util_atomic_exchange_u32(volatile uint32_t *ptr, uint32_t desiredV
5757

5858
uint8_t core_util_atomic_incr_u8(volatile uint8_t *valuePtr, uint8_t delta)
5959
{
60-
return 0;
60+
return *valuePtr+=delta;
6161
}
6262

6363
uint16_t core_util_atomic_incr_u16(volatile uint16_t *valuePtr, uint16_t delta)
6464
{
65-
return 0;
65+
return *valuePtr+=delta;
6666
}
6767

6868
uint32_t core_util_atomic_incr_u32(volatile uint32_t *valuePtr, uint32_t delta)
6969
{
70-
return 0;
70+
return *valuePtr+=delta;
7171
}
7272

7373

7474
uint8_t core_util_atomic_decr_u8(volatile uint8_t *valuePtr, uint8_t delta)
7575
{
76-
return 0;
76+
return *valuePtr-=delta;
7777
}
7878

7979
uint16_t core_util_atomic_decr_u16(volatile uint16_t *valuePtr, uint16_t delta)
8080
{
81-
return 0;
81+
return *valuePtr-=delta;
8282
}
8383

8484
uint32_t core_util_atomic_decr_u32(volatile uint32_t *valuePtr, uint32_t delta)
8585
{
86-
return 0;
86+
return *valuePtr-=delta;
8787
}
8888

8989

9090
uint8_t core_util_atomic_fetch_add_u8(volatile uint8_t *valuePtr, uint8_t arg)
9191
{
92-
return 0;
92+
uint8_t v = *valuePtr;
93+
*valuePtr += arg;
94+
return v;
9395
}
9496

9597
uint16_t core_util_atomic_fetch_add_u16(volatile uint16_t *valuePtr, uint16_t arg)
9698
{
97-
return 0;
99+
uint16_t v = *valuePtr;
100+
*valuePtr += arg;
101+
return v;
98102
}
99103

100104
uint32_t core_util_atomic_fetch_add_u32(volatile uint32_t *valuePtr, uint32_t arg)
101105
{
102-
return 0;
106+
uint32_t v = *valuePtr;
107+
*valuePtr += arg;
108+
return v;
103109
}
104110

105111

106112
uint8_t core_util_atomic_fetch_sub_u8(volatile uint8_t *valuePtr, uint8_t arg)
107113
{
108-
return 0;
114+
uint8_t v = *valuePtr;
115+
*valuePtr -= arg;
116+
return v;
109117
}
110118

111119
uint16_t core_util_atomic_fetch_sub_u16(volatile uint16_t *valuePtr, uint16_t arg)
112120
{
113-
return 0;
121+
uint16_t v = *valuePtr;
122+
*valuePtr -= arg;
123+
return v;
114124
}
115125

116126
uint32_t core_util_atomic_fetch_sub_u32(volatile uint32_t *valuePtr, uint32_t arg)
117127
{
118-
return 0;
128+
uint32_t v = *valuePtr;
129+
*valuePtr -= arg;
130+
return v;
119131
}
120132

121133

122134
uint8_t core_util_atomic_fetch_and_u8(volatile uint8_t *valuePtr, uint8_t arg)
123135
{
124-
return 0;
136+
uint8_t v = *valuePtr;
137+
*valuePtr &= arg;
138+
return v;
125139
}
126140

127141
uint16_t core_util_atomic_fetch_and_u16(volatile uint16_t *valuePtr, uint16_t arg)
128142
{
129-
return 0;
143+
uint16_t v = *valuePtr;
144+
*valuePtr &= arg;
145+
return v;
130146
}
131147

132148
uint32_t core_util_atomic_fetch_and_u32(volatile uint32_t *valuePtr, uint32_t arg)
133149
{
134-
return 0;
150+
uint32_t v = *valuePtr;
151+
*valuePtr &= arg;
152+
return v;
135153
}
136154

137155

138156
uint8_t core_util_atomic_fetch_or_u8(volatile uint8_t *valuePtr, uint8_t arg)
139157
{
140-
return 0;
158+
uint8_t v = *valuePtr;
159+
*valuePtr |= arg;
160+
return v;
141161
}
142162

143163
uint16_t core_util_atomic_fetch_or_u16(volatile uint16_t *valuePtr, uint16_t arg)
144164
{
145-
return 0;
165+
uint16_t v = *valuePtr;
166+
*valuePtr |= arg;
167+
return v;
146168
}
147169

148170
uint32_t core_util_atomic_fetch_or_u32(volatile uint32_t *valuePtr, uint32_t arg)
149171
{
150-
return 0;
172+
uint32_t v = *valuePtr;
173+
*valuePtr |= arg;
174+
return v;
151175
}
152176

153177

154178
uint8_t core_util_atomic_fetch_xor_u8(volatile uint8_t *valuePtr, uint8_t arg)
155179
{
156-
return 0;
180+
uint8_t v = *valuePtr;
181+
*valuePtr ^= arg;
182+
return v;
157183
}
158184

159185
uint16_t core_util_atomic_fetch_xor_u16(volatile uint16_t *valuePtr, uint16_t arg)
160186
{
161-
return 0;
187+
uint16_t v = *valuePtr;
188+
*valuePtr ^= arg;
189+
return v;
162190
}
163191

164192
uint32_t core_util_atomic_fetch_xor_u32(volatile uint32_t *valuePtr, uint32_t arg)
165193
{
166-
return 0;
194+
uint32_t v = *valuePtr;
195+
*valuePtr ^= arg;
196+
return v;
167197
}
168198

169199

0 commit comments

Comments
 (0)