event_groups.c.048i.remove_symbols 28 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232
  1. Reclaiming functions:
  2. Reclaiming variables:
  3. Clearing address taken flags:
  4. Symbol table:
  5. vPortFree/29 (vPortFree) @06c66b60
  6. Type: function
  7. Visibility: external public
  8. References:
  9. Referring:
  10. Availability: not_available
  11. Function flags:
  12. Called by: vEventGroupDelete/11
  13. Calls:
  14. vTaskRemoveFromUnorderedEventList/28 (vTaskRemoveFromUnorderedEventList) @06c669a0
  15. Type: function
  16. Visibility: external public
  17. References:
  18. Referring:
  19. Availability: not_available
  20. Function flags:
  21. Called by: vEventGroupDelete/11 xEventGroupSetBits/10
  22. Calls:
  23. xTimerPendFunctionCallFromISR/27 (xTimerPendFunctionCallFromISR) @06c66460
  24. Type: function
  25. Visibility: external public
  26. References:
  27. Referring:
  28. Availability: not_available
  29. Function flags:
  30. Called by: xEventGroupSetBitsFromISR/15 xEventGroupClearBitsFromISR/8
  31. Calls:
  32. vPortExitCritical/26 (vPortExitCritical) @06c3ce00
  33. Type: function
  34. Visibility: external public
  35. References:
  36. Referring:
  37. Availability: not_available
  38. Function flags:
  39. Called by: xEventGroupWaitBits/6 xEventGroupSync/5 xEventGroupClearBits/7
  40. Calls:
  41. vPortEnterCritical/25 (vPortEnterCritical) @06c3cd20
  42. Type: function
  43. Visibility: external public
  44. References:
  45. Referring:
  46. Availability: not_available
  47. Function flags:
  48. Called by: xEventGroupWaitBits/6 xEventGroupSync/5 xEventGroupClearBits/7
  49. Calls:
  50. uxTaskResetEventItemValue/24 (uxTaskResetEventItemValue) @06c3cc40
  51. Type: function
  52. Visibility: external public
  53. References:
  54. Referring:
  55. Availability: not_available
  56. Function flags:
  57. Called by: xEventGroupWaitBits/6 xEventGroupSync/5
  58. Calls:
  59. xTaskResumeAll/23 (xTaskResumeAll) @06c3cb60
  60. Type: function
  61. Visibility: external public
  62. References:
  63. Referring:
  64. Availability: not_available
  65. Function flags:
  66. Called by: xEventGroupWaitBits/6 vEventGroupDelete/11 xEventGroupSync/5 xEventGroupSetBits/10
  67. Calls:
  68. vTaskPlaceOnUnorderedEventList/22 (vTaskPlaceOnUnorderedEventList) @06c3ca80
  69. Type: function
  70. Visibility: external public
  71. References:
  72. Referring:
  73. Availability: not_available
  74. Function flags:
  75. Called by: xEventGroupWaitBits/6 xEventGroupSync/5
  76. Calls:
  77. vTaskSuspendAll/21 (vTaskSuspendAll) @06c3c9a0
  78. Type: function
  79. Visibility: external public
  80. References:
  81. Referring:
  82. Availability: not_available
  83. Function flags:
  84. Called by: xEventGroupWaitBits/6 vEventGroupDelete/11 xEventGroupSync/5 xEventGroupSetBits/10
  85. Calls:
  86. xTaskGetSchedulerState/20 (xTaskGetSchedulerState) @06c3c8c0
  87. Type: function
  88. Visibility: external public
  89. References:
  90. Referring:
  91. Availability: not_available
  92. Function flags:
  93. Called by: xEventGroupWaitBits/6 xEventGroupSync/5
  94. Calls:
  95. vListInitialise/19 (vListInitialise) @06c3c540
  96. Type: function
  97. Visibility: external public
  98. References:
  99. Referring:
  100. Availability: not_available
  101. Function flags:
  102. Called by: xEventGroupCreate/4
  103. Calls:
  104. pvPortMalloc/18 (pvPortMalloc) @06c3c460
  105. Type: function
  106. Visibility: external public
  107. References:
  108. Referring:
  109. Availability: not_available
  110. Function flags:
  111. Called by: xEventGroupCreate/4
  112. Calls:
  113. vEventGroupSetNumber/17 (vEventGroupSetNumber) @06c3c000
  114. Type: function definition analyzed
  115. Visibility: force_output externally_visible no_reorder public
  116. References:
  117. Referring:
  118. Availability: available
  119. Function flags: body
  120. Called by:
  121. Calls:
  122. uxEventGroupGetNumber/16 (uxEventGroupGetNumber) @06c32a80
  123. Type: function definition analyzed
  124. Visibility: force_output externally_visible no_reorder public
  125. References:
  126. Referring:
  127. Availability: available
  128. Function flags: body
  129. Called by:
  130. Calls:
  131. xEventGroupSetBitsFromISR/15 (xEventGroupSetBitsFromISR) @06c32460
  132. Type: function definition analyzed
  133. Visibility: force_output externally_visible no_reorder public
  134. References: vEventGroupSetBitsCallback/12 (addr)
  135. Referring:
  136. Availability: available
  137. Function flags: body
  138. Called by:
  139. Calls: xTimerPendFunctionCallFromISR/27
  140. prvTestWaitCondition/14 (prvTestWaitCondition) @06c32ee0
  141. Type: function definition analyzed
  142. Visibility: force_output no_reorder prevailing_def_ironly
  143. References:
  144. Referring:
  145. Availability: available
  146. Function flags: body
  147. Called by: xEventGroupWaitBits/6 xEventGroupWaitBits/6
  148. Calls:
  149. vEventGroupClearBitsCallback/13 (vEventGroupClearBitsCallback) @06c32c40
  150. Type: function definition analyzed
  151. Visibility: force_output externally_visible no_reorder public
  152. Address is taken.
  153. References:
  154. Referring: xEventGroupClearBitsFromISR/8 (addr)
  155. Availability: available
  156. Function flags: body
  157. Called by:
  158. Calls: xEventGroupClearBits/7
  159. vEventGroupSetBitsCallback/12 (vEventGroupSetBitsCallback) @06c329a0
  160. Type: function definition analyzed
  161. Visibility: force_output externally_visible no_reorder public
  162. Address is taken.
  163. References:
  164. Referring: xEventGroupSetBitsFromISR/15 (addr)
  165. Availability: available
  166. Function flags: body
  167. Called by:
  168. Calls: xEventGroupSetBits/10
  169. vEventGroupDelete/11 (vEventGroupDelete) @06c32700
  170. Type: function definition analyzed
  171. Visibility: force_output externally_visible no_reorder public
  172. References:
  173. Referring:
  174. Availability: available
  175. Function flags: body
  176. Called by:
  177. Calls: xTaskResumeAll/23 vPortFree/29 vTaskRemoveFromUnorderedEventList/28 vTaskSuspendAll/21
  178. xEventGroupSetBits/10 (xEventGroupSetBits) @06c32380
  179. Type: function definition analyzed
  180. Visibility: force_output externally_visible no_reorder public
  181. References:
  182. Referring:
  183. Availability: available
  184. Function flags: body
  185. Called by: vEventGroupSetBitsCallback/12 xEventGroupSync/5
  186. Calls: xTaskResumeAll/23 vTaskRemoveFromUnorderedEventList/28 vTaskSuspendAll/21
  187. xEventGroupGetBitsFromISR/9 (xEventGroupGetBitsFromISR) @06befc40
  188. Type: function definition analyzed
  189. Visibility: force_output externally_visible no_reorder public
  190. References:
  191. Referring:
  192. Availability: available
  193. Function flags: body
  194. Called by:
  195. Calls:
  196. xEventGroupClearBitsFromISR/8 (xEventGroupClearBitsFromISR) @06bef2a0
  197. Type: function definition analyzed
  198. Visibility: force_output externally_visible no_reorder public
  199. References: vEventGroupClearBitsCallback/13 (addr)
  200. Referring:
  201. Availability: available
  202. Function flags: body
  203. Called by:
  204. Calls: xTimerPendFunctionCallFromISR/27
  205. xEventGroupClearBits/7 (xEventGroupClearBits) @06befee0
  206. Type: function definition analyzed
  207. Visibility: force_output externally_visible no_reorder public
  208. References:
  209. Referring:
  210. Availability: available
  211. Function flags: body
  212. Called by: vEventGroupClearBitsCallback/13
  213. Calls: vPortExitCritical/26 vPortEnterCritical/25
  214. xEventGroupWaitBits/6 (xEventGroupWaitBits) @06befb60
  215. Type: function definition analyzed
  216. Visibility: force_output externally_visible no_reorder public
  217. References:
  218. Referring:
  219. Availability: available
  220. Function flags: body
  221. Called by:
  222. Calls: vPortExitCritical/26 prvTestWaitCondition/14 vPortEnterCritical/25 uxTaskResetEventItemValue/24 xTaskResumeAll/23 vTaskPlaceOnUnorderedEventList/22 prvTestWaitCondition/14 vTaskSuspendAll/21 xTaskGetSchedulerState/20
  223. xEventGroupSync/5 (xEventGroupSync) @06bef620
  224. Type: function definition analyzed
  225. Visibility: force_output externally_visible no_reorder public
  226. References:
  227. Referring:
  228. Availability: available
  229. Function flags: body
  230. Called by:
  231. Calls: vPortExitCritical/26 vPortEnterCritical/25 uxTaskResetEventItemValue/24 xTaskResumeAll/23 vTaskPlaceOnUnorderedEventList/22 xEventGroupSetBits/10 vTaskSuspendAll/21 xTaskGetSchedulerState/20
  232. xEventGroupCreate/4 (xEventGroupCreate) @06bef1c0
  233. Type: function definition analyzed
  234. Visibility: force_output externally_visible no_reorder public
  235. References:
  236. Referring:
  237. Availability: available
  238. Function flags: body
  239. Called by:
  240. Calls: vListInitialise/19 pvPortMalloc/18
  241. vEventGroupSetNumber (void * xEventGroup, UBaseType_t uxEventGroupNumber)
  242. {
  243. <bb 2> :
  244. MEM[(struct EventGroup_t *)xEventGroup_2(D)].uxEventGroupNumber = uxEventGroupNumber_3(D);
  245. return;
  246. }
  247. uxEventGroupGetNumber (void * xEventGroup)
  248. {
  249. const struct EventGroup_t * pxEventBits;
  250. UBaseType_t xReturn;
  251. UBaseType_t D.6567;
  252. UBaseType_t _7;
  253. <bb 2> :
  254. pxEventBits_3 = xEventGroup_2(D);
  255. if (xEventGroup_2(D) == 0B)
  256. goto <bb 3>; [INV]
  257. else
  258. goto <bb 4>; [INV]
  259. <bb 3> :
  260. xReturn_6 = 0;
  261. goto <bb 5>; [INV]
  262. <bb 4> :
  263. xReturn_5 = pxEventBits_3->uxEventGroupNumber;
  264. <bb 5> :
  265. # xReturn_1 = PHI <xReturn_6(3), xReturn_5(4)>
  266. _7 = xReturn_1;
  267. <bb 6> :
  268. <L3>:
  269. return _7;
  270. }
  271. xEventGroupSetBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, BaseType_t * pxHigherPriorityTaskWoken)
  272. {
  273. BaseType_t xReturn;
  274. BaseType_t D.6562;
  275. BaseType_t _7;
  276. <bb 2> :
  277. xReturn_6 = xTimerPendFunctionCallFromISR (vEventGroupSetBitsCallback, xEventGroup_2(D), uxBitsToSet_3(D), pxHigherPriorityTaskWoken_4(D));
  278. _7 = xReturn_6;
  279. <bb 3> :
  280. <L0>:
  281. return _7;
  282. }
  283. prvTestWaitCondition (const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits)
  284. {
  285. BaseType_t xWaitConditionMet;
  286. BaseType_t D.6560;
  287. long unsigned int _1;
  288. long unsigned int _2;
  289. BaseType_t _10;
  290. <bb 2> :
  291. xWaitConditionMet_4 = 0;
  292. if (xWaitForAllBits_5(D) == 0)
  293. goto <bb 3>; [INV]
  294. else
  295. goto <bb 5>; [INV]
  296. <bb 3> :
  297. _1 = uxCurrentEventBits_6(D) & uxBitsToWaitFor_7(D);
  298. if (_1 != 0)
  299. goto <bb 4>; [INV]
  300. else
  301. goto <bb 7>; [INV]
  302. <bb 4> :
  303. xWaitConditionMet_9 = 1;
  304. goto <bb 7>; [INV]
  305. <bb 5> :
  306. _2 = uxCurrentEventBits_6(D) & uxBitsToWaitFor_7(D);
  307. if (uxBitsToWaitFor_7(D) == _2)
  308. goto <bb 6>; [INV]
  309. else
  310. goto <bb 7>; [INV]
  311. <bb 6> :
  312. xWaitConditionMet_8 = 1;
  313. <bb 7> :
  314. # xWaitConditionMet_3 = PHI <xWaitConditionMet_9(4), xWaitConditionMet_4(5), xWaitConditionMet_8(6), xWaitConditionMet_4(3)>
  315. _10 = xWaitConditionMet_3;
  316. <bb 8> :
  317. <L9>:
  318. return _10;
  319. }
  320. vEventGroupClearBitsCallback (void * pvEventGroup, const uint32_t ulBitsToClear)
  321. {
  322. <bb 2> :
  323. xEventGroupClearBits (pvEventGroup_2(D), ulBitsToClear_3(D));
  324. return;
  325. }
  326. vEventGroupSetBitsCallback (void * pvEventGroup, const uint32_t ulBitsToSet)
  327. {
  328. <bb 2> :
  329. xEventGroupSetBits (pvEventGroup_2(D), ulBitsToSet_3(D));
  330. return;
  331. }
  332. vEventGroupDelete (struct EventGroupDef_t * xEventGroup)
  333. {
  334. uint32_t ulNewBASEPRI;
  335. uint32_t ulNewBASEPRI;
  336. const struct List_t * pxTasksWaitingForBits;
  337. struct EventGroup_t * pxEventBits;
  338. struct xLIST_ITEM * _1;
  339. const struct MiniListItem_t * _2;
  340. struct xLIST_ITEM * _3;
  341. long unsigned int _4;
  342. <bb 2> :
  343. if (xEventGroup_6(D) == 0B)
  344. goto <bb 3>; [INV]
  345. else
  346. goto <bb 6>; [INV]
  347. <bb 3> :
  348. __asm__ __volatile__(" mov %0, %1
  349. msr basepri, %0
  350. isb
  351. dsb
  352. " : "=r" ulNewBASEPRI_14 : "i" 16 : "memory");
  353. <bb 4> :
  354. <bb 5> :
  355. goto <bb 5>; [INV]
  356. <bb 6> :
  357. pxEventBits_7 = xEventGroup_6(D);
  358. pxTasksWaitingForBits_8 = &pxEventBits_7->xTasksWaitingForBits;
  359. vTaskSuspendAll ();
  360. goto <bb 12>; [INV]
  361. <bb 7> :
  362. _1 = pxTasksWaitingForBits_8->xListEnd.pxNext;
  363. _2 = &pxTasksWaitingForBits_8->xListEnd;
  364. if (_1 == _2)
  365. goto <bb 8>; [INV]
  366. else
  367. goto <bb 11>; [INV]
  368. <bb 8> :
  369. __asm__ __volatile__(" mov %0, %1
  370. msr basepri, %0
  371. isb
  372. dsb
  373. " : "=r" ulNewBASEPRI_15 : "i" 16 : "memory");
  374. <bb 9> :
  375. <bb 10> :
  376. goto <bb 10>; [INV]
  377. <bb 11> :
  378. _3 = pxTasksWaitingForBits_8->xListEnd.pxNext;
  379. vTaskRemoveFromUnorderedEventList (_3, 33554432);
  380. <bb 12> :
  381. _4 ={v} pxTasksWaitingForBits_8->uxNumberOfItems;
  382. if (_4 != 0)
  383. goto <bb 7>; [INV]
  384. else
  385. goto <bb 13>; [INV]
  386. <bb 13> :
  387. vPortFree (pxEventBits_7);
  388. xTaskResumeAll ();
  389. return;
  390. }
  391. xEventGroupSetBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet)
  392. {
  393. uint32_t ulNewBASEPRI;
  394. uint32_t ulNewBASEPRI;
  395. BaseType_t xMatchFound;
  396. struct EventGroup_t * pxEventBits;
  397. EventBits_t uxControlBits;
  398. EventBits_t uxBitsWaitedFor;
  399. EventBits_t uxBitsToClear;
  400. const struct List_t * pxList;
  401. const struct ListItem_t * pxListEnd;
  402. struct ListItem_t * pxNext;
  403. struct ListItem_t * pxListItem;
  404. EventBits_t D.6545;
  405. long unsigned int _1;
  406. long unsigned int _2;
  407. long unsigned int _3;
  408. long unsigned int _4;
  409. long unsigned int _5;
  410. long unsigned int _6;
  411. long unsigned int _7;
  412. long unsigned int _8;
  413. long unsigned int _9;
  414. long unsigned int _10;
  415. long unsigned int _11;
  416. long unsigned int _12;
  417. long unsigned int _13;
  418. long unsigned int _14;
  419. EventBits_t _35;
  420. <bb 2> :
  421. uxBitsToClear_22 = 0;
  422. pxEventBits_24 = xEventGroup_23(D);
  423. xMatchFound_25 = 0;
  424. if (xEventGroup_23(D) == 0B)
  425. goto <bb 3>; [INV]
  426. else
  427. goto <bb 6>; [INV]
  428. <bb 3> :
  429. __asm__ __volatile__(" mov %0, %1
  430. msr basepri, %0
  431. isb
  432. dsb
  433. " : "=r" ulNewBASEPRI_46 : "i" 16 : "memory");
  434. <bb 4> :
  435. <bb 5> :
  436. goto <bb 5>; [INV]
  437. <bb 6> :
  438. _1 = uxBitsToSet_26(D) & 4278190080;
  439. if (_1 != 0)
  440. goto <bb 7>; [INV]
  441. else
  442. goto <bb 10>; [INV]
  443. <bb 7> :
  444. __asm__ __volatile__(" mov %0, %1
  445. msr basepri, %0
  446. isb
  447. dsb
  448. " : "=r" ulNewBASEPRI_47 : "i" 16 : "memory");
  449. <bb 8> :
  450. <bb 9> :
  451. goto <bb 9>; [INV]
  452. <bb 10> :
  453. pxList_27 = &pxEventBits_24->xTasksWaitingForBits;
  454. pxListEnd_28 = &pxList_27->xListEnd;
  455. vTaskSuspendAll ();
  456. pxListItem_31 = pxList_27->xListEnd.pxNext;
  457. _2 = pxEventBits_24->uxEventBits;
  458. _3 = uxBitsToSet_26(D) | _2;
  459. pxEventBits_24->uxEventBits = _3;
  460. goto <bb 21>; [INV]
  461. <bb 11> :
  462. pxNext_36 = pxListItem_15->pxNext;
  463. uxBitsWaitedFor_37 = pxListItem_15->xItemValue;
  464. xMatchFound_38 = 0;
  465. uxControlBits_39 = uxBitsWaitedFor_37 & 4278190080;
  466. uxBitsWaitedFor_40 = uxBitsWaitedFor_37 & 16777215;
  467. _4 = uxControlBits_39 & 67108864;
  468. if (_4 == 0)
  469. goto <bb 12>; [INV]
  470. else
  471. goto <bb 14>; [INV]
  472. <bb 12> :
  473. _5 = pxEventBits_24->uxEventBits;
  474. _6 = uxBitsWaitedFor_40 & _5;
  475. if (_6 != 0)
  476. goto <bb 13>; [INV]
  477. else
  478. goto <bb 16>; [INV]
  479. <bb 13> :
  480. xMatchFound_42 = 1;
  481. goto <bb 16>; [INV]
  482. <bb 14> :
  483. _7 = pxEventBits_24->uxEventBits;
  484. _8 = uxBitsWaitedFor_40 & _7;
  485. if (uxBitsWaitedFor_40 == _8)
  486. goto <bb 15>; [INV]
  487. else
  488. goto <bb 16>; [INV]
  489. <bb 15> :
  490. xMatchFound_41 = 1;
  491. <bb 16> :
  492. # xMatchFound_19 = PHI <xMatchFound_42(13), xMatchFound_38(14), xMatchFound_41(15), xMatchFound_38(12)>
  493. if (xMatchFound_19 != 0)
  494. goto <bb 17>; [INV]
  495. else
  496. goto <bb 20>; [INV]
  497. <bb 17> :
  498. _9 = uxControlBits_39 & 16777216;
  499. if (_9 != 0)
  500. goto <bb 18>; [INV]
  501. else
  502. goto <bb 19>; [INV]
  503. <bb 18> :
  504. uxBitsToClear_43 = uxBitsToClear_18 | uxBitsWaitedFor_40;
  505. <bb 19> :
  506. # uxBitsToClear_16 = PHI <uxBitsToClear_18(17), uxBitsToClear_43(18)>
  507. _10 = pxEventBits_24->uxEventBits;
  508. _11 = _10 | 33554432;
  509. vTaskRemoveFromUnorderedEventList (pxListItem_15, _11);
  510. <bb 20> :
  511. # uxBitsToClear_17 = PHI <uxBitsToClear_18(16), uxBitsToClear_16(19)>
  512. pxListItem_45 = pxNext_36;
  513. <bb 21> :
  514. # pxListItem_15 = PHI <pxListItem_31(10), pxListItem_45(20)>
  515. # uxBitsToClear_18 = PHI <uxBitsToClear_22(10), uxBitsToClear_17(20)>
  516. if (pxListItem_15 != pxListEnd_28)
  517. goto <bb 11>; [INV]
  518. else
  519. goto <bb 22>; [INV]
  520. <bb 22> :
  521. _12 = pxEventBits_24->uxEventBits;
  522. _13 = ~uxBitsToClear_18;
  523. _14 = _12 & _13;
  524. pxEventBits_24->uxEventBits = _14;
  525. xTaskResumeAll ();
  526. _35 = pxEventBits_24->uxEventBits;
  527. <bb 23> :
  528. <L23>:
  529. return _35;
  530. }
  531. xEventGroupGetBitsFromISR (struct EventGroupDef_t * xEventGroup)
  532. {
  533. uint32_t D.6592;
  534. uint32_t ulOriginalBASEPRI;
  535. uint32_t ulNewBASEPRI;
  536. uint32_t D.6591;
  537. uint32_t ulNewMaskValue;
  538. EventBits_t uxReturn;
  539. const struct EventGroup_t * const pxEventBits;
  540. UBaseType_t uxSavedInterruptStatus;
  541. EventBits_t D.6523;
  542. EventBits_t _6;
  543. long unsigned int _10;
  544. <bb 2> :
  545. pxEventBits_2 = xEventGroup_1(D);
  546. __asm__ __volatile__(" mrs %0, basepri
  547. mov %1, %2
  548. msr basepri, %1
  549. isb
  550. dsb
  551. " : "=r" ulOriginalBASEPRI_8, "=r" ulNewBASEPRI_9 : "i" 16 : "memory");
  552. _10 = ulOriginalBASEPRI_8;
  553. <bb 3> :
  554. <L1>:
  555. _12 = _10;
  556. <bb 4> :
  557. uxSavedInterruptStatus_4 = _12;
  558. uxReturn_5 = pxEventBits_2->uxEventBits;
  559. ulNewMaskValue_7 = uxSavedInterruptStatus_4;
  560. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue_7 : "memory");
  561. <bb 5> :
  562. _6 = uxReturn_5;
  563. <bb 6> :
  564. <L0>:
  565. return _6;
  566. }
  567. xEventGroupClearBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  568. {
  569. BaseType_t xReturn;
  570. BaseType_t D.6521;
  571. BaseType_t _6;
  572. <bb 2> :
  573. xReturn_5 = xTimerPendFunctionCallFromISR (vEventGroupClearBitsCallback, xEventGroup_2(D), uxBitsToClear_3(D), 0B);
  574. _6 = xReturn_5;
  575. <bb 3> :
  576. <L0>:
  577. return _6;
  578. }
  579. xEventGroupClearBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  580. {
  581. uint32_t ulNewBASEPRI;
  582. uint32_t ulNewBASEPRI;
  583. EventBits_t uxReturn;
  584. struct EventGroup_t * pxEventBits;
  585. EventBits_t D.6519;
  586. long unsigned int _1;
  587. long unsigned int _2;
  588. long unsigned int _3;
  589. long unsigned int _4;
  590. EventBits_t _13;
  591. <bb 2> :
  592. pxEventBits_6 = xEventGroup_5(D);
  593. if (xEventGroup_5(D) == 0B)
  594. goto <bb 3>; [INV]
  595. else
  596. goto <bb 6>; [INV]
  597. <bb 3> :
  598. __asm__ __volatile__(" mov %0, %1
  599. msr basepri, %0
  600. isb
  601. dsb
  602. " : "=r" ulNewBASEPRI_14 : "i" 16 : "memory");
  603. <bb 4> :
  604. <bb 5> :
  605. goto <bb 5>; [INV]
  606. <bb 6> :
  607. _1 = uxBitsToClear_7(D) & 4278190080;
  608. if (_1 != 0)
  609. goto <bb 7>; [INV]
  610. else
  611. goto <bb 10>; [INV]
  612. <bb 7> :
  613. __asm__ __volatile__(" mov %0, %1
  614. msr basepri, %0
  615. isb
  616. dsb
  617. " : "=r" ulNewBASEPRI_15 : "i" 16 : "memory");
  618. <bb 8> :
  619. <bb 9> :
  620. goto <bb 9>; [INV]
  621. <bb 10> :
  622. vPortEnterCritical ();
  623. uxReturn_10 = pxEventBits_6->uxEventBits;
  624. _2 = pxEventBits_6->uxEventBits;
  625. _3 = ~uxBitsToClear_7(D);
  626. _4 = _2 & _3;
  627. pxEventBits_6->uxEventBits = _4;
  628. vPortExitCritical ();
  629. _13 = uxReturn_10;
  630. <bb 11> :
  631. <L6>:
  632. return _13;
  633. }
  634. xEventGroupWaitBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait)
  635. {
  636. uint32_t ulNewBASEPRI;
  637. uint32_t ulNewBASEPRI;
  638. uint32_t ulNewBASEPRI;
  639. uint32_t ulNewBASEPRI;
  640. const EventBits_t uxCurrentEventBits;
  641. BaseType_t xTimeoutOccurred;
  642. BaseType_t xAlreadyYielded;
  643. BaseType_t xWaitConditionMet;
  644. EventBits_t uxControlBits;
  645. EventBits_t uxReturn;
  646. struct EventGroup_t * pxEventBits;
  647. EventBits_t D.6513;
  648. int iftmp.1;
  649. long unsigned int _1;
  650. long int _2;
  651. long unsigned int _3;
  652. long unsigned int _4;
  653. long unsigned int _5;
  654. struct List_t * _6;
  655. long unsigned int _7;
  656. volatile uint32_t * _8;
  657. long unsigned int _9;
  658. long int _10;
  659. long unsigned int _11;
  660. long unsigned int _12;
  661. long unsigned int _13;
  662. int iftmp.1_20;
  663. int iftmp.1_34;
  664. int iftmp.1_35;
  665. EventBits_t _65;
  666. <bb 2> :
  667. pxEventBits_27 = xEventGroup_26(D);
  668. uxControlBits_28 = 0;
  669. xTimeoutOccurred_29 = 0;
  670. if (xEventGroup_26(D) == 0B)
  671. goto <bb 3>; [INV]
  672. else
  673. goto <bb 6>; [INV]
  674. <bb 3> :
  675. __asm__ __volatile__(" mov %0, %1
  676. msr basepri, %0
  677. isb
  678. dsb
  679. " : "=r" ulNewBASEPRI_66 : "i" 16 : "memory");
  680. <bb 4> :
  681. <bb 5> :
  682. goto <bb 5>; [INV]
  683. <bb 6> :
  684. _1 = uxBitsToWaitFor_30(D) & 4278190080;
  685. if (_1 != 0)
  686. goto <bb 7>; [INV]
  687. else
  688. goto <bb 10>; [INV]
  689. <bb 7> :
  690. __asm__ __volatile__(" mov %0, %1
  691. msr basepri, %0
  692. isb
  693. dsb
  694. " : "=r" ulNewBASEPRI_67 : "i" 16 : "memory");
  695. <bb 8> :
  696. <bb 9> :
  697. goto <bb 9>; [INV]
  698. <bb 10> :
  699. if (uxBitsToWaitFor_30(D) == 0)
  700. goto <bb 11>; [INV]
  701. else
  702. goto <bb 14>; [INV]
  703. <bb 11> :
  704. __asm__ __volatile__(" mov %0, %1
  705. msr basepri, %0
  706. isb
  707. dsb
  708. " : "=r" ulNewBASEPRI_68 : "i" 16 : "memory");
  709. <bb 12> :
  710. <bb 13> :
  711. goto <bb 13>; [INV]
  712. <bb 14> :
  713. _2 = xTaskGetSchedulerState ();
  714. if (_2 != 0)
  715. goto <bb 16>; [INV]
  716. else
  717. goto <bb 15>; [INV]
  718. <bb 15> :
  719. if (xTicksToWait_33(D) == 0)
  720. goto <bb 16>; [INV]
  721. else
  722. goto <bb 17>; [INV]
  723. <bb 16> :
  724. iftmp.1_35 = 1;
  725. goto <bb 18>; [INV]
  726. <bb 17> :
  727. iftmp.1_34 = 0;
  728. <bb 18> :
  729. # iftmp.1_20 = PHI <iftmp.1_35(16), iftmp.1_34(17)>
  730. if (iftmp.1_20 == 0)
  731. goto <bb 19>; [INV]
  732. else
  733. goto <bb 22>; [INV]
  734. <bb 19> :
  735. __asm__ __volatile__(" mov %0, %1
  736. msr basepri, %0
  737. isb
  738. dsb
  739. " : "=r" ulNewBASEPRI_69 : "i" 16 : "memory");
  740. <bb 20> :
  741. <bb 21> :
  742. goto <bb 21>; [INV]
  743. <bb 22> :
  744. vTaskSuspendAll ();
  745. uxCurrentEventBits_37 = pxEventBits_27->uxEventBits;
  746. xWaitConditionMet_40 = prvTestWaitCondition (uxCurrentEventBits_37, uxBitsToWaitFor_30(D), xWaitForAllBits_38(D));
  747. if (xWaitConditionMet_40 != 0)
  748. goto <bb 23>; [INV]
  749. else
  750. goto <bb 25>; [INV]
  751. <bb 23> :
  752. uxReturn_48 = uxCurrentEventBits_37;
  753. xTicksToWait_49 = 0;
  754. if (xClearOnExit_41(D) != 0)
  755. goto <bb 24>; [INV]
  756. else
  757. goto <bb 32>; [INV]
  758. <bb 24> :
  759. _3 = pxEventBits_27->uxEventBits;
  760. _4 = ~uxBitsToWaitFor_30(D);
  761. _5 = _3 & _4;
  762. pxEventBits_27->uxEventBits = _5;
  763. goto <bb 32>; [INV]
  764. <bb 25> :
  765. if (xTicksToWait_33(D) == 0)
  766. goto <bb 26>; [INV]
  767. else
  768. goto <bb 27>; [INV]
  769. <bb 26> :
  770. uxReturn_46 = uxCurrentEventBits_37;
  771. xTimeoutOccurred_47 = 1;
  772. goto <bb 32>; [INV]
  773. <bb 27> :
  774. if (xClearOnExit_41(D) != 0)
  775. goto <bb 28>; [INV]
  776. else
  777. goto <bb 29>; [INV]
  778. <bb 28> :
  779. uxControlBits_42 = uxControlBits_28 | 16777216;
  780. <bb 29> :
  781. # uxControlBits_18 = PHI <uxControlBits_28(27), uxControlBits_42(28)>
  782. if (xWaitForAllBits_38(D) != 0)
  783. goto <bb 30>; [INV]
  784. else
  785. goto <bb 31>; [INV]
  786. <bb 30> :
  787. uxControlBits_43 = uxControlBits_18 | 67108864;
  788. <bb 31> :
  789. # uxControlBits_19 = PHI <uxControlBits_18(29), uxControlBits_43(30)>
  790. _6 = &pxEventBits_27->xTasksWaitingForBits;
  791. _7 = uxBitsToWaitFor_30(D) | uxControlBits_19;
  792. vTaskPlaceOnUnorderedEventList (_6, _7, xTicksToWait_33(D));
  793. uxReturn_45 = 0;
  794. <bb 32> :
  795. # xTicksToWait_14 = PHI <xTicksToWait_49(24), xTicksToWait_33(D)(26), xTicksToWait_33(D)(31), xTicksToWait_49(23)>
  796. # uxReturn_15 = PHI <uxReturn_48(24), uxReturn_46(26), uxReturn_45(31), uxReturn_48(23)>
  797. xAlreadyYielded_52 = xTaskResumeAll ();
  798. if (xTicksToWait_14 != 0)
  799. goto <bb 33>; [INV]
  800. else
  801. goto <bb 41>; [INV]
  802. <bb 33> :
  803. if (xAlreadyYielded_52 == 0)
  804. goto <bb 34>; [INV]
  805. else
  806. goto <bb 35>; [INV]
  807. <bb 34> :
  808. _8 = 3758157060B;
  809. *_8 ={v} 268435456;
  810. __asm__ __volatile__("dsb" : : : "memory");
  811. __asm__ __volatile__("isb");
  812. <bb 35> :
  813. uxReturn_57 = uxTaskResetEventItemValue ();
  814. _9 = uxReturn_57 & 33554432;
  815. if (_9 == 0)
  816. goto <bb 36>; [INV]
  817. else
  818. goto <bb 40>; [INV]
  819. <bb 36> :
  820. vPortEnterCritical ();
  821. uxReturn_59 = pxEventBits_27->uxEventBits;
  822. _10 = prvTestWaitCondition (uxReturn_59, uxBitsToWaitFor_30(D), xWaitForAllBits_38(D));
  823. if (_10 != 0)
  824. goto <bb 37>; [INV]
  825. else
  826. goto <bb 39>; [INV]
  827. <bb 37> :
  828. if (xClearOnExit_41(D) != 0)
  829. goto <bb 38>; [INV]
  830. else
  831. goto <bb 39>; [INV]
  832. <bb 38> :
  833. _11 = pxEventBits_27->uxEventBits;
  834. _12 = ~uxBitsToWaitFor_30(D);
  835. _13 = _11 & _12;
  836. pxEventBits_27->uxEventBits = _13;
  837. <bb 39> :
  838. xTimeoutOccurred_62 = 1;
  839. vPortExitCritical ();
  840. <bb 40> :
  841. # uxReturn_16 = PHI <uxReturn_57(35), uxReturn_59(39)>
  842. uxReturn_64 = uxReturn_16 & 16777215;
  843. <bb 41> :
  844. # uxReturn_17 = PHI <uxReturn_15(32), uxReturn_64(40)>
  845. _65 = uxReturn_17;
  846. <bb 42> :
  847. <L45>:
  848. return _65;
  849. }
  850. xEventGroupSync (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait)
  851. {
  852. uint32_t ulNewBASEPRI;
  853. uint32_t ulNewBASEPRI;
  854. uint32_t ulNewBASEPRI;
  855. BaseType_t xTimeoutOccurred;
  856. BaseType_t xAlreadyYielded;
  857. struct EventGroup_t * pxEventBits;
  858. EventBits_t uxReturn;
  859. EventBits_t uxOriginalBitValue;
  860. EventBits_t D.6469;
  861. int iftmp.0;
  862. long unsigned int _1;
  863. long int _2;
  864. long unsigned int _3;
  865. long unsigned int _4;
  866. long unsigned int _5;
  867. long unsigned int _6;
  868. long unsigned int _7;
  869. struct List_t * _8;
  870. long unsigned int _9;
  871. volatile uint32_t * _10;
  872. long unsigned int _11;
  873. long unsigned int _12;
  874. long unsigned int _13;
  875. long unsigned int _14;
  876. long unsigned int _15;
  877. int iftmp.0_20;
  878. int iftmp.0_33;
  879. int iftmp.0_34;
  880. EventBits_t _59;
  881. <bb 2> :
  882. pxEventBits_27 = xEventGroup_26(D);
  883. xTimeoutOccurred_28 = 0;
  884. _1 = uxBitsToWaitFor_29(D) & 4278190080;
  885. if (_1 != 0)
  886. goto <bb 3>; [INV]
  887. else
  888. goto <bb 6>; [INV]
  889. <bb 3> :
  890. __asm__ __volatile__(" mov %0, %1
  891. msr basepri, %0
  892. isb
  893. dsb
  894. " : "=r" ulNewBASEPRI_60 : "i" 16 : "memory");
  895. <bb 4> :
  896. <bb 5> :
  897. goto <bb 5>; [INV]
  898. <bb 6> :
  899. if (uxBitsToWaitFor_29(D) == 0)
  900. goto <bb 7>; [INV]
  901. else
  902. goto <bb 10>; [INV]
  903. <bb 7> :
  904. __asm__ __volatile__(" mov %0, %1
  905. msr basepri, %0
  906. isb
  907. dsb
  908. " : "=r" ulNewBASEPRI_61 : "i" 16 : "memory");
  909. <bb 8> :
  910. <bb 9> :
  911. goto <bb 9>; [INV]
  912. <bb 10> :
  913. _2 = xTaskGetSchedulerState ();
  914. if (_2 != 0)
  915. goto <bb 12>; [INV]
  916. else
  917. goto <bb 11>; [INV]
  918. <bb 11> :
  919. if (xTicksToWait_32(D) == 0)
  920. goto <bb 12>; [INV]
  921. else
  922. goto <bb 13>; [INV]
  923. <bb 12> :
  924. iftmp.0_34 = 1;
  925. goto <bb 14>; [INV]
  926. <bb 13> :
  927. iftmp.0_33 = 0;
  928. <bb 14> :
  929. # iftmp.0_20 = PHI <iftmp.0_34(12), iftmp.0_33(13)>
  930. if (iftmp.0_20 == 0)
  931. goto <bb 15>; [INV]
  932. else
  933. goto <bb 18>; [INV]
  934. <bb 15> :
  935. __asm__ __volatile__(" mov %0, %1
  936. msr basepri, %0
  937. isb
  938. dsb
  939. " : "=r" ulNewBASEPRI_62 : "i" 16 : "memory");
  940. <bb 16> :
  941. <bb 17> :
  942. goto <bb 17>; [INV]
  943. <bb 18> :
  944. vTaskSuspendAll ();
  945. uxOriginalBitValue_36 = pxEventBits_27->uxEventBits;
  946. xEventGroupSetBits (xEventGroup_26(D), uxBitsToSet_37(D));
  947. _3 = uxOriginalBitValue_36 | uxBitsToSet_37(D);
  948. _4 = uxBitsToWaitFor_29(D) & _3;
  949. if (uxBitsToWaitFor_29(D) == _4)
  950. goto <bb 19>; [INV]
  951. else
  952. goto <bb 20>; [INV]
  953. <bb 19> :
  954. uxReturn_43 = uxOriginalBitValue_36 | uxBitsToSet_37(D);
  955. _5 = pxEventBits_27->uxEventBits;
  956. _6 = ~uxBitsToWaitFor_29(D);
  957. _7 = _5 & _6;
  958. pxEventBits_27->uxEventBits = _7;
  959. xTicksToWait_45 = 0;
  960. goto <bb 23>; [INV]
  961. <bb 20> :
  962. if (xTicksToWait_32(D) != 0)
  963. goto <bb 21>; [INV]
  964. else
  965. goto <bb 22>; [INV]
  966. <bb 21> :
  967. _8 = &pxEventBits_27->xTasksWaitingForBits;
  968. _9 = uxBitsToWaitFor_29(D) | 83886080;
  969. vTaskPlaceOnUnorderedEventList (_8, _9, xTicksToWait_32(D));
  970. uxReturn_42 = 0;
  971. goto <bb 23>; [INV]
  972. <bb 22> :
  973. uxReturn_39 = pxEventBits_27->uxEventBits;
  974. xTimeoutOccurred_40 = 1;
  975. <bb 23> :
  976. # xTicksToWait_16 = PHI <xTicksToWait_45(19), xTicksToWait_32(D)(21), xTicksToWait_32(D)(22)>
  977. # uxReturn_17 = PHI <uxReturn_43(19), uxReturn_42(21), uxReturn_39(22)>
  978. xAlreadyYielded_47 = xTaskResumeAll ();
  979. if (xTicksToWait_16 != 0)
  980. goto <bb 24>; [INV]
  981. else
  982. goto <bb 31>; [INV]
  983. <bb 24> :
  984. if (xAlreadyYielded_47 == 0)
  985. goto <bb 25>; [INV]
  986. else
  987. goto <bb 26>; [INV]
  988. <bb 25> :
  989. _10 = 3758157060B;
  990. *_10 ={v} 268435456;
  991. __asm__ __volatile__("dsb" : : : "memory");
  992. __asm__ __volatile__("isb");
  993. <bb 26> :
  994. uxReturn_52 = uxTaskResetEventItemValue ();
  995. _11 = uxReturn_52 & 33554432;
  996. if (_11 == 0)
  997. goto <bb 27>; [INV]
  998. else
  999. goto <bb 30>; [INV]
  1000. <bb 27> :
  1001. vPortEnterCritical ();
  1002. uxReturn_54 = pxEventBits_27->uxEventBits;
  1003. _12 = uxReturn_54 & uxBitsToWaitFor_29(D);
  1004. if (uxBitsToWaitFor_29(D) == _12)
  1005. goto <bb 28>; [INV]
  1006. else
  1007. goto <bb 29>; [INV]
  1008. <bb 28> :
  1009. _13 = pxEventBits_27->uxEventBits;
  1010. _14 = ~uxBitsToWaitFor_29(D);
  1011. _15 = _13 & _14;
  1012. pxEventBits_27->uxEventBits = _15;
  1013. <bb 29> :
  1014. vPortExitCritical ();
  1015. xTimeoutOccurred_57 = 1;
  1016. <bb 30> :
  1017. # uxReturn_18 = PHI <uxReturn_52(26), uxReturn_54(29)>
  1018. uxReturn_58 = uxReturn_18 & 16777215;
  1019. <bb 31> :
  1020. # uxReturn_19 = PHI <uxReturn_17(23), uxReturn_58(30)>
  1021. _59 = uxReturn_19;
  1022. <bb 32> :
  1023. <L30>:
  1024. return _59;
  1025. }
  1026. xEventGroupCreate ()
  1027. {
  1028. struct EventGroup_t * pxEventBits;
  1029. struct EventGroupDef_t * D.6439;
  1030. struct List_t * _1;
  1031. struct EventGroupDef_t * _8;
  1032. <bb 2> :
  1033. pxEventBits_5 = pvPortMalloc (28);
  1034. if (pxEventBits_5 != 0B)
  1035. goto <bb 3>; [INV]
  1036. else
  1037. goto <bb 4>; [INV]
  1038. <bb 3> :
  1039. pxEventBits_5->uxEventBits = 0;
  1040. _1 = &pxEventBits_5->xTasksWaitingForBits;
  1041. vListInitialise (_1);
  1042. <bb 4> :
  1043. _8 = pxEventBits_5;
  1044. <bb 5> :
  1045. <L3>:
  1046. return _8;
  1047. }