queue.c.017i.build_ssa_passes 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936
  1. vQueueWaitForMessageRestricted (struct QueueDefinition * xQueue, TickType_t xTicksToWait, const BaseType_t xWaitIndefinitely)
  2. {
  3. struct Queue_t * const pxQueue;
  4. <bb 2> :
  5. pxQueue = xQueue;
  6. vPortEnterCritical ();
  7. _1 = pxQueue->cRxLock;
  8. if (_1 == -1)
  9. goto <bb 3>; [INV]
  10. else
  11. goto <bb 4>; [INV]
  12. <bb 3> :
  13. pxQueue->cRxLock = 0;
  14. <bb 4> :
  15. _2 = pxQueue->cTxLock;
  16. if (_2 == -1)
  17. goto <bb 5>; [INV]
  18. else
  19. goto <bb 6>; [INV]
  20. <bb 5> :
  21. pxQueue->cTxLock = 0;
  22. <bb 6> :
  23. vPortExitCritical ();
  24. _3 = pxQueue->uxMessagesWaiting;
  25. if (_3 == 0)
  26. goto <bb 7>; [INV]
  27. else
  28. goto <bb 8>; [INV]
  29. <bb 7> :
  30. _4 = &pxQueue->xTasksWaitingToReceive;
  31. vTaskPlaceOnEventListRestricted (_4, xTicksToWait, xWaitIndefinitely);
  32. <bb 8> :
  33. prvUnlockQueue (pxQueue);
  34. return;
  35. }
  36. vQueueUnregisterQueue (struct QueueDefinition * xQueue)
  37. {
  38. UBaseType_t ux;
  39. <bb 2> :
  40. if (xQueue == 0B)
  41. goto <bb 3>; [INV]
  42. else
  43. goto <bb 5>; [INV]
  44. <bb 3> :
  45. vPortRaiseBASEPRI ();
  46. <bb 4> :
  47. goto <bb 4>; [INV]
  48. <bb 5> :
  49. ux = 0;
  50. goto <bb 9>; [INV]
  51. <bb 6> :
  52. _1 = xQueueRegistry[ux].xHandle;
  53. if (xQueue == _1)
  54. goto <bb 7>; [INV]
  55. else
  56. goto <bb 8>; [INV]
  57. <bb 7> :
  58. xQueueRegistry[ux].pcQueueName = 0B;
  59. xQueueRegistry[ux].xHandle = 0B;
  60. goto <bb 10>; [INV]
  61. <bb 8> :
  62. ux = ux + 1;
  63. <bb 9> :
  64. if (ux <= 1)
  65. goto <bb 6>; [INV]
  66. else
  67. goto <bb 10>; [INV]
  68. <bb 10> :
  69. return;
  70. }
  71. pcQueueGetName (struct QueueDefinition * xQueue)
  72. {
  73. const char * pcReturn;
  74. UBaseType_t ux;
  75. const char * D.7264;
  76. <bb 2> :
  77. pcReturn = 0B;
  78. if (xQueue == 0B)
  79. goto <bb 3>; [INV]
  80. else
  81. goto <bb 5>; [INV]
  82. <bb 3> :
  83. vPortRaiseBASEPRI ();
  84. <bb 4> :
  85. goto <bb 4>; [INV]
  86. <bb 5> :
  87. ux = 0;
  88. goto <bb 9>; [INV]
  89. <bb 6> :
  90. _1 = xQueueRegistry[ux].xHandle;
  91. if (xQueue == _1)
  92. goto <bb 7>; [INV]
  93. else
  94. goto <bb 8>; [INV]
  95. <bb 7> :
  96. pcReturn = xQueueRegistry[ux].pcQueueName;
  97. goto <bb 10>; [INV]
  98. <bb 8> :
  99. ux = ux + 1;
  100. <bb 9> :
  101. if (ux <= 1)
  102. goto <bb 6>; [INV]
  103. else
  104. goto <bb 10>; [INV]
  105. <bb 10> :
  106. D.7264 = pcReturn;
  107. <bb 11> :
  108. <L8>:
  109. return D.7264;
  110. }
  111. vQueueAddToRegistry (struct QueueDefinition * xQueue, const char * pcQueueName)
  112. {
  113. struct QueueRegistryItem_t * pxEntryToWrite;
  114. UBaseType_t ux;
  115. <bb 2> :
  116. if (xQueue == 0B)
  117. goto <bb 3>; [INV]
  118. else
  119. goto <bb 5>; [INV]
  120. <bb 3> :
  121. vPortRaiseBASEPRI ();
  122. <bb 4> :
  123. goto <bb 4>; [INV]
  124. <bb 5> :
  125. pxEntryToWrite = 0B;
  126. if (pcQueueName != 0B)
  127. goto <bb 6>; [INV]
  128. else
  129. goto <bb 14>; [INV]
  130. <bb 6> :
  131. ux = 0;
  132. goto <bb 13>; [INV]
  133. <bb 7> :
  134. _1 = xQueueRegistry[ux].xHandle;
  135. if (xQueue == _1)
  136. goto <bb 8>; [INV]
  137. else
  138. goto <bb 9>; [INV]
  139. <bb 8> :
  140. pxEntryToWrite = &xQueueRegistry[ux];
  141. goto <bb 14>; [INV]
  142. <bb 9> :
  143. if (pxEntryToWrite == 0B)
  144. goto <bb 10>; [INV]
  145. else
  146. goto <bb 12>; [INV]
  147. <bb 10> :
  148. _2 = xQueueRegistry[ux].pcQueueName;
  149. if (_2 == 0B)
  150. goto <bb 11>; [INV]
  151. else
  152. goto <bb 12>; [INV]
  153. <bb 11> :
  154. pxEntryToWrite = &xQueueRegistry[ux];
  155. <bb 12> :
  156. ux = ux + 1;
  157. <bb 13> :
  158. if (ux <= 1)
  159. goto <bb 7>; [INV]
  160. else
  161. goto <bb 14>; [INV]
  162. <bb 14> :
  163. if (pxEntryToWrite != 0B)
  164. goto <bb 15>; [INV]
  165. else
  166. goto <bb 16>; [INV]
  167. <bb 15> :
  168. pxEntryToWrite->pcQueueName = pcQueueName;
  169. pxEntryToWrite->xHandle = xQueue;
  170. <bb 16> :
  171. return;
  172. }
  173. xQueueIsQueueFullFromISR (struct QueueDefinition * const xQueue)
  174. {
  175. struct Queue_t * const pxQueue;
  176. BaseType_t xReturn;
  177. BaseType_t D.7245;
  178. <bb 2> :
  179. pxQueue = xQueue;
  180. if (pxQueue == 0B)
  181. goto <bb 3>; [INV]
  182. else
  183. goto <bb 5>; [INV]
  184. <bb 3> :
  185. vPortRaiseBASEPRI ();
  186. <bb 4> :
  187. goto <bb 4>; [INV]
  188. <bb 5> :
  189. _1 = pxQueue->uxMessagesWaiting;
  190. _2 = pxQueue->uxLength;
  191. if (_1 == _2)
  192. goto <bb 6>; [INV]
  193. else
  194. goto <bb 7>; [INV]
  195. <bb 6> :
  196. xReturn = 1;
  197. goto <bb 8>; [INV]
  198. <bb 7> :
  199. xReturn = 0;
  200. <bb 8> :
  201. D.7245 = xReturn;
  202. <bb 9> :
  203. <L6>:
  204. return D.7245;
  205. }
  206. prvIsQueueFull (const struct Queue_t * pxQueue)
  207. {
  208. BaseType_t xReturn;
  209. BaseType_t D.7238;
  210. <bb 2> :
  211. vPortEnterCritical ();
  212. _1 = pxQueue->uxMessagesWaiting;
  213. _2 = pxQueue->uxLength;
  214. if (_1 == _2)
  215. goto <bb 3>; [INV]
  216. else
  217. goto <bb 4>; [INV]
  218. <bb 3> :
  219. xReturn = 1;
  220. goto <bb 5>; [INV]
  221. <bb 4> :
  222. xReturn = 0;
  223. <bb 5> :
  224. vPortExitCritical ();
  225. D.7238 = xReturn;
  226. <bb 6> :
  227. <L3>:
  228. return D.7238;
  229. }
  230. xQueueIsQueueEmptyFromISR (struct QueueDefinition * const xQueue)
  231. {
  232. struct Queue_t * const pxQueue;
  233. BaseType_t xReturn;
  234. BaseType_t D.7233;
  235. <bb 2> :
  236. pxQueue = xQueue;
  237. if (pxQueue == 0B)
  238. goto <bb 3>; [INV]
  239. else
  240. goto <bb 5>; [INV]
  241. <bb 3> :
  242. vPortRaiseBASEPRI ();
  243. <bb 4> :
  244. goto <bb 4>; [INV]
  245. <bb 5> :
  246. _1 = pxQueue->uxMessagesWaiting;
  247. if (_1 == 0)
  248. goto <bb 6>; [INV]
  249. else
  250. goto <bb 7>; [INV]
  251. <bb 6> :
  252. xReturn = 1;
  253. goto <bb 8>; [INV]
  254. <bb 7> :
  255. xReturn = 0;
  256. <bb 8> :
  257. D.7233 = xReturn;
  258. <bb 9> :
  259. <L6>:
  260. return D.7233;
  261. }
  262. prvIsQueueEmpty (const struct Queue_t * pxQueue)
  263. {
  264. BaseType_t xReturn;
  265. BaseType_t D.7226;
  266. <bb 2> :
  267. vPortEnterCritical ();
  268. _1 = pxQueue->uxMessagesWaiting;
  269. if (_1 == 0)
  270. goto <bb 3>; [INV]
  271. else
  272. goto <bb 4>; [INV]
  273. <bb 3> :
  274. xReturn = 1;
  275. goto <bb 5>; [INV]
  276. <bb 4> :
  277. xReturn = 0;
  278. <bb 5> :
  279. vPortExitCritical ();
  280. D.7226 = xReturn;
  281. <bb 6> :
  282. <L3>:
  283. return D.7226;
  284. }
  285. prvUnlockQueue (struct Queue_t * const pxQueue)
  286. {
  287. int8_t cRxLock;
  288. int8_t cTxLock;
  289. <bb 2> :
  290. vPortEnterCritical ();
  291. cTxLock = pxQueue->cTxLock;
  292. goto <bb 8>; [INV]
  293. <bb 3> :
  294. _1 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  295. if (_1 != 0)
  296. goto <bb 4>; [INV]
  297. else
  298. goto <bb 6>; [INV]
  299. <bb 4> :
  300. _2 = &pxQueue->xTasksWaitingToReceive;
  301. _3 = xTaskRemoveFromEventList (_2);
  302. if (_3 != 0)
  303. goto <bb 5>; [INV]
  304. else
  305. goto <bb 7>; [INV]
  306. <bb 5> :
  307. vTaskMissedYield ();
  308. goto <bb 7>; [INV]
  309. <bb 6> :
  310. goto <bb 9>; [INV]
  311. <bb 7> :
  312. cTxLock.28_4 = (unsigned char) cTxLock;
  313. _5 = cTxLock.28_4 + 255;
  314. cTxLock = (int8_t) _5;
  315. <bb 8> :
  316. if (cTxLock > 0)
  317. goto <bb 3>; [INV]
  318. else
  319. goto <bb 9>; [INV]
  320. <bb 9> :
  321. pxQueue->cTxLock = -1;
  322. vPortExitCritical ();
  323. vPortEnterCritical ();
  324. cRxLock = pxQueue->cRxLock;
  325. goto <bb 15>; [INV]
  326. <bb 10> :
  327. _6 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  328. if (_6 != 0)
  329. goto <bb 11>; [INV]
  330. else
  331. goto <bb 14>; [INV]
  332. <bb 11> :
  333. _7 = &pxQueue->xTasksWaitingToSend;
  334. _8 = xTaskRemoveFromEventList (_7);
  335. if (_8 != 0)
  336. goto <bb 12>; [INV]
  337. else
  338. goto <bb 13>; [INV]
  339. <bb 12> :
  340. vTaskMissedYield ();
  341. <bb 13> :
  342. cRxLock.29_9 = (unsigned char) cRxLock;
  343. _10 = cRxLock.29_9 + 255;
  344. cRxLock = (int8_t) _10;
  345. goto <bb 15>; [INV]
  346. <bb 14> :
  347. goto <bb 16>; [INV]
  348. <bb 15> :
  349. if (cRxLock > 0)
  350. goto <bb 10>; [INV]
  351. else
  352. goto <bb 16>; [INV]
  353. <bb 16> :
  354. pxQueue->cRxLock = -1;
  355. vPortExitCritical ();
  356. return;
  357. }
  358. prvCopyDataFromQueue (struct Queue_t * const pxQueue, void * const pvBuffer)
  359. {
  360. <bb 2> :
  361. _1 = pxQueue->uxItemSize;
  362. if (_1 != 0)
  363. goto <bb 3>; [INV]
  364. else
  365. goto <bb 6>; [INV]
  366. <bb 3> :
  367. _2 = pxQueue->u.xQueue.pcReadFrom;
  368. _3 = pxQueue->uxItemSize;
  369. _4 = _2 + _3;
  370. pxQueue->u.xQueue.pcReadFrom = _4;
  371. _5 = pxQueue->u.xQueue.pcReadFrom;
  372. _6 = pxQueue->u.xQueue.pcTail;
  373. if (_5 >= _6)
  374. goto <bb 4>; [INV]
  375. else
  376. goto <bb 5>; [INV]
  377. <bb 4> :
  378. _7 = pxQueue->pcHead;
  379. pxQueue->u.xQueue.pcReadFrom = _7;
  380. <bb 5> :
  381. _8 = pxQueue->u.xQueue.pcReadFrom;
  382. _9 = pxQueue->uxItemSize;
  383. memcpy (pvBuffer, _8, _9);
  384. <bb 6> :
  385. return;
  386. }
  387. prvCopyDataToQueue (struct Queue_t * const pxQueue, const void * pvItemToQueue, const BaseType_t xPosition)
  388. {
  389. UBaseType_t uxMessagesWaiting;
  390. BaseType_t xReturn;
  391. BaseType_t D.7204;
  392. <bb 2> :
  393. xReturn = 0;
  394. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  395. _1 = pxQueue->uxItemSize;
  396. if (_1 == 0)
  397. goto <bb 3>; [INV]
  398. else
  399. goto <bb 5>; [INV]
  400. <bb 3> :
  401. _2 = pxQueue->pcHead;
  402. if (_2 == 0B)
  403. goto <bb 4>; [INV]
  404. else
  405. goto <bb 13>; [INV]
  406. <bb 4> :
  407. _3 = pxQueue->u.xSemaphore.xMutexHolder;
  408. xReturn = xTaskPriorityDisinherit (_3);
  409. pxQueue->u.xSemaphore.xMutexHolder = 0B;
  410. goto <bb 13>; [INV]
  411. <bb 5> :
  412. if (xPosition == 0)
  413. goto <bb 6>; [INV]
  414. else
  415. goto <bb 8>; [INV]
  416. <bb 6> :
  417. _4 = pxQueue->pcWriteTo;
  418. _5 = pxQueue->uxItemSize;
  419. memcpy (_4, pvItemToQueue, _5);
  420. _6 = pxQueue->pcWriteTo;
  421. _7 = pxQueue->uxItemSize;
  422. _8 = _6 + _7;
  423. pxQueue->pcWriteTo = _8;
  424. _9 = pxQueue->pcWriteTo;
  425. _10 = pxQueue->u.xQueue.pcTail;
  426. if (_9 >= _10)
  427. goto <bb 7>; [INV]
  428. else
  429. goto <bb 13>; [INV]
  430. <bb 7> :
  431. _11 = pxQueue->pcHead;
  432. pxQueue->pcWriteTo = _11;
  433. goto <bb 13>; [INV]
  434. <bb 8> :
  435. _12 = pxQueue->u.xQueue.pcReadFrom;
  436. _13 = pxQueue->uxItemSize;
  437. memcpy (_12, pvItemToQueue, _13);
  438. _14 = pxQueue->u.xQueue.pcReadFrom;
  439. _15 = pxQueue->uxItemSize;
  440. _16 = -_15;
  441. _17 = _14 + _16;
  442. pxQueue->u.xQueue.pcReadFrom = _17;
  443. _18 = pxQueue->u.xQueue.pcReadFrom;
  444. _19 = pxQueue->pcHead;
  445. if (_18 < _19)
  446. goto <bb 9>; [INV]
  447. else
  448. goto <bb 10>; [INV]
  449. <bb 9> :
  450. _20 = pxQueue->u.xQueue.pcTail;
  451. _21 = pxQueue->uxItemSize;
  452. _22 = -_21;
  453. _23 = _20 + _22;
  454. pxQueue->u.xQueue.pcReadFrom = _23;
  455. <bb 10> :
  456. if (xPosition == 2)
  457. goto <bb 11>; [INV]
  458. else
  459. goto <bb 13>; [INV]
  460. <bb 11> :
  461. if (uxMessagesWaiting != 0)
  462. goto <bb 12>; [INV]
  463. else
  464. goto <bb 13>; [INV]
  465. <bb 12> :
  466. uxMessagesWaiting = uxMessagesWaiting + 4294967295;
  467. <bb 13> :
  468. _24 = uxMessagesWaiting + 1;
  469. pxQueue->uxMessagesWaiting = _24;
  470. D.7204 = xReturn;
  471. <bb 14> :
  472. <L21>:
  473. return D.7204;
  474. }
  475. prvGetDisinheritPriorityAfterTimeout (const struct Queue_t * const pxQueue)
  476. {
  477. UBaseType_t uxHighestPriorityOfWaitingTasks;
  478. UBaseType_t D.7181;
  479. <bb 2> :
  480. _1 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  481. if (_1 != 0)
  482. goto <bb 3>; [INV]
  483. else
  484. goto <bb 4>; [INV]
  485. <bb 3> :
  486. _2 = pxQueue->xTasksWaitingToReceive.xListEnd.pxNext;
  487. _3 = _2->xItemValue;
  488. uxHighestPriorityOfWaitingTasks = 5 - _3;
  489. goto <bb 5>; [INV]
  490. <bb 4> :
  491. uxHighestPriorityOfWaitingTasks = 0;
  492. <bb 5> :
  493. D.7181 = uxHighestPriorityOfWaitingTasks;
  494. <bb 6> :
  495. <L3>:
  496. return D.7181;
  497. }
  498. ucQueueGetQueueType (struct QueueDefinition * xQueue)
  499. {
  500. uint8_t D.7176;
  501. <bb 2> :
  502. D.7176 = MEM[(struct Queue_t *)xQueue].ucQueueType;
  503. <bb 3> :
  504. <L0>:
  505. return D.7176;
  506. }
  507. vQueueSetQueueNumber (struct QueueDefinition * xQueue, UBaseType_t uxQueueNumber)
  508. {
  509. <bb 2> :
  510. MEM[(struct Queue_t *)xQueue].uxQueueNumber = uxQueueNumber;
  511. return;
  512. }
  513. uxQueueGetQueueNumber (struct QueueDefinition * xQueue)
  514. {
  515. UBaseType_t D.7174;
  516. <bb 2> :
  517. D.7174 = MEM[(struct Queue_t *)xQueue].uxQueueNumber;
  518. <bb 3> :
  519. <L0>:
  520. return D.7174;
  521. }
  522. vQueueDelete (struct QueueDefinition * xQueue)
  523. {
  524. struct Queue_t * const pxQueue;
  525. <bb 2> :
  526. pxQueue = xQueue;
  527. if (pxQueue == 0B)
  528. goto <bb 3>; [INV]
  529. else
  530. goto <bb 5>; [INV]
  531. <bb 3> :
  532. vPortRaiseBASEPRI ();
  533. <bb 4> :
  534. goto <bb 4>; [INV]
  535. <bb 5> :
  536. vQueueUnregisterQueue (pxQueue);
  537. vPortFree (pxQueue);
  538. return;
  539. }
  540. uxQueueMessagesWaitingFromISR (struct QueueDefinition * const xQueue)
  541. {
  542. struct Queue_t * const pxQueue;
  543. UBaseType_t uxReturn;
  544. UBaseType_t D.7170;
  545. <bb 2> :
  546. pxQueue = xQueue;
  547. if (pxQueue == 0B)
  548. goto <bb 3>; [INV]
  549. else
  550. goto <bb 5>; [INV]
  551. <bb 3> :
  552. vPortRaiseBASEPRI ();
  553. <bb 4> :
  554. goto <bb 4>; [INV]
  555. <bb 5> :
  556. uxReturn = pxQueue->uxMessagesWaiting;
  557. D.7170 = uxReturn;
  558. <bb 6> :
  559. <L3>:
  560. return D.7170;
  561. }
  562. uxQueueSpacesAvailable (struct QueueDefinition * const xQueue)
  563. {
  564. struct Queue_t * const pxQueue;
  565. UBaseType_t uxReturn;
  566. UBaseType_t D.7166;
  567. <bb 2> :
  568. pxQueue = xQueue;
  569. if (pxQueue == 0B)
  570. goto <bb 3>; [INV]
  571. else
  572. goto <bb 5>; [INV]
  573. <bb 3> :
  574. vPortRaiseBASEPRI ();
  575. <bb 4> :
  576. goto <bb 4>; [INV]
  577. <bb 5> :
  578. vPortEnterCritical ();
  579. _1 = pxQueue->uxLength;
  580. _2 = pxQueue->uxMessagesWaiting;
  581. uxReturn = _1 - _2;
  582. vPortExitCritical ();
  583. D.7166 = uxReturn;
  584. <bb 6> :
  585. <L3>:
  586. return D.7166;
  587. }
  588. uxQueueMessagesWaiting (struct QueueDefinition * const xQueue)
  589. {
  590. UBaseType_t uxReturn;
  591. UBaseType_t D.7162;
  592. <bb 2> :
  593. if (xQueue == 0B)
  594. goto <bb 3>; [INV]
  595. else
  596. goto <bb 5>; [INV]
  597. <bb 3> :
  598. vPortRaiseBASEPRI ();
  599. <bb 4> :
  600. goto <bb 4>; [INV]
  601. <bb 5> :
  602. vPortEnterCritical ();
  603. uxReturn = MEM[(struct Queue_t *)xQueue].uxMessagesWaiting;
  604. vPortExitCritical ();
  605. D.7162 = uxReturn;
  606. <bb 6> :
  607. <L3>:
  608. return D.7162;
  609. }
  610. xQueuePeekFromISR (struct QueueDefinition * xQueue, void * const pvBuffer)
  611. {
  612. struct Queue_t * const pxQueue;
  613. int8_t * pcOriginalReadPosition;
  614. UBaseType_t uxSavedInterruptStatus;
  615. BaseType_t xReturn;
  616. BaseType_t D.7158;
  617. int iftmp.27;
  618. <bb 2> :
  619. pxQueue = xQueue;
  620. if (pxQueue == 0B)
  621. goto <bb 3>; [INV]
  622. else
  623. goto <bb 5>; [INV]
  624. <bb 3> :
  625. vPortRaiseBASEPRI ();
  626. <bb 4> :
  627. goto <bb 4>; [INV]
  628. <bb 5> :
  629. if (pvBuffer != 0B)
  630. goto <bb 7>; [INV]
  631. else
  632. goto <bb 6>; [INV]
  633. <bb 6> :
  634. _1 = pxQueue->uxItemSize;
  635. if (_1 == 0)
  636. goto <bb 7>; [INV]
  637. else
  638. goto <bb 8>; [INV]
  639. <bb 7> :
  640. iftmp.27 = 1;
  641. goto <bb 9>; [INV]
  642. <bb 8> :
  643. iftmp.27 = 0;
  644. <bb 9> :
  645. if (iftmp.27 == 0)
  646. goto <bb 10>; [INV]
  647. else
  648. goto <bb 12>; [INV]
  649. <bb 10> :
  650. vPortRaiseBASEPRI ();
  651. <bb 11> :
  652. goto <bb 11>; [INV]
  653. <bb 12> :
  654. _2 = pxQueue->uxItemSize;
  655. if (_2 == 0)
  656. goto <bb 13>; [INV]
  657. else
  658. goto <bb 15>; [INV]
  659. <bb 13> :
  660. vPortRaiseBASEPRI ();
  661. <bb 14> :
  662. goto <bb 14>; [INV]
  663. <bb 15> :
  664. vPortValidateInterruptPriority ();
  665. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  666. _3 = pxQueue->uxMessagesWaiting;
  667. if (_3 != 0)
  668. goto <bb 16>; [INV]
  669. else
  670. goto <bb 17>; [INV]
  671. <bb 16> :
  672. pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom;
  673. prvCopyDataFromQueue (pxQueue, pvBuffer);
  674. pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition;
  675. xReturn = 1;
  676. goto <bb 18>; [INV]
  677. <bb 17> :
  678. xReturn = 0;
  679. <bb 18> :
  680. vPortSetBASEPRI (uxSavedInterruptStatus);
  681. D.7158 = xReturn;
  682. <bb 19> :
  683. <L16>:
  684. return D.7158;
  685. }
  686. xQueueReceiveFromISR (struct QueueDefinition * xQueue, void * const pvBuffer, BaseType_t * const pxHigherPriorityTaskWoken)
  687. {
  688. const int8_t cRxLock;
  689. const UBaseType_t uxMessagesWaiting;
  690. struct Queue_t * const pxQueue;
  691. UBaseType_t uxSavedInterruptStatus;
  692. BaseType_t xReturn;
  693. BaseType_t D.7142;
  694. int iftmp.25;
  695. <bb 2> :
  696. pxQueue = xQueue;
  697. if (pxQueue == 0B)
  698. goto <bb 3>; [INV]
  699. else
  700. goto <bb 5>; [INV]
  701. <bb 3> :
  702. vPortRaiseBASEPRI ();
  703. <bb 4> :
  704. goto <bb 4>; [INV]
  705. <bb 5> :
  706. if (pvBuffer != 0B)
  707. goto <bb 7>; [INV]
  708. else
  709. goto <bb 6>; [INV]
  710. <bb 6> :
  711. _1 = pxQueue->uxItemSize;
  712. if (_1 == 0)
  713. goto <bb 7>; [INV]
  714. else
  715. goto <bb 8>; [INV]
  716. <bb 7> :
  717. iftmp.25 = 1;
  718. goto <bb 9>; [INV]
  719. <bb 8> :
  720. iftmp.25 = 0;
  721. <bb 9> :
  722. if (iftmp.25 == 0)
  723. goto <bb 10>; [INV]
  724. else
  725. goto <bb 12>; [INV]
  726. <bb 10> :
  727. vPortRaiseBASEPRI ();
  728. <bb 11> :
  729. goto <bb 11>; [INV]
  730. <bb 12> :
  731. vPortValidateInterruptPriority ();
  732. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  733. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  734. if (uxMessagesWaiting != 0)
  735. goto <bb 13>; [INV]
  736. else
  737. goto <bb 23>; [INV]
  738. <bb 13> :
  739. cRxLock = pxQueue->cRxLock;
  740. prvCopyDataFromQueue (pxQueue, pvBuffer);
  741. _2 = uxMessagesWaiting + 4294967295;
  742. pxQueue->uxMessagesWaiting = _2;
  743. if (cRxLock == -1)
  744. goto <bb 14>; [INV]
  745. else
  746. goto <bb 18>; [INV]
  747. <bb 14> :
  748. _3 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  749. if (_3 != 0)
  750. goto <bb 15>; [INV]
  751. else
  752. goto <bb 22>; [INV]
  753. <bb 15> :
  754. _4 = &pxQueue->xTasksWaitingToSend;
  755. _5 = xTaskRemoveFromEventList (_4);
  756. if (_5 != 0)
  757. goto <bb 16>; [INV]
  758. else
  759. goto <bb 22>; [INV]
  760. <bb 16> :
  761. if (pxHigherPriorityTaskWoken != 0B)
  762. goto <bb 17>; [INV]
  763. else
  764. goto <bb 22>; [INV]
  765. <bb 17> :
  766. *pxHigherPriorityTaskWoken = 1;
  767. goto <bb 22>; [INV]
  768. <bb 18> :
  769. if (cRxLock == 127)
  770. goto <bb 19>; [INV]
  771. else
  772. goto <bb 21>; [INV]
  773. <bb 19> :
  774. vPortRaiseBASEPRI ();
  775. <bb 20> :
  776. goto <bb 20>; [INV]
  777. <bb 21> :
  778. cRxLock.26_6 = (unsigned char) cRxLock;
  779. _7 = cRxLock.26_6 + 1;
  780. _8 = (signed char) _7;
  781. pxQueue->cRxLock = _8;
  782. <bb 22> :
  783. xReturn = 1;
  784. goto <bb 24>; [INV]
  785. <bb 23> :
  786. xReturn = 0;
  787. <bb 24> :
  788. vPortSetBASEPRI (uxSavedInterruptStatus);
  789. D.7142 = xReturn;
  790. <bb 25> :
  791. <L28>:
  792. return D.7142;
  793. }
  794. xQueuePeek (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait)
  795. {
  796. const UBaseType_t uxMessagesWaiting;
  797. struct Queue_t * const pxQueue;
  798. int8_t * pcOriginalReadPosition;
  799. struct TimeOut_t xTimeOut;
  800. BaseType_t xEntryTimeSet;
  801. BaseType_t D.7093;
  802. int iftmp.21;
  803. int iftmp.20;
  804. <bb 2> :
  805. xEntryTimeSet = 0;
  806. pxQueue = xQueue;
  807. if (pxQueue == 0B)
  808. goto <bb 3>; [INV]
  809. else
  810. goto <bb 5>; [INV]
  811. <bb 3> :
  812. vPortRaiseBASEPRI ();
  813. <bb 4> :
  814. goto <bb 4>; [INV]
  815. <bb 5> :
  816. if (pvBuffer != 0B)
  817. goto <bb 7>; [INV]
  818. else
  819. goto <bb 6>; [INV]
  820. <bb 6> :
  821. _1 = pxQueue->uxItemSize;
  822. if (_1 == 0)
  823. goto <bb 7>; [INV]
  824. else
  825. goto <bb 8>; [INV]
  826. <bb 7> :
  827. iftmp.20 = 1;
  828. goto <bb 9>; [INV]
  829. <bb 8> :
  830. iftmp.20 = 0;
  831. <bb 9> :
  832. if (iftmp.20 == 0)
  833. goto <bb 10>; [INV]
  834. else
  835. goto <bb 12>; [INV]
  836. <bb 10> :
  837. vPortRaiseBASEPRI ();
  838. <bb 11> :
  839. goto <bb 11>; [INV]
  840. <bb 12> :
  841. _2 = xTaskGetSchedulerState ();
  842. if (_2 != 0)
  843. goto <bb 14>; [INV]
  844. else
  845. goto <bb 13>; [INV]
  846. <bb 13> :
  847. xTicksToWait.22_3 = xTicksToWait;
  848. if (xTicksToWait.22_3 == 0)
  849. goto <bb 14>; [INV]
  850. else
  851. goto <bb 15>; [INV]
  852. <bb 14> :
  853. iftmp.21 = 1;
  854. goto <bb 16>; [INV]
  855. <bb 15> :
  856. iftmp.21 = 0;
  857. <bb 16> :
  858. if (iftmp.21 == 0)
  859. goto <bb 17>; [INV]
  860. else
  861. goto <bb 19>; [INV]
  862. <bb 17> :
  863. vPortRaiseBASEPRI ();
  864. <bb 18> :
  865. goto <bb 18>; [INV]
  866. <bb 19> :
  867. vPortEnterCritical ();
  868. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  869. if (uxMessagesWaiting != 0)
  870. goto <bb 20>; [INV]
  871. else
  872. goto <bb 24>; [INV]
  873. <bb 20> :
  874. pcOriginalReadPosition = pxQueue->u.xQueue.pcReadFrom;
  875. prvCopyDataFromQueue (pxQueue, pvBuffer);
  876. pxQueue->u.xQueue.pcReadFrom = pcOriginalReadPosition;
  877. _4 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  878. if (_4 != 0)
  879. goto <bb 21>; [INV]
  880. else
  881. goto <bb 23>; [INV]
  882. <bb 21> :
  883. _5 = &pxQueue->xTasksWaitingToReceive;
  884. _6 = xTaskRemoveFromEventList (_5);
  885. if (_6 != 0)
  886. goto <bb 22>; [INV]
  887. else
  888. goto <bb 23>; [INV]
  889. <bb 22> :
  890. _7 = 3758157060B;
  891. *_7 = 268435456;
  892. __asm__ __volatile__("dsb" : : : "memory");
  893. __asm__ __volatile__("isb");
  894. <bb 23> :
  895. vPortExitCritical ();
  896. D.7093 = 1;
  897. // predicted unlikely by early return (on trees) predictor.
  898. goto <bb 40>; [INV]
  899. <bb 24> :
  900. xTicksToWait.23_8 = xTicksToWait;
  901. if (xTicksToWait.23_8 == 0)
  902. goto <bb 25>; [INV]
  903. else
  904. goto <bb 26>; [INV]
  905. <bb 25> :
  906. vPortExitCritical ();
  907. D.7093 = 0;
  908. // predicted unlikely by early return (on trees) predictor.
  909. goto <bb 40>; [INV]
  910. <bb 26> :
  911. if (xEntryTimeSet == 0)
  912. goto <bb 27>; [INV]
  913. else
  914. goto <bb 28>; [INV]
  915. <bb 27> :
  916. vTaskInternalSetTimeOutState (&xTimeOut);
  917. xEntryTimeSet = 1;
  918. <bb 28> :
  919. vPortExitCritical ();
  920. vTaskSuspendAll ();
  921. vPortEnterCritical ();
  922. _9 = pxQueue->cRxLock;
  923. if (_9 == -1)
  924. goto <bb 29>; [INV]
  925. else
  926. goto <bb 30>; [INV]
  927. <bb 29> :
  928. pxQueue->cRxLock = 0;
  929. <bb 30> :
  930. _10 = pxQueue->cTxLock;
  931. if (_10 == -1)
  932. goto <bb 31>; [INV]
  933. else
  934. goto <bb 32>; [INV]
  935. <bb 31> :
  936. pxQueue->cTxLock = 0;
  937. <bb 32> :
  938. vPortExitCritical ();
  939. _11 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  940. if (_11 == 0)
  941. goto <bb 33>; [INV]
  942. else
  943. goto <bb 37>; [INV]
  944. <bb 33> :
  945. _12 = prvIsQueueEmpty (pxQueue);
  946. if (_12 != 0)
  947. goto <bb 34>; [INV]
  948. else
  949. goto <bb 36>; [INV]
  950. <bb 34> :
  951. _13 = &pxQueue->xTasksWaitingToReceive;
  952. xTicksToWait.24_14 = xTicksToWait;
  953. vTaskPlaceOnEventList (_13, xTicksToWait.24_14);
  954. prvUnlockQueue (pxQueue);
  955. _15 = xTaskResumeAll ();
  956. if (_15 == 0)
  957. goto <bb 35>; [INV]
  958. else
  959. goto <bb 39>; [INV]
  960. <bb 35> :
  961. _16 = 3758157060B;
  962. *_16 = 268435456;
  963. __asm__ __volatile__("dsb" : : : "memory");
  964. __asm__ __volatile__("isb");
  965. goto <bb 39>; [INV]
  966. <bb 36> :
  967. prvUnlockQueue (pxQueue);
  968. xTaskResumeAll ();
  969. goto <bb 39>; [INV]
  970. <bb 37> :
  971. prvUnlockQueue (pxQueue);
  972. xTaskResumeAll ();
  973. _17 = prvIsQueueEmpty (pxQueue);
  974. if (_17 != 0)
  975. goto <bb 38>; [INV]
  976. else
  977. goto <bb 39>; [INV]
  978. <bb 38> :
  979. D.7093 = 0;
  980. // predicted unlikely by early return (on trees) predictor.
  981. goto <bb 40>; [INV]
  982. <bb 39> :
  983. goto <bb 19>; [INV]
  984. <bb 40> :
  985. xTimeOut = {CLOBBER};
  986. <bb 41> :
  987. <L47>:
  988. return D.7093;
  989. }
  990. xQueueSemaphoreTake (struct QueueDefinition * xQueue, TickType_t xTicksToWait)
  991. {
  992. UBaseType_t uxHighestWaitingPriority;
  993. const UBaseType_t uxSemaphoreCount;
  994. BaseType_t xInheritanceOccurred;
  995. struct Queue_t * const pxQueue;
  996. struct TimeOut_t xTimeOut;
  997. BaseType_t xEntryTimeSet;
  998. BaseType_t D.7039;
  999. int iftmp.16;
  1000. <bb 2> :
  1001. xEntryTimeSet = 0;
  1002. pxQueue = xQueue;
  1003. xInheritanceOccurred = 0;
  1004. if (pxQueue == 0B)
  1005. goto <bb 3>; [INV]
  1006. else
  1007. goto <bb 5>; [INV]
  1008. <bb 3> :
  1009. vPortRaiseBASEPRI ();
  1010. <bb 4> :
  1011. goto <bb 4>; [INV]
  1012. <bb 5> :
  1013. _1 = pxQueue->uxItemSize;
  1014. if (_1 != 0)
  1015. goto <bb 6>; [INV]
  1016. else
  1017. goto <bb 8>; [INV]
  1018. <bb 6> :
  1019. vPortRaiseBASEPRI ();
  1020. <bb 7> :
  1021. goto <bb 7>; [INV]
  1022. <bb 8> :
  1023. _2 = xTaskGetSchedulerState ();
  1024. if (_2 != 0)
  1025. goto <bb 10>; [INV]
  1026. else
  1027. goto <bb 9>; [INV]
  1028. <bb 9> :
  1029. xTicksToWait.17_3 = xTicksToWait;
  1030. if (xTicksToWait.17_3 == 0)
  1031. goto <bb 10>; [INV]
  1032. else
  1033. goto <bb 11>; [INV]
  1034. <bb 10> :
  1035. iftmp.16 = 1;
  1036. goto <bb 12>; [INV]
  1037. <bb 11> :
  1038. iftmp.16 = 0;
  1039. <bb 12> :
  1040. if (iftmp.16 == 0)
  1041. goto <bb 13>; [INV]
  1042. else
  1043. goto <bb 15>; [INV]
  1044. <bb 13> :
  1045. vPortRaiseBASEPRI ();
  1046. <bb 14> :
  1047. goto <bb 14>; [INV]
  1048. <bb 15> :
  1049. vPortEnterCritical ();
  1050. uxSemaphoreCount = pxQueue->uxMessagesWaiting;
  1051. if (uxSemaphoreCount != 0)
  1052. goto <bb 16>; [INV]
  1053. else
  1054. goto <bb 22>; [INV]
  1055. <bb 16> :
  1056. _4 = uxSemaphoreCount + 4294967295;
  1057. pxQueue->uxMessagesWaiting = _4;
  1058. _5 = pxQueue->pcHead;
  1059. if (_5 == 0B)
  1060. goto <bb 17>; [INV]
  1061. else
  1062. goto <bb 18>; [INV]
  1063. <bb 17> :
  1064. _6 = pvTaskIncrementMutexHeldCount ();
  1065. pxQueue->u.xSemaphore.xMutexHolder = _6;
  1066. <bb 18> :
  1067. _7 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  1068. if (_7 != 0)
  1069. goto <bb 19>; [INV]
  1070. else
  1071. goto <bb 21>; [INV]
  1072. <bb 19> :
  1073. _8 = &pxQueue->xTasksWaitingToSend;
  1074. _9 = xTaskRemoveFromEventList (_8);
  1075. if (_9 != 0)
  1076. goto <bb 20>; [INV]
  1077. else
  1078. goto <bb 21>; [INV]
  1079. <bb 20> :
  1080. _10 = 3758157060B;
  1081. *_10 = 268435456;
  1082. __asm__ __volatile__("dsb" : : : "memory");
  1083. __asm__ __volatile__("isb");
  1084. <bb 21> :
  1085. vPortExitCritical ();
  1086. D.7039 = 1;
  1087. // predicted unlikely by early return (on trees) predictor.
  1088. goto <bb 45>; [INV]
  1089. <bb 22> :
  1090. xTicksToWait.18_11 = xTicksToWait;
  1091. if (xTicksToWait.18_11 == 0)
  1092. goto <bb 23>; [INV]
  1093. else
  1094. goto <bb 27>; [INV]
  1095. <bb 23> :
  1096. if (xInheritanceOccurred != 0)
  1097. goto <bb 24>; [INV]
  1098. else
  1099. goto <bb 26>; [INV]
  1100. <bb 24> :
  1101. vPortRaiseBASEPRI ();
  1102. <bb 25> :
  1103. goto <bb 25>; [INV]
  1104. <bb 26> :
  1105. vPortExitCritical ();
  1106. D.7039 = 0;
  1107. // predicted unlikely by early return (on trees) predictor.
  1108. goto <bb 45>; [INV]
  1109. <bb 27> :
  1110. if (xEntryTimeSet == 0)
  1111. goto <bb 28>; [INV]
  1112. else
  1113. goto <bb 29>; [INV]
  1114. <bb 28> :
  1115. vTaskInternalSetTimeOutState (&xTimeOut);
  1116. xEntryTimeSet = 1;
  1117. <bb 29> :
  1118. vPortExitCritical ();
  1119. vTaskSuspendAll ();
  1120. vPortEnterCritical ();
  1121. _12 = pxQueue->cRxLock;
  1122. if (_12 == -1)
  1123. goto <bb 30>; [INV]
  1124. else
  1125. goto <bb 31>; [INV]
  1126. <bb 30> :
  1127. pxQueue->cRxLock = 0;
  1128. <bb 31> :
  1129. _13 = pxQueue->cTxLock;
  1130. if (_13 == -1)
  1131. goto <bb 32>; [INV]
  1132. else
  1133. goto <bb 33>; [INV]
  1134. <bb 32> :
  1135. pxQueue->cTxLock = 0;
  1136. <bb 33> :
  1137. vPortExitCritical ();
  1138. _14 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  1139. if (_14 == 0)
  1140. goto <bb 34>; [INV]
  1141. else
  1142. goto <bb 40>; [INV]
  1143. <bb 34> :
  1144. _15 = prvIsQueueEmpty (pxQueue);
  1145. if (_15 != 0)
  1146. goto <bb 35>; [INV]
  1147. else
  1148. goto <bb 39>; [INV]
  1149. <bb 35> :
  1150. _16 = pxQueue->pcHead;
  1151. if (_16 == 0B)
  1152. goto <bb 36>; [INV]
  1153. else
  1154. goto <bb 37>; [INV]
  1155. <bb 36> :
  1156. vPortEnterCritical ();
  1157. _17 = pxQueue->u.xSemaphore.xMutexHolder;
  1158. xInheritanceOccurred = xTaskPriorityInherit (_17);
  1159. vPortExitCritical ();
  1160. <bb 37> :
  1161. _18 = &pxQueue->xTasksWaitingToReceive;
  1162. xTicksToWait.19_19 = xTicksToWait;
  1163. vTaskPlaceOnEventList (_18, xTicksToWait.19_19);
  1164. prvUnlockQueue (pxQueue);
  1165. _20 = xTaskResumeAll ();
  1166. if (_20 == 0)
  1167. goto <bb 38>; [INV]
  1168. else
  1169. goto <bb 44>; [INV]
  1170. <bb 38> :
  1171. _21 = 3758157060B;
  1172. *_21 = 268435456;
  1173. __asm__ __volatile__("dsb" : : : "memory");
  1174. __asm__ __volatile__("isb");
  1175. goto <bb 44>; [INV]
  1176. <bb 39> :
  1177. prvUnlockQueue (pxQueue);
  1178. xTaskResumeAll ();
  1179. goto <bb 44>; [INV]
  1180. <bb 40> :
  1181. prvUnlockQueue (pxQueue);
  1182. xTaskResumeAll ();
  1183. _22 = prvIsQueueEmpty (pxQueue);
  1184. if (_22 != 0)
  1185. goto <bb 41>; [INV]
  1186. else
  1187. goto <bb 44>; [INV]
  1188. <bb 41> :
  1189. if (xInheritanceOccurred != 0)
  1190. goto <bb 42>; [INV]
  1191. else
  1192. goto <bb 43>; [INV]
  1193. <bb 42> :
  1194. vPortEnterCritical ();
  1195. uxHighestWaitingPriority = prvGetDisinheritPriorityAfterTimeout (pxQueue);
  1196. _23 = pxQueue->u.xSemaphore.xMutexHolder;
  1197. vTaskPriorityDisinheritAfterTimeout (_23, uxHighestWaitingPriority);
  1198. vPortExitCritical ();
  1199. <bb 43> :
  1200. D.7039 = 0;
  1201. // predicted unlikely by early return (on trees) predictor.
  1202. goto <bb 45>; [INV]
  1203. <bb 44> :
  1204. goto <bb 15>; [INV]
  1205. <bb 45> :
  1206. xTimeOut = {CLOBBER};
  1207. <bb 46> :
  1208. <L54>:
  1209. return D.7039;
  1210. }
  1211. xQueueReceive (struct QueueDefinition * xQueue, void * const pvBuffer, TickType_t xTicksToWait)
  1212. {
  1213. const UBaseType_t uxMessagesWaiting;
  1214. struct Queue_t * const pxQueue;
  1215. struct TimeOut_t xTimeOut;
  1216. BaseType_t xEntryTimeSet;
  1217. BaseType_t D.6994;
  1218. int iftmp.12;
  1219. int iftmp.11;
  1220. <bb 2> :
  1221. xEntryTimeSet = 0;
  1222. pxQueue = xQueue;
  1223. if (pxQueue == 0B)
  1224. goto <bb 3>; [INV]
  1225. else
  1226. goto <bb 5>; [INV]
  1227. <bb 3> :
  1228. vPortRaiseBASEPRI ();
  1229. <bb 4> :
  1230. goto <bb 4>; [INV]
  1231. <bb 5> :
  1232. if (pvBuffer != 0B)
  1233. goto <bb 7>; [INV]
  1234. else
  1235. goto <bb 6>; [INV]
  1236. <bb 6> :
  1237. _1 = pxQueue->uxItemSize;
  1238. if (_1 == 0)
  1239. goto <bb 7>; [INV]
  1240. else
  1241. goto <bb 8>; [INV]
  1242. <bb 7> :
  1243. iftmp.11 = 1;
  1244. goto <bb 9>; [INV]
  1245. <bb 8> :
  1246. iftmp.11 = 0;
  1247. <bb 9> :
  1248. if (iftmp.11 == 0)
  1249. goto <bb 10>; [INV]
  1250. else
  1251. goto <bb 12>; [INV]
  1252. <bb 10> :
  1253. vPortRaiseBASEPRI ();
  1254. <bb 11> :
  1255. goto <bb 11>; [INV]
  1256. <bb 12> :
  1257. _2 = xTaskGetSchedulerState ();
  1258. if (_2 != 0)
  1259. goto <bb 14>; [INV]
  1260. else
  1261. goto <bb 13>; [INV]
  1262. <bb 13> :
  1263. xTicksToWait.13_3 = xTicksToWait;
  1264. if (xTicksToWait.13_3 == 0)
  1265. goto <bb 14>; [INV]
  1266. else
  1267. goto <bb 15>; [INV]
  1268. <bb 14> :
  1269. iftmp.12 = 1;
  1270. goto <bb 16>; [INV]
  1271. <bb 15> :
  1272. iftmp.12 = 0;
  1273. <bb 16> :
  1274. if (iftmp.12 == 0)
  1275. goto <bb 17>; [INV]
  1276. else
  1277. goto <bb 19>; [INV]
  1278. <bb 17> :
  1279. vPortRaiseBASEPRI ();
  1280. <bb 18> :
  1281. goto <bb 18>; [INV]
  1282. <bb 19> :
  1283. vPortEnterCritical ();
  1284. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  1285. if (uxMessagesWaiting != 0)
  1286. goto <bb 20>; [INV]
  1287. else
  1288. goto <bb 24>; [INV]
  1289. <bb 20> :
  1290. prvCopyDataFromQueue (pxQueue, pvBuffer);
  1291. _4 = uxMessagesWaiting + 4294967295;
  1292. pxQueue->uxMessagesWaiting = _4;
  1293. _5 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  1294. if (_5 != 0)
  1295. goto <bb 21>; [INV]
  1296. else
  1297. goto <bb 23>; [INV]
  1298. <bb 21> :
  1299. _6 = &pxQueue->xTasksWaitingToSend;
  1300. _7 = xTaskRemoveFromEventList (_6);
  1301. if (_7 != 0)
  1302. goto <bb 22>; [INV]
  1303. else
  1304. goto <bb 23>; [INV]
  1305. <bb 22> :
  1306. _8 = 3758157060B;
  1307. *_8 = 268435456;
  1308. __asm__ __volatile__("dsb" : : : "memory");
  1309. __asm__ __volatile__("isb");
  1310. <bb 23> :
  1311. vPortExitCritical ();
  1312. D.6994 = 1;
  1313. // predicted unlikely by early return (on trees) predictor.
  1314. goto <bb 40>; [INV]
  1315. <bb 24> :
  1316. xTicksToWait.14_9 = xTicksToWait;
  1317. if (xTicksToWait.14_9 == 0)
  1318. goto <bb 25>; [INV]
  1319. else
  1320. goto <bb 26>; [INV]
  1321. <bb 25> :
  1322. vPortExitCritical ();
  1323. D.6994 = 0;
  1324. // predicted unlikely by early return (on trees) predictor.
  1325. goto <bb 40>; [INV]
  1326. <bb 26> :
  1327. if (xEntryTimeSet == 0)
  1328. goto <bb 27>; [INV]
  1329. else
  1330. goto <bb 28>; [INV]
  1331. <bb 27> :
  1332. vTaskInternalSetTimeOutState (&xTimeOut);
  1333. xEntryTimeSet = 1;
  1334. <bb 28> :
  1335. vPortExitCritical ();
  1336. vTaskSuspendAll ();
  1337. vPortEnterCritical ();
  1338. _10 = pxQueue->cRxLock;
  1339. if (_10 == -1)
  1340. goto <bb 29>; [INV]
  1341. else
  1342. goto <bb 30>; [INV]
  1343. <bb 29> :
  1344. pxQueue->cRxLock = 0;
  1345. <bb 30> :
  1346. _11 = pxQueue->cTxLock;
  1347. if (_11 == -1)
  1348. goto <bb 31>; [INV]
  1349. else
  1350. goto <bb 32>; [INV]
  1351. <bb 31> :
  1352. pxQueue->cTxLock = 0;
  1353. <bb 32> :
  1354. vPortExitCritical ();
  1355. _12 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  1356. if (_12 == 0)
  1357. goto <bb 33>; [INV]
  1358. else
  1359. goto <bb 37>; [INV]
  1360. <bb 33> :
  1361. _13 = prvIsQueueEmpty (pxQueue);
  1362. if (_13 != 0)
  1363. goto <bb 34>; [INV]
  1364. else
  1365. goto <bb 36>; [INV]
  1366. <bb 34> :
  1367. _14 = &pxQueue->xTasksWaitingToReceive;
  1368. xTicksToWait.15_15 = xTicksToWait;
  1369. vTaskPlaceOnEventList (_14, xTicksToWait.15_15);
  1370. prvUnlockQueue (pxQueue);
  1371. _16 = xTaskResumeAll ();
  1372. if (_16 == 0)
  1373. goto <bb 35>; [INV]
  1374. else
  1375. goto <bb 39>; [INV]
  1376. <bb 35> :
  1377. _17 = 3758157060B;
  1378. *_17 = 268435456;
  1379. __asm__ __volatile__("dsb" : : : "memory");
  1380. __asm__ __volatile__("isb");
  1381. goto <bb 39>; [INV]
  1382. <bb 36> :
  1383. prvUnlockQueue (pxQueue);
  1384. xTaskResumeAll ();
  1385. goto <bb 39>; [INV]
  1386. <bb 37> :
  1387. prvUnlockQueue (pxQueue);
  1388. xTaskResumeAll ();
  1389. _18 = prvIsQueueEmpty (pxQueue);
  1390. if (_18 != 0)
  1391. goto <bb 38>; [INV]
  1392. else
  1393. goto <bb 39>; [INV]
  1394. <bb 38> :
  1395. D.6994 = 0;
  1396. // predicted unlikely by early return (on trees) predictor.
  1397. goto <bb 40>; [INV]
  1398. <bb 39> :
  1399. goto <bb 19>; [INV]
  1400. <bb 40> :
  1401. xTimeOut = {CLOBBER};
  1402. <bb 41> :
  1403. <L47>:
  1404. return D.6994;
  1405. }
  1406. xQueueGiveFromISR (struct QueueDefinition * xQueue, BaseType_t * const pxHigherPriorityTaskWoken)
  1407. {
  1408. const int8_t cTxLock;
  1409. const UBaseType_t uxMessagesWaiting;
  1410. struct Queue_t * const pxQueue;
  1411. UBaseType_t uxSavedInterruptStatus;
  1412. BaseType_t xReturn;
  1413. BaseType_t D.6968;
  1414. int iftmp.9;
  1415. <bb 2> :
  1416. pxQueue = xQueue;
  1417. if (pxQueue == 0B)
  1418. goto <bb 3>; [INV]
  1419. else
  1420. goto <bb 5>; [INV]
  1421. <bb 3> :
  1422. vPortRaiseBASEPRI ();
  1423. <bb 4> :
  1424. goto <bb 4>; [INV]
  1425. <bb 5> :
  1426. _1 = pxQueue->uxItemSize;
  1427. if (_1 != 0)
  1428. goto <bb 6>; [INV]
  1429. else
  1430. goto <bb 8>; [INV]
  1431. <bb 6> :
  1432. vPortRaiseBASEPRI ();
  1433. <bb 7> :
  1434. goto <bb 7>; [INV]
  1435. <bb 8> :
  1436. _2 = pxQueue->pcHead;
  1437. if (_2 != 0B)
  1438. goto <bb 10>; [INV]
  1439. else
  1440. goto <bb 9>; [INV]
  1441. <bb 9> :
  1442. _3 = pxQueue->u.xSemaphore.xMutexHolder;
  1443. if (_3 == 0B)
  1444. goto <bb 10>; [INV]
  1445. else
  1446. goto <bb 11>; [INV]
  1447. <bb 10> :
  1448. iftmp.9 = 1;
  1449. goto <bb 12>; [INV]
  1450. <bb 11> :
  1451. iftmp.9 = 0;
  1452. <bb 12> :
  1453. if (iftmp.9 == 0)
  1454. goto <bb 13>; [INV]
  1455. else
  1456. goto <bb 15>; [INV]
  1457. <bb 13> :
  1458. vPortRaiseBASEPRI ();
  1459. <bb 14> :
  1460. goto <bb 14>; [INV]
  1461. <bb 15> :
  1462. vPortValidateInterruptPriority ();
  1463. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  1464. uxMessagesWaiting = pxQueue->uxMessagesWaiting;
  1465. _4 = pxQueue->uxLength;
  1466. if (uxMessagesWaiting < _4)
  1467. goto <bb 16>; [INV]
  1468. else
  1469. goto <bb 26>; [INV]
  1470. <bb 16> :
  1471. cTxLock = pxQueue->cTxLock;
  1472. _5 = uxMessagesWaiting + 1;
  1473. pxQueue->uxMessagesWaiting = _5;
  1474. if (cTxLock == -1)
  1475. goto <bb 17>; [INV]
  1476. else
  1477. goto <bb 21>; [INV]
  1478. <bb 17> :
  1479. _6 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  1480. if (_6 != 0)
  1481. goto <bb 18>; [INV]
  1482. else
  1483. goto <bb 25>; [INV]
  1484. <bb 18> :
  1485. _7 = &pxQueue->xTasksWaitingToReceive;
  1486. _8 = xTaskRemoveFromEventList (_7);
  1487. if (_8 != 0)
  1488. goto <bb 19>; [INV]
  1489. else
  1490. goto <bb 25>; [INV]
  1491. <bb 19> :
  1492. if (pxHigherPriorityTaskWoken != 0B)
  1493. goto <bb 20>; [INV]
  1494. else
  1495. goto <bb 25>; [INV]
  1496. <bb 20> :
  1497. *pxHigherPriorityTaskWoken = 1;
  1498. goto <bb 25>; [INV]
  1499. <bb 21> :
  1500. if (cTxLock == 127)
  1501. goto <bb 22>; [INV]
  1502. else
  1503. goto <bb 24>; [INV]
  1504. <bb 22> :
  1505. vPortRaiseBASEPRI ();
  1506. <bb 23> :
  1507. goto <bb 23>; [INV]
  1508. <bb 24> :
  1509. cTxLock.10_9 = (unsigned char) cTxLock;
  1510. _10 = cTxLock.10_9 + 1;
  1511. _11 = (signed char) _10;
  1512. pxQueue->cTxLock = _11;
  1513. <bb 25> :
  1514. xReturn = 1;
  1515. goto <bb 27>; [INV]
  1516. <bb 26> :
  1517. xReturn = 0;
  1518. <bb 27> :
  1519. vPortSetBASEPRI (uxSavedInterruptStatus);
  1520. D.6968 = xReturn;
  1521. <bb 28> :
  1522. <L31>:
  1523. return D.6968;
  1524. }
  1525. xQueueGenericSendFromISR (struct QueueDefinition * xQueue, const void * const pvItemToQueue, BaseType_t * const pxHigherPriorityTaskWoken, const BaseType_t xCopyPosition)
  1526. {
  1527. const UBaseType_t uxPreviousMessagesWaiting;
  1528. const int8_t cTxLock;
  1529. struct Queue_t * const pxQueue;
  1530. UBaseType_t uxSavedInterruptStatus;
  1531. BaseType_t xReturn;
  1532. BaseType_t D.6936;
  1533. int iftmp.7;
  1534. int iftmp.6;
  1535. <bb 2> :
  1536. pxQueue = xQueue;
  1537. if (pxQueue == 0B)
  1538. goto <bb 3>; [INV]
  1539. else
  1540. goto <bb 5>; [INV]
  1541. <bb 3> :
  1542. vPortRaiseBASEPRI ();
  1543. <bb 4> :
  1544. goto <bb 4>; [INV]
  1545. <bb 5> :
  1546. if (pvItemToQueue != 0B)
  1547. goto <bb 7>; [INV]
  1548. else
  1549. goto <bb 6>; [INV]
  1550. <bb 6> :
  1551. _1 = pxQueue->uxItemSize;
  1552. if (_1 == 0)
  1553. goto <bb 7>; [INV]
  1554. else
  1555. goto <bb 8>; [INV]
  1556. <bb 7> :
  1557. iftmp.6 = 1;
  1558. goto <bb 9>; [INV]
  1559. <bb 8> :
  1560. iftmp.6 = 0;
  1561. <bb 9> :
  1562. if (iftmp.6 == 0)
  1563. goto <bb 10>; [INV]
  1564. else
  1565. goto <bb 12>; [INV]
  1566. <bb 10> :
  1567. vPortRaiseBASEPRI ();
  1568. <bb 11> :
  1569. goto <bb 11>; [INV]
  1570. <bb 12> :
  1571. if (xCopyPosition != 2)
  1572. goto <bb 14>; [INV]
  1573. else
  1574. goto <bb 13>; [INV]
  1575. <bb 13> :
  1576. _2 = pxQueue->uxLength;
  1577. if (_2 == 1)
  1578. goto <bb 14>; [INV]
  1579. else
  1580. goto <bb 15>; [INV]
  1581. <bb 14> :
  1582. iftmp.7 = 1;
  1583. goto <bb 16>; [INV]
  1584. <bb 15> :
  1585. iftmp.7 = 0;
  1586. <bb 16> :
  1587. if (iftmp.7 == 0)
  1588. goto <bb 17>; [INV]
  1589. else
  1590. goto <bb 19>; [INV]
  1591. <bb 17> :
  1592. vPortRaiseBASEPRI ();
  1593. <bb 18> :
  1594. goto <bb 18>; [INV]
  1595. <bb 19> :
  1596. vPortValidateInterruptPriority ();
  1597. uxSavedInterruptStatus = ulPortRaiseBASEPRI ();
  1598. _3 = pxQueue->uxMessagesWaiting;
  1599. _4 = pxQueue->uxLength;
  1600. if (_3 < _4)
  1601. goto <bb 21>; [INV]
  1602. else
  1603. goto <bb 20>; [INV]
  1604. <bb 20> :
  1605. if (xCopyPosition == 2)
  1606. goto <bb 21>; [INV]
  1607. else
  1608. goto <bb 31>; [INV]
  1609. <bb 21> :
  1610. cTxLock = pxQueue->cTxLock;
  1611. uxPreviousMessagesWaiting = pxQueue->uxMessagesWaiting;
  1612. prvCopyDataToQueue (pxQueue, pvItemToQueue, xCopyPosition);
  1613. if (cTxLock == -1)
  1614. goto <bb 22>; [INV]
  1615. else
  1616. goto <bb 26>; [INV]
  1617. <bb 22> :
  1618. _5 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  1619. if (_5 != 0)
  1620. goto <bb 23>; [INV]
  1621. else
  1622. goto <bb 30>; [INV]
  1623. <bb 23> :
  1624. _6 = &pxQueue->xTasksWaitingToReceive;
  1625. _7 = xTaskRemoveFromEventList (_6);
  1626. if (_7 != 0)
  1627. goto <bb 24>; [INV]
  1628. else
  1629. goto <bb 30>; [INV]
  1630. <bb 24> :
  1631. if (pxHigherPriorityTaskWoken != 0B)
  1632. goto <bb 25>; [INV]
  1633. else
  1634. goto <bb 30>; [INV]
  1635. <bb 25> :
  1636. *pxHigherPriorityTaskWoken = 1;
  1637. goto <bb 30>; [INV]
  1638. <bb 26> :
  1639. if (cTxLock == 127)
  1640. goto <bb 27>; [INV]
  1641. else
  1642. goto <bb 29>; [INV]
  1643. <bb 27> :
  1644. vPortRaiseBASEPRI ();
  1645. <bb 28> :
  1646. goto <bb 28>; [INV]
  1647. <bb 29> :
  1648. cTxLock.8_8 = (unsigned char) cTxLock;
  1649. _9 = cTxLock.8_8 + 1;
  1650. _10 = (signed char) _9;
  1651. pxQueue->cTxLock = _10;
  1652. <bb 30> :
  1653. xReturn = 1;
  1654. goto <bb 32>; [INV]
  1655. <bb 31> :
  1656. xReturn = 0;
  1657. <bb 32> :
  1658. vPortSetBASEPRI (uxSavedInterruptStatus);
  1659. D.6936 = xReturn;
  1660. <bb 33> :
  1661. <L36>:
  1662. return D.6936;
  1663. }
  1664. xQueueGenericSend (struct QueueDefinition * xQueue, const void * const pvItemToQueue, TickType_t xTicksToWait, const BaseType_t xCopyPosition)
  1665. {
  1666. struct Queue_t * const pxQueue;
  1667. struct TimeOut_t xTimeOut;
  1668. BaseType_t xYieldRequired;
  1669. BaseType_t xEntryTimeSet;
  1670. BaseType_t D.6882;
  1671. int iftmp.2;
  1672. int iftmp.1;
  1673. int iftmp.0;
  1674. <bb 2> :
  1675. xEntryTimeSet = 0;
  1676. pxQueue = xQueue;
  1677. if (pxQueue == 0B)
  1678. goto <bb 3>; [INV]
  1679. else
  1680. goto <bb 5>; [INV]
  1681. <bb 3> :
  1682. vPortRaiseBASEPRI ();
  1683. <bb 4> :
  1684. goto <bb 4>; [INV]
  1685. <bb 5> :
  1686. if (pvItemToQueue != 0B)
  1687. goto <bb 7>; [INV]
  1688. else
  1689. goto <bb 6>; [INV]
  1690. <bb 6> :
  1691. _1 = pxQueue->uxItemSize;
  1692. if (_1 == 0)
  1693. goto <bb 7>; [INV]
  1694. else
  1695. goto <bb 8>; [INV]
  1696. <bb 7> :
  1697. iftmp.0 = 1;
  1698. goto <bb 9>; [INV]
  1699. <bb 8> :
  1700. iftmp.0 = 0;
  1701. <bb 9> :
  1702. if (iftmp.0 == 0)
  1703. goto <bb 10>; [INV]
  1704. else
  1705. goto <bb 12>; [INV]
  1706. <bb 10> :
  1707. vPortRaiseBASEPRI ();
  1708. <bb 11> :
  1709. goto <bb 11>; [INV]
  1710. <bb 12> :
  1711. if (xCopyPosition != 2)
  1712. goto <bb 14>; [INV]
  1713. else
  1714. goto <bb 13>; [INV]
  1715. <bb 13> :
  1716. _2 = pxQueue->uxLength;
  1717. if (_2 == 1)
  1718. goto <bb 14>; [INV]
  1719. else
  1720. goto <bb 15>; [INV]
  1721. <bb 14> :
  1722. iftmp.1 = 1;
  1723. goto <bb 16>; [INV]
  1724. <bb 15> :
  1725. iftmp.1 = 0;
  1726. <bb 16> :
  1727. if (iftmp.1 == 0)
  1728. goto <bb 17>; [INV]
  1729. else
  1730. goto <bb 19>; [INV]
  1731. <bb 17> :
  1732. vPortRaiseBASEPRI ();
  1733. <bb 18> :
  1734. goto <bb 18>; [INV]
  1735. <bb 19> :
  1736. _3 = xTaskGetSchedulerState ();
  1737. if (_3 != 0)
  1738. goto <bb 21>; [INV]
  1739. else
  1740. goto <bb 20>; [INV]
  1741. <bb 20> :
  1742. xTicksToWait.3_4 = xTicksToWait;
  1743. if (xTicksToWait.3_4 == 0)
  1744. goto <bb 21>; [INV]
  1745. else
  1746. goto <bb 22>; [INV]
  1747. <bb 21> :
  1748. iftmp.2 = 1;
  1749. goto <bb 23>; [INV]
  1750. <bb 22> :
  1751. iftmp.2 = 0;
  1752. <bb 23> :
  1753. if (iftmp.2 == 0)
  1754. goto <bb 24>; [INV]
  1755. else
  1756. goto <bb 26>; [INV]
  1757. <bb 24> :
  1758. vPortRaiseBASEPRI ();
  1759. <bb 25> :
  1760. goto <bb 25>; [INV]
  1761. <bb 26> :
  1762. vPortEnterCritical ();
  1763. _5 = pxQueue->uxMessagesWaiting;
  1764. _6 = pxQueue->uxLength;
  1765. if (_5 < _6)
  1766. goto <bb 28>; [INV]
  1767. else
  1768. goto <bb 27>; [INV]
  1769. <bb 27> :
  1770. if (xCopyPosition == 2)
  1771. goto <bb 28>; [INV]
  1772. else
  1773. goto <bb 34>; [INV]
  1774. <bb 28> :
  1775. xYieldRequired = prvCopyDataToQueue (pxQueue, pvItemToQueue, xCopyPosition);
  1776. _7 = pxQueue->xTasksWaitingToReceive.uxNumberOfItems;
  1777. if (_7 != 0)
  1778. goto <bb 29>; [INV]
  1779. else
  1780. goto <bb 31>; [INV]
  1781. <bb 29> :
  1782. _8 = &pxQueue->xTasksWaitingToReceive;
  1783. _9 = xTaskRemoveFromEventList (_8);
  1784. if (_9 != 0)
  1785. goto <bb 30>; [INV]
  1786. else
  1787. goto <bb 33>; [INV]
  1788. <bb 30> :
  1789. _10 = 3758157060B;
  1790. *_10 = 268435456;
  1791. __asm__ __volatile__("dsb" : : : "memory");
  1792. __asm__ __volatile__("isb");
  1793. goto <bb 33>; [INV]
  1794. <bb 31> :
  1795. if (xYieldRequired != 0)
  1796. goto <bb 32>; [INV]
  1797. else
  1798. goto <bb 33>; [INV]
  1799. <bb 32> :
  1800. _11 = 3758157060B;
  1801. *_11 = 268435456;
  1802. __asm__ __volatile__("dsb" : : : "memory");
  1803. __asm__ __volatile__("isb");
  1804. <bb 33> :
  1805. vPortExitCritical ();
  1806. D.6882 = 1;
  1807. // predicted unlikely by early return (on trees) predictor.
  1808. goto <bb 49>; [INV]
  1809. <bb 34> :
  1810. xTicksToWait.4_12 = xTicksToWait;
  1811. if (xTicksToWait.4_12 == 0)
  1812. goto <bb 35>; [INV]
  1813. else
  1814. goto <bb 36>; [INV]
  1815. <bb 35> :
  1816. vPortExitCritical ();
  1817. D.6882 = 0;
  1818. // predicted unlikely by early return (on trees) predictor.
  1819. goto <bb 49>; [INV]
  1820. <bb 36> :
  1821. if (xEntryTimeSet == 0)
  1822. goto <bb 37>; [INV]
  1823. else
  1824. goto <bb 38>; [INV]
  1825. <bb 37> :
  1826. vTaskInternalSetTimeOutState (&xTimeOut);
  1827. xEntryTimeSet = 1;
  1828. <bb 38> :
  1829. vPortExitCritical ();
  1830. vTaskSuspendAll ();
  1831. vPortEnterCritical ();
  1832. _13 = pxQueue->cRxLock;
  1833. if (_13 == -1)
  1834. goto <bb 39>; [INV]
  1835. else
  1836. goto <bb 40>; [INV]
  1837. <bb 39> :
  1838. pxQueue->cRxLock = 0;
  1839. <bb 40> :
  1840. _14 = pxQueue->cTxLock;
  1841. if (_14 == -1)
  1842. goto <bb 41>; [INV]
  1843. else
  1844. goto <bb 42>; [INV]
  1845. <bb 41> :
  1846. pxQueue->cTxLock = 0;
  1847. <bb 42> :
  1848. vPortExitCritical ();
  1849. _15 = xTaskCheckForTimeOut (&xTimeOut, &xTicksToWait);
  1850. if (_15 == 0)
  1851. goto <bb 43>; [INV]
  1852. else
  1853. goto <bb 47>; [INV]
  1854. <bb 43> :
  1855. _16 = prvIsQueueFull (pxQueue);
  1856. if (_16 != 0)
  1857. goto <bb 44>; [INV]
  1858. else
  1859. goto <bb 46>; [INV]
  1860. <bb 44> :
  1861. _17 = &pxQueue->xTasksWaitingToSend;
  1862. xTicksToWait.5_18 = xTicksToWait;
  1863. vTaskPlaceOnEventList (_17, xTicksToWait.5_18);
  1864. prvUnlockQueue (pxQueue);
  1865. _19 = xTaskResumeAll ();
  1866. if (_19 == 0)
  1867. goto <bb 45>; [INV]
  1868. else
  1869. goto <bb 48>; [INV]
  1870. <bb 45> :
  1871. _20 = 3758157060B;
  1872. *_20 = 268435456;
  1873. __asm__ __volatile__("dsb" : : : "memory");
  1874. __asm__ __volatile__("isb");
  1875. goto <bb 48>; [INV]
  1876. <bb 46> :
  1877. prvUnlockQueue (pxQueue);
  1878. xTaskResumeAll ();
  1879. goto <bb 48>; [INV]
  1880. <bb 47> :
  1881. prvUnlockQueue (pxQueue);
  1882. xTaskResumeAll ();
  1883. D.6882 = 0;
  1884. // predicted unlikely by early return (on trees) predictor.
  1885. goto <bb 49>; [INV]
  1886. <bb 48> :
  1887. goto <bb 26>; [INV]
  1888. <bb 49> :
  1889. xTimeOut = {CLOBBER};
  1890. <bb 50> :
  1891. <L55>:
  1892. return D.6882;
  1893. }
  1894. xQueueCreateCountingSemaphore (const UBaseType_t uxMaxCount, const UBaseType_t uxInitialCount)
  1895. {
  1896. struct QueueDefinition * xHandle;
  1897. struct QueueDefinition * D.6845;
  1898. <bb 2> :
  1899. xHandle = 0B;
  1900. if (uxMaxCount != 0)
  1901. goto <bb 3>; [INV]
  1902. else
  1903. goto <bb 7>; [INV]
  1904. <bb 3> :
  1905. if (uxInitialCount <= uxMaxCount)
  1906. goto <bb 4>; [INV]
  1907. else
  1908. goto <bb 7>; [INV]
  1909. <bb 4> :
  1910. xHandle = xQueueGenericCreate (uxMaxCount, 0, 2);
  1911. if (xHandle != 0B)
  1912. goto <bb 5>; [INV]
  1913. else
  1914. goto <bb 6>; [INV]
  1915. <bb 5> :
  1916. MEM[(struct Queue_t *)xHandle].uxMessagesWaiting = uxInitialCount;
  1917. <bb 6> :
  1918. goto <bb 10>; [INV]
  1919. <bb 7> :
  1920. if (xHandle == 0B)
  1921. goto <bb 8>; [INV]
  1922. else
  1923. goto <bb 10>; [INV]
  1924. <bb 8> :
  1925. vPortRaiseBASEPRI ();
  1926. <bb 9> :
  1927. goto <bb 9>; [INV]
  1928. <bb 10> :
  1929. D.6845 = xHandle;
  1930. <bb 11> :
  1931. <L10>:
  1932. return D.6845;
  1933. }
  1934. xQueueTakeMutexRecursive (struct QueueDefinition * xMutex, TickType_t xTicksToWait)
  1935. {
  1936. struct Queue_t * const pxMutex;
  1937. BaseType_t xReturn;
  1938. BaseType_t D.6834;
  1939. <bb 2> :
  1940. pxMutex = xMutex;
  1941. if (pxMutex == 0B)
  1942. goto <bb 3>; [INV]
  1943. else
  1944. goto <bb 5>; [INV]
  1945. <bb 3> :
  1946. vPortRaiseBASEPRI ();
  1947. <bb 4> :
  1948. goto <bb 4>; [INV]
  1949. <bb 5> :
  1950. _1 = pxMutex->u.xSemaphore.xMutexHolder;
  1951. _2 = xTaskGetCurrentTaskHandle ();
  1952. if (_1 == _2)
  1953. goto <bb 6>; [INV]
  1954. else
  1955. goto <bb 7>; [INV]
  1956. <bb 6> :
  1957. _3 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  1958. _4 = _3 + 1;
  1959. pxMutex->u.xSemaphore.uxRecursiveCallCount = _4;
  1960. xReturn = 1;
  1961. goto <bb 9>; [INV]
  1962. <bb 7> :
  1963. xReturn = xQueueSemaphoreTake (pxMutex, xTicksToWait);
  1964. if (xReturn != 0)
  1965. goto <bb 8>; [INV]
  1966. else
  1967. goto <bb 9>; [INV]
  1968. <bb 8> :
  1969. _5 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  1970. _6 = _5 + 1;
  1971. pxMutex->u.xSemaphore.uxRecursiveCallCount = _6;
  1972. <bb 9> :
  1973. D.6834 = xReturn;
  1974. <bb 10> :
  1975. <L9>:
  1976. return D.6834;
  1977. }
  1978. xQueueGiveMutexRecursive (struct QueueDefinition * xMutex)
  1979. {
  1980. struct Queue_t * const pxMutex;
  1981. BaseType_t xReturn;
  1982. BaseType_t D.6824;
  1983. <bb 2> :
  1984. pxMutex = xMutex;
  1985. if (pxMutex == 0B)
  1986. goto <bb 3>; [INV]
  1987. else
  1988. goto <bb 5>; [INV]
  1989. <bb 3> :
  1990. vPortRaiseBASEPRI ();
  1991. <bb 4> :
  1992. goto <bb 4>; [INV]
  1993. <bb 5> :
  1994. _1 = pxMutex->u.xSemaphore.xMutexHolder;
  1995. _2 = xTaskGetCurrentTaskHandle ();
  1996. if (_1 == _2)
  1997. goto <bb 6>; [INV]
  1998. else
  1999. goto <bb 9>; [INV]
  2000. <bb 6> :
  2001. _3 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  2002. _4 = _3 + 4294967295;
  2003. pxMutex->u.xSemaphore.uxRecursiveCallCount = _4;
  2004. _5 = pxMutex->u.xSemaphore.uxRecursiveCallCount;
  2005. if (_5 == 0)
  2006. goto <bb 7>; [INV]
  2007. else
  2008. goto <bb 8>; [INV]
  2009. <bb 7> :
  2010. xQueueGenericSend (pxMutex, 0B, 0, 0);
  2011. <bb 8> :
  2012. xReturn = 1;
  2013. goto <bb 10>; [INV]
  2014. <bb 9> :
  2015. xReturn = 0;
  2016. <bb 10> :
  2017. D.6824 = xReturn;
  2018. <bb 11> :
  2019. <L9>:
  2020. return D.6824;
  2021. }
  2022. xQueueGetMutexHolderFromISR (struct QueueDefinition * xSemaphore)
  2023. {
  2024. struct tskTaskControlBlock * pxReturn;
  2025. struct tskTaskControlBlock * D.6814;
  2026. <bb 2> :
  2027. if (xSemaphore == 0B)
  2028. goto <bb 3>; [INV]
  2029. else
  2030. goto <bb 5>; [INV]
  2031. <bb 3> :
  2032. vPortRaiseBASEPRI ();
  2033. <bb 4> :
  2034. goto <bb 4>; [INV]
  2035. <bb 5> :
  2036. _1 = MEM[(struct Queue_t *)xSemaphore].pcHead;
  2037. if (_1 == 0B)
  2038. goto <bb 6>; [INV]
  2039. else
  2040. goto <bb 7>; [INV]
  2041. <bb 6> :
  2042. pxReturn = MEM[(struct Queue_t *)xSemaphore].u.xSemaphore.xMutexHolder;
  2043. goto <bb 8>; [INV]
  2044. <bb 7> :
  2045. pxReturn = 0B;
  2046. <bb 8> :
  2047. D.6814 = pxReturn;
  2048. <bb 9> :
  2049. <L6>:
  2050. return D.6814;
  2051. }
  2052. xQueueGetMutexHolder (struct QueueDefinition * xSemaphore)
  2053. {
  2054. struct Queue_t * const pxSemaphore;
  2055. struct tskTaskControlBlock * pxReturn;
  2056. struct tskTaskControlBlock * D.6807;
  2057. <bb 2> :
  2058. pxSemaphore = xSemaphore;
  2059. if (xSemaphore == 0B)
  2060. goto <bb 3>; [INV]
  2061. else
  2062. goto <bb 5>; [INV]
  2063. <bb 3> :
  2064. vPortRaiseBASEPRI ();
  2065. <bb 4> :
  2066. goto <bb 4>; [INV]
  2067. <bb 5> :
  2068. vPortEnterCritical ();
  2069. _1 = pxSemaphore->pcHead;
  2070. if (_1 == 0B)
  2071. goto <bb 6>; [INV]
  2072. else
  2073. goto <bb 7>; [INV]
  2074. <bb 6> :
  2075. pxReturn = pxSemaphore->u.xSemaphore.xMutexHolder;
  2076. goto <bb 8>; [INV]
  2077. <bb 7> :
  2078. pxReturn = 0B;
  2079. <bb 8> :
  2080. vPortExitCritical ();
  2081. D.6807 = pxReturn;
  2082. <bb 9> :
  2083. <L6>:
  2084. return D.6807;
  2085. }
  2086. xQueueCreateMutex (const uint8_t ucQueueType)
  2087. {
  2088. const UBaseType_t uxMutexSize;
  2089. const UBaseType_t uxMutexLength;
  2090. struct QueueDefinition * xNewQueue;
  2091. struct QueueDefinition * D.6800;
  2092. <bb 2> :
  2093. uxMutexLength = 1;
  2094. uxMutexSize = 0;
  2095. xNewQueue = xQueueGenericCreate (uxMutexLength, uxMutexSize, ucQueueType);
  2096. prvInitialiseMutex (xNewQueue);
  2097. D.6800 = xNewQueue;
  2098. <bb 3> :
  2099. <L0>:
  2100. return D.6800;
  2101. }
  2102. prvInitialiseMutex (struct Queue_t * pxNewQueue)
  2103. {
  2104. <bb 2> :
  2105. if (pxNewQueue != 0B)
  2106. goto <bb 3>; [INV]
  2107. else
  2108. goto <bb 4>; [INV]
  2109. <bb 3> :
  2110. pxNewQueue->u.xSemaphore.xMutexHolder = 0B;
  2111. pxNewQueue->pcHead = 0B;
  2112. pxNewQueue->u.xSemaphore.uxRecursiveCallCount = 0;
  2113. xQueueGenericSend (pxNewQueue, 0B, 0, 0);
  2114. <bb 4> :
  2115. return;
  2116. }
  2117. prvInitialiseNewQueue (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, uint8_t * pucQueueStorage, const uint8_t ucQueueType, struct Queue_t * pxNewQueue)
  2118. {
  2119. <bb 2> :
  2120. if (uxItemSize == 0)
  2121. goto <bb 3>; [INV]
  2122. else
  2123. goto <bb 4>; [INV]
  2124. <bb 3> :
  2125. pxNewQueue->pcHead = pxNewQueue;
  2126. goto <bb 5>; [INV]
  2127. <bb 4> :
  2128. pxNewQueue->pcHead = pucQueueStorage;
  2129. <bb 5> :
  2130. pxNewQueue->uxLength = uxQueueLength;
  2131. pxNewQueue->uxItemSize = uxItemSize;
  2132. xQueueGenericReset (pxNewQueue, 1);
  2133. pxNewQueue->ucQueueType = ucQueueType;
  2134. return;
  2135. }
  2136. xQueueGenericCreate (const UBaseType_t uxQueueLength, const UBaseType_t uxItemSize, const uint8_t ucQueueType)
  2137. {
  2138. uint8_t * pucQueueStorage;
  2139. size_t xQueueSizeInBytes;
  2140. struct Queue_t * pxNewQueue;
  2141. struct QueueDefinition * D.6792;
  2142. <bb 2> :
  2143. pxNewQueue = 0B;
  2144. if (uxQueueLength != 0)
  2145. goto <bb 3>; [INV]
  2146. else
  2147. goto <bb 8>; [INV]
  2148. <bb 3> :
  2149. _1 = .MUL_OVERFLOW (uxItemSize, uxQueueLength);
  2150. _2 = IMAGPART_EXPR <_1>;
  2151. if (_2 == 0)
  2152. goto <bb 4>; [INV]
  2153. else
  2154. goto <bb 8>; [INV]
  2155. <bb 4> :
  2156. _3 = uxQueueLength * uxItemSize;
  2157. if (_3 <= 4294967215)
  2158. goto <bb 5>; [INV]
  2159. else
  2160. goto <bb 8>; [INV]
  2161. <bb 5> :
  2162. xQueueSizeInBytes = uxQueueLength * uxItemSize;
  2163. _4 = xQueueSizeInBytes + 80;
  2164. pxNewQueue = pvPortMalloc (_4);
  2165. if (pxNewQueue != 0B)
  2166. goto <bb 6>; [INV]
  2167. else
  2168. goto <bb 7>; [INV]
  2169. <bb 6> :
  2170. pucQueueStorage = pxNewQueue;
  2171. pucQueueStorage = pucQueueStorage + 80;
  2172. prvInitialiseNewQueue (uxQueueLength, uxItemSize, pucQueueStorage, ucQueueType, pxNewQueue);
  2173. <bb 7> :
  2174. goto <bb 11>; [INV]
  2175. <bb 8> :
  2176. if (pxNewQueue == 0B)
  2177. goto <bb 9>; [INV]
  2178. else
  2179. goto <bb 11>; [INV]
  2180. <bb 9> :
  2181. vPortRaiseBASEPRI ();
  2182. <bb 10> :
  2183. goto <bb 10>; [INV]
  2184. <bb 11> :
  2185. D.6792 = pxNewQueue;
  2186. <bb 12> :
  2187. <L11>:
  2188. return D.6792;
  2189. }
  2190. xQueueGenericReset (struct QueueDefinition * xQueue, BaseType_t xNewQueue)
  2191. {
  2192. struct Queue_t * const pxQueue;
  2193. BaseType_t xReturn;
  2194. BaseType_t D.6780;
  2195. <bb 2> :
  2196. xReturn = 1;
  2197. pxQueue = xQueue;
  2198. if (pxQueue == 0B)
  2199. goto <bb 3>; [INV]
  2200. else
  2201. goto <bb 5>; [INV]
  2202. <bb 3> :
  2203. vPortRaiseBASEPRI ();
  2204. <bb 4> :
  2205. goto <bb 4>; [INV]
  2206. <bb 5> :
  2207. if (pxQueue != 0B)
  2208. goto <bb 6>; [INV]
  2209. else
  2210. goto <bb 14>; [INV]
  2211. <bb 6> :
  2212. _1 = pxQueue->uxLength;
  2213. if (_1 != 0)
  2214. goto <bb 7>; [INV]
  2215. else
  2216. goto <bb 14>; [INV]
  2217. <bb 7> :
  2218. _3 = pxQueue->uxItemSize;
  2219. _4 = pxQueue->uxLength;
  2220. _2 = .MUL_OVERFLOW (_3, _4);
  2221. _5 = IMAGPART_EXPR <_2>;
  2222. if (_5 == 0)
  2223. goto <bb 8>; [INV]
  2224. else
  2225. goto <bb 14>; [INV]
  2226. <bb 8> :
  2227. vPortEnterCritical ();
  2228. _6 = pxQueue->pcHead;
  2229. _7 = pxQueue->uxLength;
  2230. _8 = pxQueue->uxItemSize;
  2231. _9 = _7 * _8;
  2232. _10 = _6 + _9;
  2233. pxQueue->u.xQueue.pcTail = _10;
  2234. pxQueue->uxMessagesWaiting = 0;
  2235. _11 = pxQueue->pcHead;
  2236. pxQueue->pcWriteTo = _11;
  2237. _12 = pxQueue->pcHead;
  2238. _13 = pxQueue->uxLength;
  2239. _14 = _13 + 4294967295;
  2240. _15 = pxQueue->uxItemSize;
  2241. _16 = _14 * _15;
  2242. _17 = _12 + _16;
  2243. pxQueue->u.xQueue.pcReadFrom = _17;
  2244. pxQueue->cRxLock = -1;
  2245. pxQueue->cTxLock = -1;
  2246. if (xNewQueue == 0)
  2247. goto <bb 9>; [INV]
  2248. else
  2249. goto <bb 12>; [INV]
  2250. <bb 9> :
  2251. _18 = pxQueue->xTasksWaitingToSend.uxNumberOfItems;
  2252. if (_18 != 0)
  2253. goto <bb 10>; [INV]
  2254. else
  2255. goto <bb 13>; [INV]
  2256. <bb 10> :
  2257. _19 = &pxQueue->xTasksWaitingToSend;
  2258. _20 = xTaskRemoveFromEventList (_19);
  2259. if (_20 != 0)
  2260. goto <bb 11>; [INV]
  2261. else
  2262. goto <bb 13>; [INV]
  2263. <bb 11> :
  2264. _21 = 3758157060B;
  2265. *_21 = 268435456;
  2266. __asm__ __volatile__("dsb" : : : "memory");
  2267. __asm__ __volatile__("isb");
  2268. goto <bb 13>; [INV]
  2269. <bb 12> :
  2270. _22 = &pxQueue->xTasksWaitingToSend;
  2271. vListInitialise (_22);
  2272. _23 = &pxQueue->xTasksWaitingToReceive;
  2273. vListInitialise (_23);
  2274. <bb 13> :
  2275. vPortExitCritical ();
  2276. goto <bb 15>; [INV]
  2277. <bb 14> :
  2278. xReturn = 0;
  2279. <bb 15> :
  2280. if (xReturn == 0)
  2281. goto <bb 16>; [INV]
  2282. else
  2283. goto <bb 18>; [INV]
  2284. <bb 16> :
  2285. vPortRaiseBASEPRI ();
  2286. <bb 17> :
  2287. goto <bb 17>; [INV]
  2288. <bb 18> :
  2289. D.6780 = xReturn;
  2290. <bb 19> :
  2291. <L20>:
  2292. return D.6780;
  2293. }
  2294. __attribute__((always_inline))
  2295. vPortSetBASEPRI (uint32_t ulNewMaskValue)
  2296. {
  2297. <bb 2> :
  2298. __asm__ __volatile__(" msr basepri, %0 " : : "r" ulNewMaskValue : "memory");
  2299. return;
  2300. }
  2301. __attribute__((always_inline))
  2302. ulPortRaiseBASEPRI ()
  2303. {
  2304. uint32_t ulNewBASEPRI;
  2305. uint32_t ulOriginalBASEPRI;
  2306. uint32_t D.6938;
  2307. <bb 2> :
  2308. __asm__ __volatile__(" mrs %0, basepri
  2309. mov %1, %2
  2310. msr basepri, %1
  2311. isb
  2312. dsb
  2313. " : "=r" ulOriginalBASEPRI, "=r" ulNewBASEPRI : "i" 16 : "memory");
  2314. D.6938 = ulOriginalBASEPRI;
  2315. <bb 3> :
  2316. <L0>:
  2317. return D.6938;
  2318. }
  2319. __attribute__((always_inline))
  2320. vPortRaiseBASEPRI ()
  2321. {
  2322. uint32_t ulNewBASEPRI;
  2323. <bb 2> :
  2324. __asm__ __volatile__(" mov %0, %1
  2325. msr basepri, %0
  2326. isb
  2327. dsb
  2328. " : "=r" ulNewBASEPRI : "i" 16 : "memory");
  2329. return;
  2330. }