event_groups.c.017i.build_ssa_passes 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838
  1. vEventGroupSetNumber (void * xEventGroup, UBaseType_t uxEventGroupNumber)
  2. {
  3. <bb 2> :
  4. MEM[(struct EventGroup_t *)xEventGroup].uxEventGroupNumber = uxEventGroupNumber;
  5. return;
  6. }
  7. uxEventGroupGetNumber (void * xEventGroup)
  8. {
  9. const struct EventGroup_t * pxEventBits;
  10. UBaseType_t xReturn;
  11. UBaseType_t D.6567;
  12. <bb 2> :
  13. pxEventBits = xEventGroup;
  14. if (xEventGroup == 0B)
  15. goto <bb 3>; [INV]
  16. else
  17. goto <bb 4>; [INV]
  18. <bb 3> :
  19. xReturn = 0;
  20. goto <bb 5>; [INV]
  21. <bb 4> :
  22. xReturn = pxEventBits->uxEventGroupNumber;
  23. <bb 5> :
  24. D.6567 = xReturn;
  25. <bb 6> :
  26. <L3>:
  27. return D.6567;
  28. }
  29. xEventGroupSetBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, BaseType_t * pxHigherPriorityTaskWoken)
  30. {
  31. BaseType_t xReturn;
  32. BaseType_t D.6562;
  33. <bb 2> :
  34. xReturn = xTimerPendFunctionCallFromISR (vEventGroupSetBitsCallback, xEventGroup, uxBitsToSet, pxHigherPriorityTaskWoken);
  35. D.6562 = xReturn;
  36. <bb 3> :
  37. <L0>:
  38. return D.6562;
  39. }
  40. prvTestWaitCondition (const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits)
  41. {
  42. BaseType_t xWaitConditionMet;
  43. BaseType_t D.6560;
  44. <bb 2> :
  45. xWaitConditionMet = 0;
  46. if (xWaitForAllBits == 0)
  47. goto <bb 3>; [INV]
  48. else
  49. goto <bb 5>; [INV]
  50. <bb 3> :
  51. _1 = uxCurrentEventBits & uxBitsToWaitFor;
  52. if (_1 != 0)
  53. goto <bb 4>; [INV]
  54. else
  55. goto <bb 7>; [INV]
  56. <bb 4> :
  57. xWaitConditionMet = 1;
  58. goto <bb 7>; [INV]
  59. <bb 5> :
  60. _2 = uxCurrentEventBits & uxBitsToWaitFor;
  61. if (uxBitsToWaitFor == _2)
  62. goto <bb 6>; [INV]
  63. else
  64. goto <bb 7>; [INV]
  65. <bb 6> :
  66. xWaitConditionMet = 1;
  67. <bb 7> :
  68. D.6560 = xWaitConditionMet;
  69. <bb 8> :
  70. <L9>:
  71. return D.6560;
  72. }
  73. vEventGroupClearBitsCallback (void * pvEventGroup, const uint32_t ulBitsToClear)
  74. {
  75. <bb 2> :
  76. xEventGroupClearBits (pvEventGroup, ulBitsToClear);
  77. return;
  78. }
  79. vEventGroupSetBitsCallback (void * pvEventGroup, const uint32_t ulBitsToSet)
  80. {
  81. <bb 2> :
  82. xEventGroupSetBits (pvEventGroup, ulBitsToSet);
  83. return;
  84. }
  85. vEventGroupDelete (struct EventGroupDef_t * xEventGroup)
  86. {
  87. const struct List_t * pxTasksWaitingForBits;
  88. struct EventGroup_t * pxEventBits;
  89. <bb 2> :
  90. if (xEventGroup == 0B)
  91. goto <bb 3>; [INV]
  92. else
  93. goto <bb 5>; [INV]
  94. <bb 3> :
  95. vPortRaiseBASEPRI ();
  96. <bb 4> :
  97. goto <bb 4>; [INV]
  98. <bb 5> :
  99. pxEventBits = xEventGroup;
  100. pxTasksWaitingForBits = &pxEventBits->xTasksWaitingForBits;
  101. vTaskSuspendAll ();
  102. goto <bb 10>; [INV]
  103. <bb 6> :
  104. _1 = pxTasksWaitingForBits->xListEnd.pxNext;
  105. _2 = &pxTasksWaitingForBits->xListEnd;
  106. if (_1 == _2)
  107. goto <bb 7>; [INV]
  108. else
  109. goto <bb 9>; [INV]
  110. <bb 7> :
  111. vPortRaiseBASEPRI ();
  112. <bb 8> :
  113. goto <bb 8>; [INV]
  114. <bb 9> :
  115. _3 = pxTasksWaitingForBits->xListEnd.pxNext;
  116. vTaskRemoveFromUnorderedEventList (_3, 33554432);
  117. <bb 10> :
  118. _4 = pxTasksWaitingForBits->uxNumberOfItems;
  119. if (_4 != 0)
  120. goto <bb 6>; [INV]
  121. else
  122. goto <bb 11>; [INV]
  123. <bb 11> :
  124. vPortFree (pxEventBits);
  125. xTaskResumeAll ();
  126. return;
  127. }
  128. xEventGroupSetBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet)
  129. {
  130. BaseType_t xMatchFound;
  131. struct EventGroup_t * pxEventBits;
  132. EventBits_t uxControlBits;
  133. EventBits_t uxBitsWaitedFor;
  134. EventBits_t uxBitsToClear;
  135. const struct List_t * pxList;
  136. const struct ListItem_t * pxListEnd;
  137. struct ListItem_t * pxNext;
  138. struct ListItem_t * pxListItem;
  139. EventBits_t D.6545;
  140. <bb 2> :
  141. uxBitsToClear = 0;
  142. pxEventBits = xEventGroup;
  143. xMatchFound = 0;
  144. if (xEventGroup == 0B)
  145. goto <bb 3>; [INV]
  146. else
  147. goto <bb 5>; [INV]
  148. <bb 3> :
  149. vPortRaiseBASEPRI ();
  150. <bb 4> :
  151. goto <bb 4>; [INV]
  152. <bb 5> :
  153. _1 = uxBitsToSet & 4278190080;
  154. if (_1 != 0)
  155. goto <bb 6>; [INV]
  156. else
  157. goto <bb 8>; [INV]
  158. <bb 6> :
  159. vPortRaiseBASEPRI ();
  160. <bb 7> :
  161. goto <bb 7>; [INV]
  162. <bb 8> :
  163. pxList = &pxEventBits->xTasksWaitingForBits;
  164. pxListEnd = &pxList->xListEnd;
  165. vTaskSuspendAll ();
  166. pxListItem = pxList->xListEnd.pxNext;
  167. _2 = pxEventBits->uxEventBits;
  168. _3 = uxBitsToSet | _2;
  169. pxEventBits->uxEventBits = _3;
  170. goto <bb 19>; [INV]
  171. <bb 9> :
  172. pxNext = pxListItem->pxNext;
  173. uxBitsWaitedFor = pxListItem->xItemValue;
  174. xMatchFound = 0;
  175. uxControlBits = uxBitsWaitedFor & 4278190080;
  176. uxBitsWaitedFor = uxBitsWaitedFor & 16777215;
  177. _4 = uxControlBits & 67108864;
  178. if (_4 == 0)
  179. goto <bb 10>; [INV]
  180. else
  181. goto <bb 12>; [INV]
  182. <bb 10> :
  183. _5 = pxEventBits->uxEventBits;
  184. _6 = uxBitsWaitedFor & _5;
  185. if (_6 != 0)
  186. goto <bb 11>; [INV]
  187. else
  188. goto <bb 14>; [INV]
  189. <bb 11> :
  190. xMatchFound = 1;
  191. goto <bb 14>; [INV]
  192. <bb 12> :
  193. _7 = pxEventBits->uxEventBits;
  194. _8 = uxBitsWaitedFor & _7;
  195. if (uxBitsWaitedFor == _8)
  196. goto <bb 13>; [INV]
  197. else
  198. goto <bb 14>; [INV]
  199. <bb 13> :
  200. xMatchFound = 1;
  201. <bb 14> :
  202. if (xMatchFound != 0)
  203. goto <bb 15>; [INV]
  204. else
  205. goto <bb 18>; [INV]
  206. <bb 15> :
  207. _9 = uxControlBits & 16777216;
  208. if (_9 != 0)
  209. goto <bb 16>; [INV]
  210. else
  211. goto <bb 17>; [INV]
  212. <bb 16> :
  213. uxBitsToClear = uxBitsToClear | uxBitsWaitedFor;
  214. <bb 17> :
  215. _10 = pxEventBits->uxEventBits;
  216. _11 = _10 | 33554432;
  217. vTaskRemoveFromUnorderedEventList (pxListItem, _11);
  218. <bb 18> :
  219. pxListItem = pxNext;
  220. <bb 19> :
  221. if (pxListItem != pxListEnd)
  222. goto <bb 9>; [INV]
  223. else
  224. goto <bb 20>; [INV]
  225. <bb 20> :
  226. _12 = pxEventBits->uxEventBits;
  227. _13 = ~uxBitsToClear;
  228. _14 = _12 & _13;
  229. pxEventBits->uxEventBits = _14;
  230. xTaskResumeAll ();
  231. D.6545 = pxEventBits->uxEventBits;
  232. <bb 21> :
  233. <L23>:
  234. return D.6545;
  235. }
  236. xEventGroupGetBitsFromISR (struct EventGroupDef_t * xEventGroup)
  237. {
  238. EventBits_t uxReturn;
  239. const struct EventGroup_t * const pxEventBits;
  240. UBaseType_t uxSavedInterruptStatus;
  241. EventBits_t D.6523;
  242. <bb 2> :
  243. pxEventBits = xEventGroup;
  244. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  245. uxReturn = pxEventBits->uxEventBits;
  246. vPortSetBASEPRI (uxSavedInterruptStatus);
  247. D.6523 = uxReturn;
  248. <bb 3> :
  249. <L0>:
  250. return D.6523;
  251. }
  252. xEventGroupClearBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  253. {
  254. BaseType_t xReturn;
  255. BaseType_t D.6521;
  256. <bb 2> :
  257. xReturn = xTimerPendFunctionCallFromISR (vEventGroupClearBitsCallback, xEventGroup, uxBitsToClear, 0B);
  258. D.6521 = xReturn;
  259. <bb 3> :
  260. <L0>:
  261. return D.6521;
  262. }
  263. xEventGroupClearBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  264. {
  265. EventBits_t uxReturn;
  266. struct EventGroup_t * pxEventBits;
  267. EventBits_t D.6519;
  268. <bb 2> :
  269. pxEventBits = xEventGroup;
  270. if (xEventGroup == 0B)
  271. goto <bb 3>; [INV]
  272. else
  273. goto <bb 5>; [INV]
  274. <bb 3> :
  275. vPortRaiseBASEPRI ();
  276. <bb 4> :
  277. goto <bb 4>; [INV]
  278. <bb 5> :
  279. _1 = uxBitsToClear & 4278190080;
  280. if (_1 != 0)
  281. goto <bb 6>; [INV]
  282. else
  283. goto <bb 8>; [INV]
  284. <bb 6> :
  285. vPortRaiseBASEPRI ();
  286. <bb 7> :
  287. goto <bb 7>; [INV]
  288. <bb 8> :
  289. vPortEnterCritical ();
  290. uxReturn = pxEventBits->uxEventBits;
  291. _2 = pxEventBits->uxEventBits;
  292. _3 = ~uxBitsToClear;
  293. _4 = _2 & _3;
  294. pxEventBits->uxEventBits = _4;
  295. vPortExitCritical ();
  296. D.6519 = uxReturn;
  297. <bb 9> :
  298. <L6>:
  299. return D.6519;
  300. }
  301. xEventGroupWaitBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait)
  302. {
  303. const EventBits_t uxCurrentEventBits;
  304. BaseType_t xTimeoutOccurred;
  305. BaseType_t xAlreadyYielded;
  306. BaseType_t xWaitConditionMet;
  307. EventBits_t uxControlBits;
  308. EventBits_t uxReturn;
  309. struct EventGroup_t * pxEventBits;
  310. EventBits_t D.6513;
  311. int iftmp.1;
  312. <bb 2> :
  313. pxEventBits = xEventGroup;
  314. uxControlBits = 0;
  315. xTimeoutOccurred = 0;
  316. if (xEventGroup == 0B)
  317. goto <bb 3>; [INV]
  318. else
  319. goto <bb 5>; [INV]
  320. <bb 3> :
  321. vPortRaiseBASEPRI ();
  322. <bb 4> :
  323. goto <bb 4>; [INV]
  324. <bb 5> :
  325. _1 = uxBitsToWaitFor & 4278190080;
  326. if (_1 != 0)
  327. goto <bb 6>; [INV]
  328. else
  329. goto <bb 8>; [INV]
  330. <bb 6> :
  331. vPortRaiseBASEPRI ();
  332. <bb 7> :
  333. goto <bb 7>; [INV]
  334. <bb 8> :
  335. if (uxBitsToWaitFor == 0)
  336. goto <bb 9>; [INV]
  337. else
  338. goto <bb 11>; [INV]
  339. <bb 9> :
  340. vPortRaiseBASEPRI ();
  341. <bb 10> :
  342. goto <bb 10>; [INV]
  343. <bb 11> :
  344. _2 = xTaskGetSchedulerState ();
  345. if (_2 != 0)
  346. goto <bb 13>; [INV]
  347. else
  348. goto <bb 12>; [INV]
  349. <bb 12> :
  350. if (xTicksToWait == 0)
  351. goto <bb 13>; [INV]
  352. else
  353. goto <bb 14>; [INV]
  354. <bb 13> :
  355. iftmp.1 = 1;
  356. goto <bb 15>; [INV]
  357. <bb 14> :
  358. iftmp.1 = 0;
  359. <bb 15> :
  360. if (iftmp.1 == 0)
  361. goto <bb 16>; [INV]
  362. else
  363. goto <bb 18>; [INV]
  364. <bb 16> :
  365. vPortRaiseBASEPRI ();
  366. <bb 17> :
  367. goto <bb 17>; [INV]
  368. <bb 18> :
  369. vTaskSuspendAll ();
  370. uxCurrentEventBits = pxEventBits->uxEventBits;
  371. xWaitConditionMet = prvTestWaitCondition (uxCurrentEventBits, uxBitsToWaitFor, xWaitForAllBits);
  372. if (xWaitConditionMet != 0)
  373. goto <bb 19>; [INV]
  374. else
  375. goto <bb 21>; [INV]
  376. <bb 19> :
  377. uxReturn = uxCurrentEventBits;
  378. xTicksToWait = 0;
  379. if (xClearOnExit != 0)
  380. goto <bb 20>; [INV]
  381. else
  382. goto <bb 28>; [INV]
  383. <bb 20> :
  384. _3 = pxEventBits->uxEventBits;
  385. _4 = ~uxBitsToWaitFor;
  386. _5 = _3 & _4;
  387. pxEventBits->uxEventBits = _5;
  388. goto <bb 28>; [INV]
  389. <bb 21> :
  390. if (xTicksToWait == 0)
  391. goto <bb 22>; [INV]
  392. else
  393. goto <bb 23>; [INV]
  394. <bb 22> :
  395. uxReturn = uxCurrentEventBits;
  396. xTimeoutOccurred = 1;
  397. goto <bb 28>; [INV]
  398. <bb 23> :
  399. if (xClearOnExit != 0)
  400. goto <bb 24>; [INV]
  401. else
  402. goto <bb 25>; [INV]
  403. <bb 24> :
  404. uxControlBits = uxControlBits | 16777216;
  405. <bb 25> :
  406. if (xWaitForAllBits != 0)
  407. goto <bb 26>; [INV]
  408. else
  409. goto <bb 27>; [INV]
  410. <bb 26> :
  411. uxControlBits = uxControlBits | 67108864;
  412. <bb 27> :
  413. _6 = &pxEventBits->xTasksWaitingForBits;
  414. _7 = uxBitsToWaitFor | uxControlBits;
  415. vTaskPlaceOnUnorderedEventList (_6, _7, xTicksToWait);
  416. uxReturn = 0;
  417. <bb 28> :
  418. xAlreadyYielded = xTaskResumeAll ();
  419. if (xTicksToWait != 0)
  420. goto <bb 29>; [INV]
  421. else
  422. goto <bb 37>; [INV]
  423. <bb 29> :
  424. if (xAlreadyYielded == 0)
  425. goto <bb 30>; [INV]
  426. else
  427. goto <bb 31>; [INV]
  428. <bb 30> :
  429. _8 = 3758157060B;
  430. *_8 = 268435456;
  431. __asm__ __volatile__("dsb" : : : "memory");
  432. __asm__ __volatile__("isb");
  433. <bb 31> :
  434. uxReturn = uxTaskResetEventItemValue ();
  435. _9 = uxReturn & 33554432;
  436. if (_9 == 0)
  437. goto <bb 32>; [INV]
  438. else
  439. goto <bb 36>; [INV]
  440. <bb 32> :
  441. vPortEnterCritical ();
  442. uxReturn = pxEventBits->uxEventBits;
  443. _10 = prvTestWaitCondition (uxReturn, uxBitsToWaitFor, xWaitForAllBits);
  444. if (_10 != 0)
  445. goto <bb 33>; [INV]
  446. else
  447. goto <bb 35>; [INV]
  448. <bb 33> :
  449. if (xClearOnExit != 0)
  450. goto <bb 34>; [INV]
  451. else
  452. goto <bb 35>; [INV]
  453. <bb 34> :
  454. _11 = pxEventBits->uxEventBits;
  455. _12 = ~uxBitsToWaitFor;
  456. _13 = _11 & _12;
  457. pxEventBits->uxEventBits = _13;
  458. <bb 35> :
  459. xTimeoutOccurred = 1;
  460. vPortExitCritical ();
  461. <bb 36> :
  462. uxReturn = uxReturn & 16777215;
  463. <bb 37> :
  464. D.6513 = uxReturn;
  465. <bb 38> :
  466. <L45>:
  467. return D.6513;
  468. }
  469. xEventGroupSync (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait)
  470. {
  471. BaseType_t xTimeoutOccurred;
  472. BaseType_t xAlreadyYielded;
  473. struct EventGroup_t * pxEventBits;
  474. EventBits_t uxReturn;
  475. EventBits_t uxOriginalBitValue;
  476. EventBits_t D.6469;
  477. int iftmp.0;
  478. <bb 2> :
  479. pxEventBits = xEventGroup;
  480. xTimeoutOccurred = 0;
  481. _1 = uxBitsToWaitFor & 4278190080;
  482. if (_1 != 0)
  483. goto <bb 3>; [INV]
  484. else
  485. goto <bb 5>; [INV]
  486. <bb 3> :
  487. vPortRaiseBASEPRI ();
  488. <bb 4> :
  489. goto <bb 4>; [INV]
  490. <bb 5> :
  491. if (uxBitsToWaitFor == 0)
  492. goto <bb 6>; [INV]
  493. else
  494. goto <bb 8>; [INV]
  495. <bb 6> :
  496. vPortRaiseBASEPRI ();
  497. <bb 7> :
  498. goto <bb 7>; [INV]
  499. <bb 8> :
  500. _2 = xTaskGetSchedulerState ();
  501. if (_2 != 0)
  502. goto <bb 10>; [INV]
  503. else
  504. goto <bb 9>; [INV]
  505. <bb 9> :
  506. if (xTicksToWait == 0)
  507. goto <bb 10>; [INV]
  508. else
  509. goto <bb 11>; [INV]
  510. <bb 10> :
  511. iftmp.0 = 1;
  512. goto <bb 12>; [INV]
  513. <bb 11> :
  514. iftmp.0 = 0;
  515. <bb 12> :
  516. if (iftmp.0 == 0)
  517. goto <bb 13>; [INV]
  518. else
  519. goto <bb 15>; [INV]
  520. <bb 13> :
  521. vPortRaiseBASEPRI ();
  522. <bb 14> :
  523. goto <bb 14>; [INV]
  524. <bb 15> :
  525. vTaskSuspendAll ();
  526. uxOriginalBitValue = pxEventBits->uxEventBits;
  527. xEventGroupSetBits (xEventGroup, uxBitsToSet);
  528. _3 = uxOriginalBitValue | uxBitsToSet;
  529. _4 = uxBitsToWaitFor & _3;
  530. if (uxBitsToWaitFor == _4)
  531. goto <bb 16>; [INV]
  532. else
  533. goto <bb 17>; [INV]
  534. <bb 16> :
  535. uxReturn = uxOriginalBitValue | uxBitsToSet;
  536. _5 = pxEventBits->uxEventBits;
  537. _6 = ~uxBitsToWaitFor;
  538. _7 = _5 & _6;
  539. pxEventBits->uxEventBits = _7;
  540. xTicksToWait = 0;
  541. goto <bb 20>; [INV]
  542. <bb 17> :
  543. if (xTicksToWait != 0)
  544. goto <bb 18>; [INV]
  545. else
  546. goto <bb 19>; [INV]
  547. <bb 18> :
  548. _8 = &pxEventBits->xTasksWaitingForBits;
  549. _9 = uxBitsToWaitFor | 83886080;
  550. vTaskPlaceOnUnorderedEventList (_8, _9, xTicksToWait);
  551. uxReturn = 0;
  552. goto <bb 20>; [INV]
  553. <bb 19> :
  554. uxReturn = pxEventBits->uxEventBits;
  555. xTimeoutOccurred = 1;
  556. <bb 20> :
  557. xAlreadyYielded = xTaskResumeAll ();
  558. if (xTicksToWait != 0)
  559. goto <bb 21>; [INV]
  560. else
  561. goto <bb 28>; [INV]
  562. <bb 21> :
  563. if (xAlreadyYielded == 0)
  564. goto <bb 22>; [INV]
  565. else
  566. goto <bb 23>; [INV]
  567. <bb 22> :
  568. _10 = 3758157060B;
  569. *_10 = 268435456;
  570. __asm__ __volatile__("dsb" : : : "memory");
  571. __asm__ __volatile__("isb");
  572. <bb 23> :
  573. uxReturn = uxTaskResetEventItemValue ();
  574. _11 = uxReturn & 33554432;
  575. if (_11 == 0)
  576. goto <bb 24>; [INV]
  577. else
  578. goto <bb 27>; [INV]
  579. <bb 24> :
  580. vPortEnterCritical ();
  581. uxReturn = pxEventBits->uxEventBits;
  582. _12 = uxReturn & uxBitsToWaitFor;
  583. if (uxBitsToWaitFor == _12)
  584. goto <bb 25>; [INV]
  585. else
  586. goto <bb 26>; [INV]
  587. <bb 25> :
  588. _13 = pxEventBits->uxEventBits;
  589. _14 = ~uxBitsToWaitFor;
  590. _15 = _13 & _14;
  591. pxEventBits->uxEventBits = _15;
  592. <bb 26> :
  593. vPortExitCritical ();
  594. xTimeoutOccurred = 1;
  595. <bb 27> :
  596. uxReturn = uxReturn & 16777215;
  597. <bb 28> :
  598. D.6469 = uxReturn;
  599. <bb 29> :
  600. <L30>:
  601. return D.6469;
  602. }
  603. xEventGroupCreate ()
  604. {
  605. struct EventGroup_t * pxEventBits;
  606. struct EventGroupDef_t * D.6439;
  607. <bb 2> :
  608. pxEventBits = pvPortMalloc (28);
  609. if (pxEventBits != 0B)
  610. goto <bb 3>; [INV]
  611. else
  612. goto <bb 4>; [INV]
  613. <bb 3> :
  614. pxEventBits->uxEventBits = 0;
  615. _1 = &pxEventBits->xTasksWaitingForBits;
  616. vListInitialise (_1);
  617. <bb 4> :
  618. D.6439 = pxEventBits;
  619. <bb 5> :
  620. <L3>:
  621. return D.6439;
  622. }
  623. __attribute__((always_inline))
  624. vPortSetBASEPRI (uint32_t ulNewMaskValue)
  625. {
  626. <bb 2> :
  627. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue : "memory");
  628. return;
  629. }
  630. __attribute__((always_inline))
  631. ulPortRaiseBASEPRI ()
  632. {
  633. uint32_t ulNewBASEPRI;
  634. uint32_t ulOriginalBASEPRI;
  635. uint32_t D.6525;
  636. <bb 2> :
  637. __asm__ __volatile__(" mrs %0, basepri
  638. mov %1, %2
  639. msr basepri, %1
  640. isb
  641. dsb
  642. " : "=r" ulOriginalBASEPRI, "=r" ulNewBASEPRI : "i" 16 : "memory");
  643. D.6525 = ulOriginalBASEPRI;
  644. <bb 3> :
  645. <L0>:
  646. return D.6525;
  647. }
  648. __attribute__((always_inline))
  649. vPortRaiseBASEPRI ()
  650. {
  651. uint32_t ulNewBASEPRI;
  652. <bb 2> :
  653. __asm__ __volatile__(" mov %0, %1
  654. msr basepri, %0
  655. isb
  656. dsb
  657. " : "=r" ulNewBASEPRI : "i" 16 : "memory");
  658. return;
  659. }