event_groups.c.070i.icf 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296
  1. Parsed function:xEventGroupSetBits.part.0
  2. Parsed function:xEventGroupClearBits.part.0
  3. Parsed function:vEventGroupSetNumber
  4. Parsed function:uxEventGroupGetNumber
  5. Parsed function:xEventGroupSetBitsFromISR
  6. Parsed function:prvTestWaitCondition
  7. Parsed function:vEventGroupClearBitsCallback
  8. Parsed function:vEventGroupSetBitsCallback
  9. Parsed function:vEventGroupDelete
  10. Parsed function:xEventGroupSetBits
  11. Parsed function:xEventGroupGetBitsFromISR
  12. Parsed function:xEventGroupClearBitsFromISR
  13. Parsed function:xEventGroupClearBits
  14. Parsed function:xEventGroupWaitBits
  15. Parsed function:xEventGroupSync
  16. Parsed function:xEventGroupCreate
  17. Dump after hash based groups
  18. Congruence classes: 14 (unique hash values: 14), with total: 16 items
  19. Class size histogram [num of members]: number of classe number of classess
  20. [1]: 12 classes
  21. [2]: 2 classes
  22. Dump after WPA based types groups
  23. Congruence classes: 14 (unique hash values: 14), with total: 16 items
  24. Class size histogram [num of members]: number of classe number of classess
  25. [1]: 12 classes
  26. [2]: 2 classes
  27. Worklist has been filled with: 5
  28. Address reference subdivision created: 0 new classes.
  29. Dump after callgraph-based congruence reduction
  30. Congruence classes: 16 (unique hash values: 14), with total: 16 items
  31. Class size histogram [num of members]: number of classe number of classess
  32. [1]: 16 classes
  33. Init called for 0 items (0.00%).
  34. Dump after full equality comparison of groups
  35. Congruence classes: 16 (unique hash values: 14), with total: 16 items
  36. Class size histogram [num of members]: number of classe number of classess
  37. [1]: 16 classes
  38. Worklist has been filled with: 7
  39. Address reference subdivision created: 0 new classes.
  40. Congruence classes: 16 (unique hash values: 14), with total: 16 items
  41. Class size histogram [num of members]: number of classe number of classess
  42. [1]: 16 classes
  43. Item count: 16
  44. Congruent classes before: 16, after: 16
  45. Average class size before: 1.00, after: 1.00
  46. Average non-singular class size: 0.00, count: 0
  47. Equal symbols: 0
  48. Fraction of visited symbols: 0.00%
  49. xEventGroupSetBits.part.0 (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet)
  50. {
  51. struct ListItem_t * pxListItem;
  52. struct ListItem_t * pxNext;
  53. const struct ListItem_t * pxListEnd;
  54. const struct List_t * pxList;
  55. EventBits_t uxBitsToClear;
  56. EventBits_t uxBitsWaitedFor;
  57. EventBits_t uxControlBits;
  58. struct EventGroup_t * pxEventBits;
  59. BaseType_t xMatchFound;
  60. uint32_t ulNewBASEPRI;
  61. uint32_t ulNewBASEPRI;
  62. long unsigned int _4;
  63. long unsigned int _6;
  64. long unsigned int _11;
  65. long unsigned int _12;
  66. long unsigned int _13;
  67. long unsigned int _14;
  68. long unsigned int _15;
  69. long unsigned int _16;
  70. long unsigned int _19;
  71. long unsigned int _20;
  72. long unsigned int _21;
  73. long unsigned int _23;
  74. long unsigned int _24;
  75. long unsigned int _25;
  76. <bb 12> [local count: 118111600]:
  77. <bb 2> [local count: 118111600]:
  78. # DEBUG BEGIN_STMT
  79. # DEBUG BEGIN_STMT
  80. # DEBUG D#1 => &MEM[(struct EventGroup_t *)xEventGroup_1(D)].xTasksWaitingForBits
  81. # DEBUG pxList => D#1
  82. # DEBUG BEGIN_STMT
  83. pxListEnd_2 = &MEM[(const struct List_t *)xEventGroup_1(D) + 4B].xListEnd;
  84. # DEBUG pxListEnd => pxListEnd_2
  85. # DEBUG BEGIN_STMT
  86. vTaskSuspendAll ();
  87. # DEBUG BEGIN_STMT
  88. # DEBUG BEGIN_STMT
  89. pxListItem_3 = MEM[(const struct List_t *)xEventGroup_1(D) + 4B].xListEnd.pxNext;
  90. # DEBUG pxListItem => pxListItem_3
  91. # DEBUG BEGIN_STMT
  92. _4 = MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  93. _6 = _4 | uxBitsToSet_5(D);
  94. MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits = _6;
  95. # DEBUG BEGIN_STMT
  96. goto <bb 10>; [100.00%]
  97. <bb 3> [local count: 955630223]:
  98. # DEBUG BEGIN_STMT
  99. pxNext_8 = pxListItem_7->pxNext;
  100. # DEBUG pxNext => pxNext_8
  101. # DEBUG BEGIN_STMT
  102. uxBitsWaitedFor_9 = pxListItem_7->xItemValue;
  103. # DEBUG uxBitsWaitedFor => uxBitsWaitedFor_9
  104. # DEBUG BEGIN_STMT
  105. # DEBUG xMatchFound => 0
  106. # DEBUG BEGIN_STMT
  107. # DEBUG uxControlBits => uxBitsWaitedFor_9 & 4278190080
  108. # DEBUG BEGIN_STMT
  109. uxBitsWaitedFor_10 = uxBitsWaitedFor_9 & 16777215;
  110. # DEBUG uxBitsWaitedFor => uxBitsWaitedFor_10
  111. # DEBUG BEGIN_STMT
  112. _11 = uxBitsWaitedFor_9 & 67108864;
  113. if (_11 == 0)
  114. goto <bb 4>; [50.00%]
  115. else
  116. goto <bb 5>; [50.00%]
  117. <bb 4> [local count: 477815111]:
  118. # DEBUG BEGIN_STMT
  119. _12 = MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  120. _13 = uxBitsWaitedFor_10 & _12;
  121. if (_13 != 0)
  122. goto <bb 6>; [50.00%]
  123. else
  124. goto <bb 9>; [50.00%]
  125. <bb 5> [local count: 477815111]:
  126. # DEBUG BEGIN_STMT
  127. _14 = MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  128. _15 = uxBitsWaitedFor_10 & _14;
  129. if (uxBitsWaitedFor_10 == _15)
  130. goto <bb 6>; [34.00%]
  131. else
  132. goto <bb 9>; [66.00%]
  133. <bb 6> [local count: 401364694]:
  134. # DEBUG xMatchFound => NULL
  135. # DEBUG BEGIN_STMT
  136. _16 = uxBitsWaitedFor_9 & 16777216;
  137. if (_16 != 0)
  138. goto <bb 7>; [50.00%]
  139. else
  140. goto <bb 8>; [50.00%]
  141. <bb 7> [local count: 200682347]:
  142. # DEBUG BEGIN_STMT
  143. uxBitsToClear_18 = uxBitsWaitedFor_10 | uxBitsToClear_17;
  144. # DEBUG uxBitsToClear => uxBitsToClear_18
  145. <bb 8> [local count: 401364694]:
  146. # uxBitsToClear_26 = PHI <uxBitsToClear_17(6), uxBitsToClear_18(7)>
  147. # DEBUG uxBitsToClear => uxBitsToClear_26
  148. # DEBUG BEGIN_STMT
  149. # DEBUG BEGIN_STMT
  150. _19 = MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  151. _20 = _19 | 33554432;
  152. vTaskRemoveFromUnorderedEventList (pxListItem_7, _20);
  153. <bb 9> [local count: 955630225]:
  154. # pxListItem_27 = PHI <pxNext_8(4), pxNext_8(5), pxNext_8(8)>
  155. # uxBitsToClear_28 = PHI <uxBitsToClear_17(4), uxBitsToClear_17(5), uxBitsToClear_26(8)>
  156. <bb 10> [local count: 1073741824]:
  157. # pxListItem_7 = PHI <pxListItem_3(2), pxListItem_27(9)>
  158. # uxBitsToClear_17 = PHI <0(2), uxBitsToClear_28(9)>
  159. # DEBUG xMatchFound => NULL
  160. # DEBUG uxBitsToClear => uxBitsToClear_17
  161. # DEBUG pxListItem => pxListItem_7
  162. # DEBUG BEGIN_STMT
  163. if (pxListEnd_2 != pxListItem_7)
  164. goto <bb 3>; [89.00%]
  165. else
  166. goto <bb 11>; [11.00%]
  167. <bb 11> [local count: 118111601]:
  168. # uxBitsToClear_22 = PHI <uxBitsToClear_17(10)>
  169. # DEBUG BEGIN_STMT
  170. _21 = MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  171. _23 = ~uxBitsToClear_22;
  172. _24 = _21 & _23;
  173. MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits = _24;
  174. # DEBUG BEGIN_STMT
  175. xTaskResumeAll ();
  176. # DEBUG BEGIN_STMT
  177. _25 = MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  178. return _25;
  179. }
  180. xEventGroupClearBits.part.0 (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  181. {
  182. struct EventGroup_t * pxEventBits;
  183. EventBits_t uxReturn;
  184. uint32_t ulNewBASEPRI;
  185. uint32_t ulNewBASEPRI;
  186. long unsigned int _4;
  187. long unsigned int _5;
  188. <bb 3> [local count: 1073741824]:
  189. <bb 2> [local count: 1073741824]:
  190. # DEBUG BEGIN_STMT
  191. # DEBUG BEGIN_STMT
  192. vPortEnterCritical ();
  193. # DEBUG BEGIN_STMT
  194. # DEBUG BEGIN_STMT
  195. uxReturn_2 = MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  196. # DEBUG uxReturn => uxReturn_2
  197. # DEBUG BEGIN_STMT
  198. _4 = ~uxBitsToClear_3(D);
  199. _5 = uxReturn_2 & _4;
  200. MEM[(struct EventGroup_t *)xEventGroup_1(D)].uxEventBits = _5;
  201. # DEBUG BEGIN_STMT
  202. vPortExitCritical ();
  203. # DEBUG BEGIN_STMT
  204. return uxReturn_2;
  205. }
  206. vEventGroupSetNumber (void * xEventGroup, UBaseType_t uxEventGroupNumber)
  207. {
  208. <bb 2> [local count: 1073741824]:
  209. # DEBUG BEGIN_STMT
  210. MEM[(struct EventGroup_t *)xEventGroup_2(D)].uxEventGroupNumber = uxEventGroupNumber_3(D);
  211. return;
  212. }
  213. uxEventGroupGetNumber (void * xEventGroup)
  214. {
  215. UBaseType_t xReturn;
  216. <bb 2> [local count: 1073741824]:
  217. # DEBUG BEGIN_STMT
  218. # DEBUG BEGIN_STMT
  219. # DEBUG pxEventBits => xEventGroup_2(D)
  220. # DEBUG BEGIN_STMT
  221. if (xEventGroup_2(D) == 0B)
  222. goto <bb 4>; [30.00%]
  223. else
  224. goto <bb 3>; [70.00%]
  225. <bb 3> [local count: 751619278]:
  226. # DEBUG BEGIN_STMT
  227. xReturn_4 = MEM[(const struct EventGroup_t *)xEventGroup_2(D)].uxEventGroupNumber;
  228. # DEBUG xReturn => xReturn_4
  229. <bb 4> [local count: 1073741824]:
  230. # xReturn_1 = PHI <0(2), xReturn_4(3)>
  231. # DEBUG xReturn => xReturn_1
  232. # DEBUG BEGIN_STMT
  233. return xReturn_1;
  234. }
  235. xEventGroupSetBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, BaseType_t * pxHigherPriorityTaskWoken)
  236. {
  237. BaseType_t xReturn;
  238. <bb 2> [local count: 1073741824]:
  239. # DEBUG BEGIN_STMT
  240. # DEBUG BEGIN_STMT
  241. # DEBUG BEGIN_STMT
  242. xReturn_6 = xTimerPendFunctionCallFromISR (vEventGroupSetBitsCallback, xEventGroup_2(D), uxBitsToSet_3(D), pxHigherPriorityTaskWoken_4(D));
  243. # DEBUG xReturn => xReturn_6
  244. # DEBUG BEGIN_STMT
  245. return xReturn_6;
  246. }
  247. prvTestWaitCondition (const EventBits_t uxCurrentEventBits, const EventBits_t uxBitsToWaitFor, const BaseType_t xWaitForAllBits)
  248. {
  249. BaseType_t xWaitConditionMet;
  250. long unsigned int _1;
  251. long unsigned int _2;
  252. <bb 2> [local count: 1073741824]:
  253. # DEBUG BEGIN_STMT
  254. # DEBUG xWaitConditionMet => 0
  255. # DEBUG BEGIN_STMT
  256. if (xWaitForAllBits_4(D) == 0)
  257. goto <bb 3>; [50.00%]
  258. else
  259. goto <bb 5>; [50.00%]
  260. <bb 3> [local count: 536870913]:
  261. # DEBUG BEGIN_STMT
  262. _1 = uxCurrentEventBits_5(D) & uxBitsToWaitFor_6(D);
  263. if (_1 != 0)
  264. goto <bb 4>; [50.00%]
  265. else
  266. goto <bb 7>; [50.00%]
  267. <bb 4> [local count: 268435456]:
  268. # DEBUG BEGIN_STMT
  269. # DEBUG xWaitConditionMet => 1
  270. goto <bb 7>; [100.00%]
  271. <bb 5> [local count: 536870913]:
  272. # DEBUG BEGIN_STMT
  273. _2 = uxCurrentEventBits_5(D) & uxBitsToWaitFor_6(D);
  274. if (_2 == uxBitsToWaitFor_6(D))
  275. goto <bb 6>; [34.00%]
  276. else
  277. goto <bb 7>; [66.00%]
  278. <bb 6> [local count: 182536110]:
  279. # DEBUG BEGIN_STMT
  280. # DEBUG xWaitConditionMet => 1
  281. <bb 7> [local count: 1073741824]:
  282. # xWaitConditionMet_3 = PHI <1(4), 0(5), 1(6), 0(3)>
  283. # DEBUG xWaitConditionMet => xWaitConditionMet_3
  284. # DEBUG BEGIN_STMT
  285. # DEBUG BEGIN_STMT
  286. return xWaitConditionMet_3;
  287. }
  288. vEventGroupClearBitsCallback (void * pvEventGroup, const uint32_t ulBitsToClear)
  289. {
  290. <bb 2> [local count: 1073741824]:
  291. # DEBUG BEGIN_STMT
  292. xEventGroupClearBits (pvEventGroup_2(D), ulBitsToClear_3(D));
  293. return;
  294. }
  295. vEventGroupSetBitsCallback (void * pvEventGroup, const uint32_t ulBitsToSet)
  296. {
  297. <bb 2> [local count: 1073741824]:
  298. # DEBUG BEGIN_STMT
  299. xEventGroupSetBits (pvEventGroup_2(D), ulBitsToSet_3(D));
  300. return;
  301. }
  302. vEventGroupDelete (struct EventGroupDef_t * xEventGroup)
  303. {
  304. uint32_t ulNewBASEPRI;
  305. uint32_t ulNewBASEPRI;
  306. struct xLIST_ITEM * _1;
  307. const struct MiniListItem_t * _2;
  308. long unsigned int _3;
  309. <bb 2> [local count: 230763]:
  310. # DEBUG BEGIN_STMT
  311. if (xEventGroup_5(D) == 0B)
  312. goto <bb 3>; [46.53%]
  313. else
  314. goto <bb 5>; [53.47%]
  315. <bb 3> [local count: 107374]:
  316. # DEBUG BEGIN_STMT
  317. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  318. # DEBUG BEGIN_STMT
  319. # DEBUG BEGIN_STMT
  320. __asm__ __volatile__(" mov %0, %1
  321. msr basepri, %0
  322. isb
  323. dsb
  324. " : "=r" ulNewBASEPRI_11 : "i" 16 : "memory");
  325. # DEBUG ulNewBASEPRI => ulNewBASEPRI_11
  326. <bb 4> [local count: 1073741824]:
  327. # DEBUG ulNewBASEPRI => NULL
  328. # DEBUG BEGIN_STMT
  329. # DEBUG BEGIN_STMT
  330. # DEBUG BEGIN_STMT
  331. <bb 12> [local count: 1073741824]:
  332. goto <bb 4>; [100.00%]
  333. <bb 5> [local count: 123389]:
  334. # DEBUG BEGIN_STMT
  335. # DEBUG BEGIN_STMT
  336. # DEBUG pxEventBits => xEventGroup_5(D)
  337. # DEBUG BEGIN_STMT
  338. # DEBUG D#2 => &MEM[(struct EventGroup_t *)xEventGroup_5(D)].xTasksWaitingForBits
  339. # DEBUG pxTasksWaitingForBits => D#2
  340. # DEBUG BEGIN_STMT
  341. vTaskSuspendAll ();
  342. # DEBUG BEGIN_STMT
  343. # DEBUG BEGIN_STMT
  344. goto <bb 10>; [100.00%]
  345. <bb 6> [local count: 1089998]:
  346. # DEBUG BEGIN_STMT
  347. _1 = MEM[(const struct List_t *)xEventGroup_5(D) + 4B].xListEnd.pxNext;
  348. _2 = &MEM[(const struct List_t *)xEventGroup_5(D) + 4B].xListEnd;
  349. if (_1 == _2)
  350. goto <bb 7>; [5.50%]
  351. else
  352. goto <bb 9>; [94.50%]
  353. <bb 7> [local count: 59950]:
  354. # DEBUG BEGIN_STMT
  355. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  356. # DEBUG BEGIN_STMT
  357. # DEBUG BEGIN_STMT
  358. __asm__ __volatile__(" mov %0, %1
  359. msr basepri, %0
  360. isb
  361. dsb
  362. " : "=r" ulNewBASEPRI_12 : "i" 16 : "memory");
  363. # DEBUG ulNewBASEPRI => ulNewBASEPRI_12
  364. <bb 8> [local count: 599500022]:
  365. # DEBUG ulNewBASEPRI => NULL
  366. # DEBUG BEGIN_STMT
  367. # DEBUG BEGIN_STMT
  368. # DEBUG BEGIN_STMT
  369. <bb 13> [local count: 599500022]:
  370. goto <bb 8>; [100.00%]
  371. <bb 9> [local count: 1030048]:
  372. # DEBUG BEGIN_STMT
  373. # DEBUG BEGIN_STMT
  374. vTaskRemoveFromUnorderedEventList (_1, 33554432);
  375. <bb 10> [local count: 1153437]:
  376. # DEBUG BEGIN_STMT
  377. _3 ={v} MEM[(const struct List_t *)xEventGroup_5(D) + 4B].uxNumberOfItems;
  378. if (_3 != 0)
  379. goto <bb 6>; [94.50%]
  380. else
  381. goto <bb 11>; [5.50%]
  382. <bb 11> [local count: 63439]:
  383. # DEBUG BEGIN_STMT
  384. vPortFree (xEventGroup_5(D));
  385. # DEBUG BEGIN_STMT
  386. xTaskResumeAll ();
  387. return;
  388. }
  389. xEventGroupSetBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet)
  390. {
  391. EventBits_t D.6634;
  392. uint32_t ulNewBASEPRI;
  393. uint32_t ulNewBASEPRI;
  394. long unsigned int _1;
  395. <bb 2> [local count: 228942]:
  396. # DEBUG BEGIN_STMT
  397. # DEBUG BEGIN_STMT
  398. # DEBUG BEGIN_STMT
  399. # DEBUG BEGIN_STMT
  400. # DEBUG uxBitsToClear => 0
  401. # DEBUG BEGIN_STMT
  402. # DEBUG pxEventBits => xEventGroup_3(D)
  403. # DEBUG BEGIN_STMT
  404. # DEBUG xMatchFound => 0
  405. # DEBUG BEGIN_STMT
  406. if (xEventGroup_3(D) == 0B)
  407. goto <bb 3>; [30.00%]
  408. else
  409. goto <bb 5>; [70.00%]
  410. <bb 3> [local count: 68683]:
  411. # DEBUG BEGIN_STMT
  412. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  413. # DEBUG BEGIN_STMT
  414. # DEBUG BEGIN_STMT
  415. __asm__ __volatile__(" mov %0, %1
  416. msr basepri, %0
  417. isb
  418. dsb
  419. " : "=r" ulNewBASEPRI_7 : "i" 16 : "memory");
  420. # DEBUG ulNewBASEPRI => ulNewBASEPRI_7
  421. <bb 4> [local count: 686828460]:
  422. # DEBUG ulNewBASEPRI => NULL
  423. # DEBUG BEGIN_STMT
  424. # DEBUG BEGIN_STMT
  425. # DEBUG BEGIN_STMT
  426. <bb 9> [local count: 686828460]:
  427. goto <bb 4>; [100.00%]
  428. <bb 5> [local count: 160260]:
  429. # DEBUG BEGIN_STMT
  430. # DEBUG BEGIN_STMT
  431. _1 = uxBitsToSet_4(D) & 4278190080;
  432. if (_1 != 0)
  433. goto <bb 6>; [67.00%]
  434. else
  435. goto <bb 8>; [33.00%]
  436. <bb 6> [local count: 107374]:
  437. # DEBUG BEGIN_STMT
  438. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  439. # DEBUG BEGIN_STMT
  440. # DEBUG BEGIN_STMT
  441. __asm__ __volatile__(" mov %0, %1
  442. msr basepri, %0
  443. isb
  444. dsb
  445. " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory");
  446. # DEBUG ulNewBASEPRI => ulNewBASEPRI_8
  447. <bb 7> [local count: 1073741824]:
  448. # DEBUG ulNewBASEPRI => NULL
  449. # DEBUG BEGIN_STMT
  450. # DEBUG BEGIN_STMT
  451. # DEBUG BEGIN_STMT
  452. <bb 10> [local count: 1073741824]:
  453. goto <bb 7>; [100.00%]
  454. <bb 8> [local count: 52886]:
  455. _6 = xEventGroupSetBits.part.0 (xEventGroup_3(D), uxBitsToSet_4(D));
  456. return _6;
  457. }
  458. xEventGroupGetBitsFromISR (struct EventGroupDef_t * xEventGroup)
  459. {
  460. uint32_t ulOriginalBASEPRI;
  461. uint32_t ulNewBASEPRI;
  462. EventBits_t uxReturn;
  463. <bb 2> [local count: 1073741824]:
  464. # DEBUG BEGIN_STMT
  465. # DEBUG BEGIN_STMT
  466. # DEBUG pxEventBits => xEventGroup_1(D)
  467. # DEBUG BEGIN_STMT
  468. # DEBUG BEGIN_STMT
  469. # DEBUG INLINE_ENTRY ulPortRaiseBASEPRI
  470. # DEBUG BEGIN_STMT
  471. # DEBUG BEGIN_STMT
  472. __asm__ __volatile__(" mrs %0, basepri
  473. mov %1, %2
  474. msr basepri, %1
  475. isb
  476. dsb
  477. " : "=r" ulOriginalBASEPRI_4, "=r" ulNewBASEPRI_5 : "i" 16 : "memory");
  478. # DEBUG ulNewBASEPRI => ulNewBASEPRI_5
  479. # DEBUG ulOriginalBASEPRI => ulOriginalBASEPRI_4
  480. # DEBUG BEGIN_STMT
  481. # DEBUG ulNewBASEPRI => NULL
  482. # DEBUG ulOriginalBASEPRI => NULL
  483. # DEBUG uxSavedInterruptStatus => ulOriginalBASEPRI_4
  484. # DEBUG BEGIN_STMT
  485. uxReturn_3 = MEM[(const struct EventGroup_t *)xEventGroup_1(D)].uxEventBits;
  486. # DEBUG uxReturn => uxReturn_3
  487. # DEBUG BEGIN_STMT
  488. # DEBUG ulNewMaskValue => ulOriginalBASEPRI_4
  489. # DEBUG INLINE_ENTRY vPortSetBASEPRI
  490. # DEBUG BEGIN_STMT
  491. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulOriginalBASEPRI_4 : "memory");
  492. # DEBUG ulNewMaskValue => NULL
  493. # DEBUG BEGIN_STMT
  494. return uxReturn_3;
  495. }
  496. xEventGroupClearBitsFromISR (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  497. {
  498. BaseType_t xReturn;
  499. <bb 2> [local count: 1073741824]:
  500. # DEBUG BEGIN_STMT
  501. # DEBUG BEGIN_STMT
  502. # DEBUG BEGIN_STMT
  503. xReturn_5 = xTimerPendFunctionCallFromISR (vEventGroupClearBitsCallback, xEventGroup_2(D), uxBitsToClear_3(D), 0B);
  504. # DEBUG xReturn => xReturn_5
  505. # DEBUG BEGIN_STMT
  506. return xReturn_5;
  507. }
  508. xEventGroupClearBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToClear)
  509. {
  510. EventBits_t D.6607;
  511. uint32_t ulNewBASEPRI;
  512. uint32_t ulNewBASEPRI;
  513. long unsigned int _1;
  514. <bb 2> [local count: 228942]:
  515. # DEBUG BEGIN_STMT
  516. # DEBUG pxEventBits => xEventGroup_3(D)
  517. # DEBUG BEGIN_STMT
  518. # DEBUG BEGIN_STMT
  519. if (xEventGroup_3(D) == 0B)
  520. goto <bb 3>; [30.00%]
  521. else
  522. goto <bb 5>; [70.00%]
  523. <bb 3> [local count: 68683]:
  524. # DEBUG BEGIN_STMT
  525. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  526. # DEBUG BEGIN_STMT
  527. # DEBUG BEGIN_STMT
  528. __asm__ __volatile__(" mov %0, %1
  529. msr basepri, %0
  530. isb
  531. dsb
  532. " : "=r" ulNewBASEPRI_7 : "i" 16 : "memory");
  533. # DEBUG ulNewBASEPRI => ulNewBASEPRI_7
  534. <bb 4> [local count: 686828460]:
  535. # DEBUG ulNewBASEPRI => NULL
  536. # DEBUG BEGIN_STMT
  537. # DEBUG BEGIN_STMT
  538. # DEBUG BEGIN_STMT
  539. <bb 9> [local count: 686828460]:
  540. goto <bb 4>; [100.00%]
  541. <bb 5> [local count: 160260]:
  542. # DEBUG BEGIN_STMT
  543. # DEBUG BEGIN_STMT
  544. _1 = uxBitsToClear_5(D) & 4278190080;
  545. if (_1 != 0)
  546. goto <bb 6>; [67.00%]
  547. else
  548. goto <bb 8>; [33.00%]
  549. <bb 6> [local count: 107374]:
  550. # DEBUG BEGIN_STMT
  551. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  552. # DEBUG BEGIN_STMT
  553. # DEBUG BEGIN_STMT
  554. __asm__ __volatile__(" mov %0, %1
  555. msr basepri, %0
  556. isb
  557. dsb
  558. " : "=r" ulNewBASEPRI_8 : "i" 16 : "memory");
  559. # DEBUG ulNewBASEPRI => ulNewBASEPRI_8
  560. <bb 7> [local count: 1073741824]:
  561. # DEBUG ulNewBASEPRI => NULL
  562. # DEBUG BEGIN_STMT
  563. # DEBUG BEGIN_STMT
  564. # DEBUG BEGIN_STMT
  565. <bb 10> [local count: 1073741824]:
  566. goto <bb 7>; [100.00%]
  567. <bb 8> [local count: 52886]:
  568. _2 = xEventGroupClearBits.part.0 (xEventGroup_3(D), uxBitsToClear_5(D));
  569. return _2;
  570. }
  571. xEventGroupWaitBits (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToWaitFor, const BaseType_t xClearOnExit, const BaseType_t xWaitForAllBits, TickType_t xTicksToWait)
  572. {
  573. uint32_t ulNewBASEPRI;
  574. uint32_t ulNewBASEPRI;
  575. uint32_t ulNewBASEPRI;
  576. uint32_t ulNewBASEPRI;
  577. const EventBits_t uxCurrentEventBits;
  578. BaseType_t xAlreadyYielded;
  579. BaseType_t xWaitConditionMet;
  580. EventBits_t uxControlBits;
  581. EventBits_t uxReturn;
  582. long unsigned int _1;
  583. long int _2;
  584. long unsigned int _3;
  585. long unsigned int _4;
  586. struct List_t * _5;
  587. long unsigned int _6;
  588. long unsigned int _7;
  589. long int _8;
  590. long unsigned int _9;
  591. long unsigned int _10;
  592. <bb 2> [local count: 306783]:
  593. # DEBUG BEGIN_STMT
  594. # DEBUG pxEventBits => xEventGroup_22(D)
  595. # DEBUG BEGIN_STMT
  596. # DEBUG uxControlBits => 0
  597. # DEBUG BEGIN_STMT
  598. # DEBUG BEGIN_STMT
  599. # DEBUG xTimeoutOccurred => 0
  600. # DEBUG BEGIN_STMT
  601. if (xEventGroup_22(D) == 0B)
  602. goto <bb 3>; [30.00%]
  603. else
  604. goto <bb 5>; [70.00%]
  605. <bb 3> [local count: 92035]:
  606. # DEBUG BEGIN_STMT
  607. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  608. # DEBUG BEGIN_STMT
  609. # DEBUG BEGIN_STMT
  610. __asm__ __volatile__(" mov %0, %1
  611. msr basepri, %0
  612. isb
  613. dsb
  614. " : "=r" ulNewBASEPRI_45 : "i" 16 : "memory");
  615. # DEBUG ulNewBASEPRI => ulNewBASEPRI_45
  616. <bb 4> [local count: 920350133]:
  617. # DEBUG ulNewBASEPRI => NULL
  618. # DEBUG BEGIN_STMT
  619. # DEBUG BEGIN_STMT
  620. # DEBUG BEGIN_STMT
  621. <bb 34> [local count: 920350133]:
  622. goto <bb 4>; [100.00%]
  623. <bb 5> [local count: 214748]:
  624. # DEBUG BEGIN_STMT
  625. # DEBUG BEGIN_STMT
  626. _1 = uxBitsToWaitFor_23(D) & 4278190080;
  627. if (_1 != 0)
  628. goto <bb 6>; [50.00%]
  629. else
  630. goto <bb 8>; [50.00%]
  631. <bb 6> [local count: 107374]:
  632. # DEBUG BEGIN_STMT
  633. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  634. # DEBUG BEGIN_STMT
  635. # DEBUG BEGIN_STMT
  636. __asm__ __volatile__(" mov %0, %1
  637. msr basepri, %0
  638. isb
  639. dsb
  640. " : "=r" ulNewBASEPRI_30 : "i" 16 : "memory");
  641. # DEBUG ulNewBASEPRI => ulNewBASEPRI_30
  642. <bb 7> [local count: 1073741823]:
  643. # DEBUG ulNewBASEPRI => NULL
  644. # DEBUG BEGIN_STMT
  645. # DEBUG BEGIN_STMT
  646. # DEBUG BEGIN_STMT
  647. <bb 35> [local count: 1073741824]:
  648. goto <bb 7>; [100.00%]
  649. <bb 8> [local count: 107374]:
  650. # DEBUG BEGIN_STMT
  651. # DEBUG BEGIN_STMT
  652. if (uxBitsToWaitFor_23(D) == 0)
  653. goto <bb 9>; [67.00%]
  654. else
  655. goto <bb 11>; [33.00%]
  656. <bb 9> [local count: 71941]:
  657. # DEBUG BEGIN_STMT
  658. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  659. # DEBUG BEGIN_STMT
  660. # DEBUG BEGIN_STMT
  661. __asm__ __volatile__(" mov %0, %1
  662. msr basepri, %0
  663. isb
  664. dsb
  665. " : "=r" ulNewBASEPRI_49 : "i" 16 : "memory");
  666. # DEBUG ulNewBASEPRI => ulNewBASEPRI_49
  667. <bb 10> [local count: 719407021]:
  668. # DEBUG ulNewBASEPRI => NULL
  669. # DEBUG BEGIN_STMT
  670. # DEBUG BEGIN_STMT
  671. # DEBUG BEGIN_STMT
  672. <bb 36> [local count: 719407021]:
  673. goto <bb 10>; [100.00%]
  674. <bb 11> [local count: 35433]:
  675. # DEBUG BEGIN_STMT
  676. # DEBUG BEGIN_STMT
  677. _2 = xTaskGetSchedulerState ();
  678. if (_2 != 0)
  679. goto <bb 15>; [33.00%]
  680. else
  681. goto <bb 12>; [67.00%]
  682. <bb 12> [local count: 23740]:
  683. if (xTicksToWait_26(D) == 0)
  684. goto <bb 15>; [50.00%]
  685. else
  686. goto <bb 13>; [50.00%]
  687. <bb 13> [local count: 11870]:
  688. # DEBUG BEGIN_STMT
  689. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  690. # DEBUG BEGIN_STMT
  691. # DEBUG BEGIN_STMT
  692. __asm__ __volatile__(" mov %0, %1
  693. msr basepri, %0
  694. isb
  695. dsb
  696. " : "=r" ulNewBASEPRI_50 : "i" 16 : "memory");
  697. # DEBUG ulNewBASEPRI => ulNewBASEPRI_50
  698. <bb 14> [local count: 118702158]:
  699. # DEBUG ulNewBASEPRI => NULL
  700. # DEBUG BEGIN_STMT
  701. # DEBUG BEGIN_STMT
  702. # DEBUG BEGIN_STMT
  703. <bb 37> [local count: 118702158]:
  704. goto <bb 14>; [100.00%]
  705. <bb 15> [local count: 23563]:
  706. # DEBUG BEGIN_STMT
  707. # DEBUG BEGIN_STMT
  708. vTaskSuspendAll ();
  709. # DEBUG BEGIN_STMT
  710. uxCurrentEventBits_28 = MEM[(struct EventGroup_t *)xEventGroup_22(D)].uxEventBits;
  711. # DEBUG uxCurrentEventBits => uxCurrentEventBits_28
  712. # DEBUG BEGIN_STMT
  713. xWaitConditionMet_31 = prvTestWaitCondition (uxCurrentEventBits_28, uxBitsToWaitFor_23(D), xWaitForAllBits_29(D));
  714. # DEBUG xWaitConditionMet => xWaitConditionMet_31
  715. # DEBUG BEGIN_STMT
  716. if (xWaitConditionMet_31 != 0)
  717. goto <bb 16>; [50.00%]
  718. else
  719. goto <bb 18>; [50.00%]
  720. <bb 16> [local count: 11782]:
  721. # DEBUG BEGIN_STMT
  722. # DEBUG uxReturn => uxCurrentEventBits_28
  723. # DEBUG BEGIN_STMT
  724. # DEBUG xTicksToWait => 0
  725. # DEBUG BEGIN_STMT
  726. if (xClearOnExit_32(D) != 0)
  727. goto <bb 17>; [50.00%]
  728. else
  729. goto <bb 24>; [50.00%]
  730. <bb 17> [local count: 5891]:
  731. # DEBUG BEGIN_STMT
  732. _3 = ~uxBitsToWaitFor_23(D);
  733. _4 = _3 & uxCurrentEventBits_28;
  734. MEM[(struct EventGroup_t *)xEventGroup_22(D)].uxEventBits = _4;
  735. goto <bb 24>; [100.00%]
  736. <bb 18> [local count: 11782]:
  737. # DEBUG BEGIN_STMT
  738. if (xTicksToWait_26(D) == 0)
  739. goto <bb 24>; [50.00%]
  740. else
  741. goto <bb 19>; [50.00%]
  742. <bb 19> [local count: 5891]:
  743. # DEBUG BEGIN_STMT
  744. if (xClearOnExit_32(D) != 0)
  745. goto <bb 20>; [50.00%]
  746. else
  747. goto <bb 21>; [50.00%]
  748. <bb 20> [local count: 2945]:
  749. # DEBUG BEGIN_STMT
  750. # DEBUG uxControlBits => 16777216
  751. <bb 21> [local count: 5891]:
  752. # uxControlBits_15 = PHI <0(19), 16777216(20)>
  753. # DEBUG uxControlBits => uxControlBits_15
  754. # DEBUG BEGIN_STMT
  755. # DEBUG BEGIN_STMT
  756. if (xWaitForAllBits_29(D) != 0)
  757. goto <bb 22>; [50.00%]
  758. else
  759. goto <bb 23>; [50.00%]
  760. <bb 22> [local count: 2945]:
  761. # DEBUG BEGIN_STMT
  762. uxControlBits_33 = uxControlBits_15 | 67108864;
  763. # DEBUG uxControlBits => uxControlBits_33
  764. <bb 23> [local count: 5891]:
  765. # uxControlBits_16 = PHI <uxControlBits_15(21), uxControlBits_33(22)>
  766. # DEBUG uxControlBits => uxControlBits_16
  767. # DEBUG BEGIN_STMT
  768. # DEBUG BEGIN_STMT
  769. _5 = &MEM[(struct EventGroup_t *)xEventGroup_22(D)].xTasksWaitingForBits;
  770. _6 = uxControlBits_16 | uxBitsToWaitFor_23(D);
  771. vTaskPlaceOnUnorderedEventList (_5, _6, xTicksToWait_26(D));
  772. # DEBUG BEGIN_STMT
  773. # DEBUG uxReturn => 0
  774. <bb 24> [local count: 23563]:
  775. # xTicksToWait_11 = PHI <0(17), xTicksToWait_26(D)(18), xTicksToWait_26(D)(23), 0(16)>
  776. # uxReturn_12 = PHI <uxCurrentEventBits_28(17), uxCurrentEventBits_28(18), 0(23), uxCurrentEventBits_28(16)>
  777. # DEBUG xTimeoutOccurred => NULL
  778. # DEBUG uxReturn => uxReturn_12
  779. # DEBUG xTicksToWait => xTicksToWait_11
  780. # DEBUG BEGIN_STMT
  781. # DEBUG BEGIN_STMT
  782. xAlreadyYielded_37 = xTaskResumeAll ();
  783. # DEBUG xAlreadyYielded => xAlreadyYielded_37
  784. # DEBUG BEGIN_STMT
  785. if (xTicksToWait_11 != 0)
  786. goto <bb 25>; [50.00%]
  787. else
  788. goto <bb 33>; [50.00%]
  789. <bb 25> [local count: 11782]:
  790. # DEBUG BEGIN_STMT
  791. if (xAlreadyYielded_37 == 0)
  792. goto <bb 26>; [50.00%]
  793. else
  794. goto <bb 27>; [50.00%]
  795. <bb 26> [local count: 5891]:
  796. # DEBUG BEGIN_STMT
  797. MEM[(volatile uint32_t *)3758157060B] ={v} 268435456;
  798. # DEBUG BEGIN_STMT
  799. __asm__ __volatile__("dsb" : : : "memory");
  800. # DEBUG BEGIN_STMT
  801. __asm__ __volatile__("isb");
  802. # DEBUG BEGIN_STMT
  803. <bb 27> [local count: 11782]:
  804. # DEBUG BEGIN_STMT
  805. # DEBUG BEGIN_STMT
  806. uxReturn_42 = uxTaskResetEventItemValue ();
  807. # DEBUG uxReturn => uxReturn_42
  808. # DEBUG BEGIN_STMT
  809. _7 = uxReturn_42 & 33554432;
  810. if (_7 == 0)
  811. goto <bb 28>; [33.00%]
  812. else
  813. goto <bb 32>; [67.00%]
  814. <bb 28> [local count: 3888]:
  815. # DEBUG BEGIN_STMT
  816. vPortEnterCritical ();
  817. # DEBUG BEGIN_STMT
  818. uxReturn_44 = MEM[(struct EventGroup_t *)xEventGroup_22(D)].uxEventBits;
  819. # DEBUG uxReturn => uxReturn_44
  820. # DEBUG BEGIN_STMT
  821. _8 = prvTestWaitCondition (uxReturn_44, uxBitsToWaitFor_23(D), xWaitForAllBits_29(D));
  822. if (_8 != 0)
  823. goto <bb 29>; [50.00%]
  824. else
  825. goto <bb 31>; [50.00%]
  826. <bb 29> [local count: 1944]:
  827. # DEBUG BEGIN_STMT
  828. if (xClearOnExit_32(D) != 0)
  829. goto <bb 30>; [50.00%]
  830. else
  831. goto <bb 31>; [50.00%]
  832. <bb 30> [local count: 972]:
  833. # DEBUG BEGIN_STMT
  834. _9 = ~uxBitsToWaitFor_23(D);
  835. _10 = _9 & uxReturn_44;
  836. MEM[(struct EventGroup_t *)xEventGroup_22(D)].uxEventBits = _10;
  837. <bb 31> [local count: 3888]:
  838. # DEBUG BEGIN_STMT
  839. # DEBUG BEGIN_STMT
  840. # DEBUG xTimeoutOccurred => 1
  841. # DEBUG BEGIN_STMT
  842. vPortExitCritical ();
  843. <bb 32> [local count: 11782]:
  844. # uxReturn_13 = PHI <uxReturn_42(27), uxReturn_44(31)>
  845. # DEBUG uxReturn => uxReturn_13
  846. # DEBUG BEGIN_STMT
  847. # DEBUG BEGIN_STMT
  848. uxReturn_48 = uxReturn_13 & 16777215;
  849. # DEBUG uxReturn => uxReturn_48
  850. <bb 33> [local count: 23563]:
  851. # uxReturn_14 = PHI <uxReturn_12(24), uxReturn_48(32)>
  852. # DEBUG uxReturn => uxReturn_14
  853. # DEBUG BEGIN_STMT
  854. # DEBUG BEGIN_STMT
  855. # DEBUG BEGIN_STMT
  856. return uxReturn_14;
  857. }
  858. xEventGroupSync (struct EventGroupDef_t * xEventGroup, const EventBits_t uxBitsToSet, const EventBits_t uxBitsToWaitFor, TickType_t xTicksToWait)
  859. {
  860. uint32_t ulNewBASEPRI;
  861. uint32_t ulNewBASEPRI;
  862. uint32_t ulNewBASEPRI;
  863. BaseType_t xAlreadyYielded;
  864. EventBits_t uxReturn;
  865. EventBits_t uxOriginalBitValue;
  866. long unsigned int _1;
  867. long int _2;
  868. long unsigned int _3;
  869. long unsigned int _4;
  870. long unsigned int _5;
  871. long unsigned int _6;
  872. long unsigned int _7;
  873. struct List_t * _8;
  874. long unsigned int _9;
  875. long unsigned int _10;
  876. long unsigned int _11;
  877. long unsigned int _12;
  878. long unsigned int _13;
  879. <bb 2> [local count: 214748]:
  880. # DEBUG BEGIN_STMT
  881. # DEBUG BEGIN_STMT
  882. # DEBUG pxEventBits => xEventGroup_23(D)
  883. # DEBUG BEGIN_STMT
  884. # DEBUG BEGIN_STMT
  885. # DEBUG xTimeoutOccurred => 0
  886. # DEBUG BEGIN_STMT
  887. _1 = uxBitsToWaitFor_24(D) & 4278190080;
  888. if (_1 != 0)
  889. goto <bb 3>; [50.00%]
  890. else
  891. goto <bb 5>; [50.00%]
  892. <bb 3> [local count: 107374]:
  893. # DEBUG BEGIN_STMT
  894. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  895. # DEBUG BEGIN_STMT
  896. # DEBUG BEGIN_STMT
  897. __asm__ __volatile__(" mov %0, %1
  898. msr basepri, %0
  899. isb
  900. dsb
  901. " : "=r" ulNewBASEPRI_47 : "i" 16 : "memory");
  902. # DEBUG ulNewBASEPRI => ulNewBASEPRI_47
  903. <bb 4> [local count: 1073741824]:
  904. # DEBUG ulNewBASEPRI => NULL
  905. # DEBUG BEGIN_STMT
  906. # DEBUG BEGIN_STMT
  907. # DEBUG BEGIN_STMT
  908. <bb 26> [local count: 1073741824]:
  909. goto <bb 4>; [100.00%]
  910. <bb 5> [local count: 107374]:
  911. # DEBUG BEGIN_STMT
  912. # DEBUG BEGIN_STMT
  913. if (uxBitsToWaitFor_24(D) == 0)
  914. goto <bb 6>; [67.00%]
  915. else
  916. goto <bb 8>; [33.00%]
  917. <bb 6> [local count: 71941]:
  918. # DEBUG BEGIN_STMT
  919. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  920. # DEBUG BEGIN_STMT
  921. # DEBUG BEGIN_STMT
  922. __asm__ __volatile__(" mov %0, %1
  923. msr basepri, %0
  924. isb
  925. dsb
  926. " : "=r" ulNewBASEPRI_48 : "i" 16 : "memory");
  927. # DEBUG ulNewBASEPRI => ulNewBASEPRI_48
  928. <bb 7> [local count: 719407023]:
  929. # DEBUG ulNewBASEPRI => NULL
  930. # DEBUG BEGIN_STMT
  931. # DEBUG BEGIN_STMT
  932. # DEBUG BEGIN_STMT
  933. <bb 27> [local count: 719407023]:
  934. goto <bb 7>; [100.00%]
  935. <bb 8> [local count: 35433]:
  936. # DEBUG BEGIN_STMT
  937. # DEBUG BEGIN_STMT
  938. _2 = xTaskGetSchedulerState ();
  939. if (_2 != 0)
  940. goto <bb 12>; [33.00%]
  941. else
  942. goto <bb 9>; [67.00%]
  943. <bb 9> [local count: 23740]:
  944. if (xTicksToWait_27(D) == 0)
  945. goto <bb 12>; [50.00%]
  946. else
  947. goto <bb 10>; [50.00%]
  948. <bb 10> [local count: 11870]:
  949. # DEBUG BEGIN_STMT
  950. # DEBUG INLINE_ENTRY vPortRaiseBASEPRI
  951. # DEBUG BEGIN_STMT
  952. # DEBUG BEGIN_STMT
  953. __asm__ __volatile__(" mov %0, %1
  954. msr basepri, %0
  955. isb
  956. dsb
  957. " : "=r" ulNewBASEPRI_49 : "i" 16 : "memory");
  958. # DEBUG ulNewBASEPRI => ulNewBASEPRI_49
  959. <bb 11> [local count: 118702159]:
  960. # DEBUG ulNewBASEPRI => NULL
  961. # DEBUG BEGIN_STMT
  962. # DEBUG BEGIN_STMT
  963. # DEBUG BEGIN_STMT
  964. <bb 28> [local count: 118702159]:
  965. goto <bb 11>; [100.00%]
  966. <bb 12> [local count: 23563]:
  967. # DEBUG BEGIN_STMT
  968. # DEBUG BEGIN_STMT
  969. vTaskSuspendAll ();
  970. # DEBUG BEGIN_STMT
  971. uxOriginalBitValue_29 = MEM[(struct EventGroup_t *)xEventGroup_23(D)].uxEventBits;
  972. # DEBUG uxOriginalBitValue => uxOriginalBitValue_29
  973. # DEBUG BEGIN_STMT
  974. xEventGroupSetBits (xEventGroup_23(D), uxBitsToSet_30(D));
  975. # DEBUG BEGIN_STMT
  976. _3 = uxOriginalBitValue_29 | uxBitsToSet_30(D);
  977. _4 = _3 & uxBitsToWaitFor_24(D);
  978. if (_4 == uxBitsToWaitFor_24(D))
  979. goto <bb 13>; [34.00%]
  980. else
  981. goto <bb 14>; [66.00%]
  982. <bb 13> [local count: 8011]:
  983. # DEBUG BEGIN_STMT
  984. # DEBUG uxReturn => _3
  985. # DEBUG BEGIN_STMT
  986. _5 = MEM[(struct EventGroup_t *)xEventGroup_23(D)].uxEventBits;
  987. _6 = ~uxBitsToWaitFor_24(D);
  988. _7 = _5 & _6;
  989. MEM[(struct EventGroup_t *)xEventGroup_23(D)].uxEventBits = _7;
  990. # DEBUG BEGIN_STMT
  991. # DEBUG xTicksToWait => 0
  992. goto <bb 17>; [100.00%]
  993. <bb 14> [local count: 15552]:
  994. # DEBUG BEGIN_STMT
  995. if (xTicksToWait_27(D) != 0)
  996. goto <bb 15>; [33.00%]
  997. else
  998. goto <bb 16>; [67.00%]
  999. <bb 15> [local count: 5132]:
  1000. # DEBUG BEGIN_STMT
  1001. # DEBUG BEGIN_STMT
  1002. _8 = &MEM[(struct EventGroup_t *)xEventGroup_23(D)].xTasksWaitingForBits;
  1003. _9 = uxBitsToWaitFor_24(D) | 83886080;
  1004. vTaskPlaceOnUnorderedEventList (_8, _9, xTicksToWait_27(D));
  1005. # DEBUG BEGIN_STMT
  1006. # DEBUG uxReturn => 0
  1007. goto <bb 17>; [100.00%]
  1008. <bb 16> [local count: 10420]:
  1009. # DEBUG BEGIN_STMT
  1010. uxReturn_32 = MEM[(struct EventGroup_t *)xEventGroup_23(D)].uxEventBits;
  1011. # DEBUG uxReturn => uxReturn_32
  1012. # DEBUG BEGIN_STMT
  1013. # DEBUG xTimeoutOccurred => 1
  1014. <bb 17> [local count: 23563]:
  1015. # xTicksToWait_14 = PHI <0(13), xTicksToWait_27(D)(15), 0(16)>
  1016. # uxReturn_15 = PHI <_3(13), 0(15), uxReturn_32(16)>
  1017. # DEBUG uxReturn => uxReturn_15
  1018. # DEBUG xTicksToWait => xTicksToWait_14
  1019. # DEBUG BEGIN_STMT
  1020. xAlreadyYielded_36 = xTaskResumeAll ();
  1021. # DEBUG xAlreadyYielded => xAlreadyYielded_36
  1022. # DEBUG BEGIN_STMT
  1023. if (xTicksToWait_14 != 0)
  1024. goto <bb 18>; [50.00%]
  1025. else
  1026. goto <bb 25>; [50.00%]
  1027. <bb 18> [local count: 11782]:
  1028. # DEBUG BEGIN_STMT
  1029. if (xAlreadyYielded_36 == 0)
  1030. goto <bb 19>; [50.00%]
  1031. else
  1032. goto <bb 20>; [50.00%]
  1033. <bb 19> [local count: 5891]:
  1034. # DEBUG BEGIN_STMT
  1035. MEM[(volatile uint32_t *)3758157060B] ={v} 268435456;
  1036. # DEBUG BEGIN_STMT
  1037. __asm__ __volatile__("dsb" : : : "memory");
  1038. # DEBUG BEGIN_STMT
  1039. __asm__ __volatile__("isb");
  1040. # DEBUG BEGIN_STMT
  1041. <bb 20> [local count: 11782]:
  1042. # DEBUG BEGIN_STMT
  1043. # DEBUG BEGIN_STMT
  1044. uxReturn_41 = uxTaskResetEventItemValue ();
  1045. # DEBUG uxReturn => uxReturn_41
  1046. # DEBUG BEGIN_STMT
  1047. _10 = uxReturn_41 & 33554432;
  1048. if (_10 == 0)
  1049. goto <bb 21>; [33.00%]
  1050. else
  1051. goto <bb 24>; [67.00%]
  1052. <bb 21> [local count: 3888]:
  1053. # DEBUG BEGIN_STMT
  1054. vPortEnterCritical ();
  1055. # DEBUG BEGIN_STMT
  1056. uxReturn_43 = MEM[(struct EventGroup_t *)xEventGroup_23(D)].uxEventBits;
  1057. # DEBUG uxReturn => uxReturn_43
  1058. # DEBUG BEGIN_STMT
  1059. _11 = uxBitsToWaitFor_24(D) & uxReturn_43;
  1060. if (_11 == uxBitsToWaitFor_24(D))
  1061. goto <bb 22>; [34.00%]
  1062. else
  1063. goto <bb 23>; [66.00%]
  1064. <bb 22> [local count: 1322]:
  1065. # DEBUG BEGIN_STMT
  1066. _12 = ~uxBitsToWaitFor_24(D);
  1067. _13 = _12 & uxReturn_43;
  1068. MEM[(struct EventGroup_t *)xEventGroup_23(D)].uxEventBits = _13;
  1069. <bb 23> [local count: 3888]:
  1070. # DEBUG BEGIN_STMT
  1071. # DEBUG BEGIN_STMT
  1072. vPortExitCritical ();
  1073. # DEBUG BEGIN_STMT
  1074. # DEBUG xTimeoutOccurred => 1
  1075. <bb 24> [local count: 11782]:
  1076. # uxReturn_16 = PHI <uxReturn_41(20), uxReturn_43(23)>
  1077. # DEBUG uxReturn => uxReturn_16
  1078. # DEBUG BEGIN_STMT
  1079. # DEBUG BEGIN_STMT
  1080. uxReturn_46 = uxReturn_16 & 16777215;
  1081. # DEBUG uxReturn => uxReturn_46
  1082. <bb 25> [local count: 23563]:
  1083. # uxReturn_17 = PHI <uxReturn_15(17), uxReturn_46(24)>
  1084. # DEBUG uxReturn => uxReturn_17
  1085. # DEBUG BEGIN_STMT
  1086. # DEBUG BEGIN_STMT
  1087. # DEBUG BEGIN_STMT
  1088. return uxReturn_17;
  1089. }
  1090. xEventGroupCreate ()
  1091. {
  1092. struct EventGroup_t * pxEventBits;
  1093. struct List_t * _1;
  1094. <bb 2> [local count: 1073741824]:
  1095. # DEBUG BEGIN_STMT
  1096. # DEBUG BEGIN_STMT
  1097. pxEventBits_5 = pvPortMalloc (28);
  1098. # DEBUG pxEventBits => pxEventBits_5
  1099. # DEBUG BEGIN_STMT
  1100. if (pxEventBits_5 != 0B)
  1101. goto <bb 3>; [53.47%]
  1102. else
  1103. goto <bb 4>; [46.53%]
  1104. <bb 3> [local count: 574129754]:
  1105. # DEBUG BEGIN_STMT
  1106. pxEventBits_5->uxEventBits = 0;
  1107. # DEBUG BEGIN_STMT
  1108. _1 = &pxEventBits_5->xTasksWaitingForBits;
  1109. vListInitialise (_1);
  1110. # DEBUG BEGIN_STMT
  1111. <bb 4> [local count: 1073741824]:
  1112. # DEBUG BEGIN_STMT
  1113. # DEBUG BEGIN_STMT
  1114. return pxEventBits_5;
  1115. }