<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic i.MX7D: atomic compare and swap instructions don't work with cache in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700599#M108818</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Recently I've encountered an issue with atomics and the cache. When data is in a cacheable region (tested with both DDR and OCRAM), any atomic read-modify-write operation (atomic_compare_exchange_strong, fetch_add, etc.) doesn't operate as expected. I've attached an example that illustrates the problem (as well as a patch that applies to the &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fwww.nxp.com%2Fwebapp%2FDownload%3FcolCode%3DFreeRTOS_iMX7D_1.0.1_LINUX%26appType%3Dlicense%26location%3Dnull%26Parent_nodeId%3D1337699481071706174845%26Parent_pageType%3Dproduct%26Parent_nodeId%3D1337699481071706174845%26Parent_pageType%3Dproduct" rel="nofollow noopener noreferrer" target="_blank"&gt;NXP provided FreeRTOS BSP 1.0.1&lt;/A&gt;). The inconsistency appears only with read-modify-write operations, which use Load-Link and Store Conditional instructions. If only atomic loads and stores are used, the program functions as expected.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the output from the example attached. The example was tested on an i.MX7DSabreSD Rev D. Board:&lt;/P&gt;&lt;PRE&gt;state intial value: 3
state after store 1: 1
CAS failed: Value is 3741011900, expected 1
Pushing Cache
CAS Passed
state after CAS (should = 2): 1
Invalidating Cache
state after invalidate (should = 2): 2&lt;/PRE&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the output above, you can see that the CAS doesn't see the initial value `3` or the stored value `1` (and instead sees 3741011900). After pushing the cache, the next CAS sees the correct value of '1', and supposedly stores a 2. The next load though, doesn't see a 2, but sees a stale value of 1. If the cache is invalidated, so that the load value is loaded from&amp;nbsp; DDR or OCRAM, the correct value of 2 is read.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px; text-align: left;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there some configuration that needs to be done in order to for caching to work with atomics? It seems as if Load-link and Store-Conditionals are going around the cache to either DDR or OCRAM.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-336460" rel="nofollow noopener noreferrer" target="_blank"&gt;0001-Example-of-Atomic-CAS-not-functioning-with-cache.patch.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-336460" rel="nofollow noopener noreferrer" target="_blank"&gt;main.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 11 Sep 2017 20:27:44 GMT</pubDate>
    <dc:creator>ryanschaefer</dc:creator>
    <dc:date>2017-09-11T20:27:44Z</dc:date>
    <item>
      <title>i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700599#M108818</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Recently I've encountered an issue with atomics and the cache. When data is in a cacheable region (tested with both DDR and OCRAM), any atomic read-modify-write operation (atomic_compare_exchange_strong, fetch_add, etc.) doesn't operate as expected. I've attached an example that illustrates the problem (as well as a patch that applies to the &lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fwww.nxp.com%2Fwebapp%2FDownload%3FcolCode%3DFreeRTOS_iMX7D_1.0.1_LINUX%26appType%3Dlicense%26location%3Dnull%26Parent_nodeId%3D1337699481071706174845%26Parent_pageType%3Dproduct%26Parent_nodeId%3D1337699481071706174845%26Parent_pageType%3Dproduct" rel="nofollow noopener noreferrer" target="_blank"&gt;NXP provided FreeRTOS BSP 1.0.1&lt;/A&gt;). The inconsistency appears only with read-modify-write operations, which use Load-Link and Store Conditional instructions. If only atomic loads and stores are used, the program functions as expected.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the output from the example attached. The example was tested on an i.MX7DSabreSD Rev D. Board:&lt;/P&gt;&lt;PRE&gt;state intial value: 3
state after store 1: 1
CAS failed: Value is 3741011900, expected 1
Pushing Cache
CAS Passed
state after CAS (should = 2): 1
Invalidating Cache
state after invalidate (should = 2): 2&lt;/PRE&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the output above, you can see that the CAS doesn't see the initial value `3` or the stored value `1` (and instead sees 3741011900). After pushing the cache, the next CAS sees the correct value of '1', and supposedly stores a 2. The next load though, doesn't see a 2, but sees a stale value of 1. If the cache is invalidated, so that the load value is loaded from&amp;nbsp; DDR or OCRAM, the correct value of 2 is read.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px; text-align: left;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there some configuration that needs to be done in order to for caching to work with atomics? It seems as if Load-link and Store-Conditionals are going around the cache to either DDR or OCRAM.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-336460" rel="nofollow noopener noreferrer" target="_blank"&gt;0001-Example-of-Atomic-CAS-not-functioning-with-cache.patch.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-336460" rel="nofollow noopener noreferrer" target="_blank"&gt;main.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 11 Sep 2017 20:27:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700599#M108818</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2017-09-11T20:27:44Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700600#M108819</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ryan,&lt;/P&gt;&lt;P&gt;Is this behavior happening on the M4 core, isn't it?&lt;/P&gt;&lt;P&gt;Could you please describe a recreation scenario?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;&lt;P&gt;/Carlos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 19 Sep 2017 17:24:28 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700600#M108819</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2017-09-19T17:24:28Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700601#M108820</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Carlos,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In there original post the attached main.c gives a concise recreation of the issue. You are correct, it is for the M4.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Sep 2017 18:09:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700601#M108820</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2017-09-21T18:09:17Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700602#M108821</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ryan,&lt;/P&gt;&lt;P&gt;Sorry for the missing details, however, I internally escalated your question before mi first reply. AE team still requires additional details. So, may you please specify if you are running under ARMGCC or DS5?&lt;/P&gt;&lt;P&gt;Could you please also list the command lines that you are using to load the binary into DDR and OCRAM?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I will be waiting for your reply.&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;&lt;P&gt;/Carlos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 22 Sep 2017 22:05:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700602#M108821</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2017-09-22T22:05:00Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700603#M108822</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Carlos,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using ARMGCC with gcc 5.4.1. I am loading the binary into DDR/OCRAM from u-boot with the directions specified in the Getting_Started_with_FreeRTOS_BSP_for_i.MX_7Dual manual. For DDR, I am using the cacheable region of memory as the link and load address at 0x80000000 when loading into DDR. Loading the binary is accomplished by running `run m4boot` at the u-boot prompt.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OCRAM:&lt;/P&gt;&lt;P&gt;=&amp;gt; print m4boot &lt;BR /&gt;m4boot=run loadm4image; dcache flush; bootaux ${m4addr}&lt;BR /&gt;=&amp;gt; print loadm4image &lt;BR /&gt;loadm4image=fatload mmc ${mmcdev}:${mmcpart} ${m4addr} ${m4image}&lt;BR /&gt;=&amp;gt; print m4image &lt;BR /&gt;m4image=hello_world_ocram.bin&lt;BR /&gt;=&amp;gt; print m4addr &lt;BR /&gt;m4addr=0x00910000&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DDR:&lt;/P&gt;&lt;P&gt;=&amp;gt; print m4boot &lt;BR /&gt;m4boot=run loadm4image; dcache flush; bootaux ${m4addr}&lt;BR /&gt;=&amp;gt; print loadm4image &lt;BR /&gt;loadm4image=fatload mmc ${mmcdev}:${mmcpart} ${m4addr} ${m4image}&lt;BR /&gt;=&amp;gt; print m4image &lt;BR /&gt;m4image=hello_world_ddr.bin&lt;BR /&gt;=&amp;gt; print m4addr &lt;BR /&gt;m4addr=0x80000000&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 25 Sep 2017 20:38:18 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700603#M108822</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2017-09-25T20:38:18Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700604#M108823</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ryan,&lt;/P&gt;&lt;P&gt;I have received an update from AE team. Below you can check the details:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It seems that the cache is not being enabled for these memories. At least it is not being enabled in the sent patch.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;Please see in the i.MX7D RM:&lt;/P&gt;&lt;P&gt;"ARM Platform and Debug" -&amp;gt; "ARM Cortex M4 Platform (CM4)" -&amp;gt;&amp;nbsp; "LMEM Function" -&amp;gt; 4.2.9.3.5 "Cache Function":&lt;/P&gt;&lt;P&gt;To use cache, user needs to configure MPU to set those memories as cacheable and all the other memories set as non-cacheable.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So, could you please verify if the cache is being enabled as described above?&lt;/P&gt;&lt;P&gt;Also, may you please specify which silicon revision are you using?&lt;/P&gt;&lt;P&gt;The silicon revision can be seen in the U-Boot log:&lt;/P&gt;&lt;P&gt;&amp;gt;&amp;gt;CPU:&amp;nbsp;&amp;nbsp; Freescale i.MX7D rev1.2 1000 MHz (running at 792 MHz)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope this will be useful for you.&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;&lt;P&gt;/Carlos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 29 Sep 2017 23:16:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700604#M108823</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2017-09-29T23:16:48Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700605#M108824</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The caches are enabled by the board support package. The entry point is not main(), but actually platform/devices/MCIMX7D/startup/gcc/startup_MCIMX7D_M4.s. This calls SystemInit() in platform/devices/MCIMX7D/startup/system_MCIMX7D_M4.c, which enables the caches, before entering main().&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We are using rev1.2 Silicon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 30 Sep 2017 03:42:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700605#M108824</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2017-09-30T03:42:58Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700606#M108825</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ryan,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The following tests were performed by AE team:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;disabling cache for the unused regions and enabling cache only for the desired region (DDR OR OCRAM);&lt;/LI&gt;&lt;LI&gt;moving "m_interrupts", "m_text" to uncacheable regions;&lt;/LI&gt;&lt;LI&gt;moving only "m_data" to the cacheable region;&lt;/LI&gt;&lt;LI&gt;enabling system cache and disable code cache (and vice versa).&lt;/LI&gt;&lt;/UL&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The LL/SC operations seems to work only when "m_data" is at an uncacheable region.&lt;/P&gt;&lt;P&gt;Considering this, it seems that LL/SC operations should be going around to DDR and OCRAM as customer described. LL/SC operations are not atomic from this point of view (they are not executed in just a single instruction), so maybe the customer should stick with the atomic loads and stores.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Some information was also taken from this thread: &lt;A _jive_internal="true" class="" data-containerid="2004" data-containertype="14" data-content-finding="Community" data-objectid="446985" data-objecttype="1" href="https://community.nxp.com/thread/446985"&gt;IMX7 M4 caching and execution speed&lt;/A&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;"As it turns out, the M4 cache has been optimized for qspi operation and does not have a performance effect on ddr memory accesses. Basically the cache-able memory does not include the ddr. And therefor there will be no difference in applications operating from ddr with and without the caches turned on."&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;So maybe caching is not the way to go.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;It is also suggested posting this on the &lt;A data-content-finding="Community" href="https://community.arm.com/" rel="nofollow" target="_blank"&gt;Arm Community&lt;/A&gt; as this is more related to the ARM architecture then to an i.MX or NXP BSP feature so maybe in the ARM community this will be answered faster. This seems to be really low level programming and maybe they will have a better understanding at this.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Hope this will be useful for you.&lt;BR /&gt;Best regards!&lt;BR /&gt;/Carlos&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 10 Oct 2017 19:08:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700606#M108825</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2017-10-10T19:08:22Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700607#M108826</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;LL/SC operations are not atomic from this point of view (they are not executed in just a single instruction), so maybe the customer should stick with the atomic loads and stores.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I'm not quite sure I understand this sentence. Load-Link and Store-Conditionals are necessary building blocks for any non-trivial program. Yes, they are two instructions, so they aren't atomic in that manner. But on the other hand, when used together, they are the mechanism which enables an atomic increment. Without LL/SC, an atomic increment is provably impossible with only atomic loads and stores. See &lt;A class="link-titled" href="https://en.wikipedia.org/wiki/Read-modify-write" title="https://en.wikipedia.org/wiki/Read-modify-write"&gt;Read-modify-write - Wikipedia&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;Some information was also taken from this thread: &lt;A _jive_internal="true" data-containerid="2004" data-containertype="14" data-content-finding="Community" data-objectid="446985" data-objecttype="1" href="https://community.nxp.com/thread/446985"&gt;IMX7 M4 caching and execution speed&lt;/A&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;"As it turns out, the M4 cache has been optimized for qspi operation and does not have a performance effect on ddr memory accesses. Basically the cache-able memory does not include the ddr. And therefor there will be no difference in applications operating from ddr with and without the caches turned on."&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;So maybe caching is not the way to go.&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;The IMX7 Reference Manual is in conflict with this post, and states that DDR first 2M is supported (pg. 265). Also, it has been shown that enabling the cache for use with DDR greatly improves performance. See &lt;A class="link-titled" href="https://blog.printk.io/2017/05/i-mx-7-cortex-m4-memory-locations-and-performance/" title="https://blog.printk.io/2017/05/i-mx-7-cortex-m4-memory-locations-and-performance/"&gt;i.MX 7 Cortex-M4 memory locations and performance&lt;/A&gt;. This blog shows a x20 increase in performance in DDR Cache vs Non-Cache. We have reproduced these results.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;It is also suggested posting this on the &lt;A data-content-finding="Community" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fcommunity.arm.com%2F" rel="nofollow" target="_blank"&gt;Arm Community&lt;/A&gt; as this is more related to the ARM architecture then to an i.MX or NXP BSP&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;It looks like someone with the same issue has already posted to the Arm Community &lt;A class="link-titled" href="https://community.arm.com/community-help/f/discussions/9192/cortex-m4-atomic-and-cache" title="https://community.arm.com/community-help/f/discussions/9192/cortex-m4-atomic-and-cache"&gt;Cortex M4: Atomic and Cache - Arm Community&lt;/A&gt;. From my understanding, the cache and memory controller logic is external to the M4 IP, and is a part of NXP's domain, but hopefully the ARM Community has some insights to help us work to a solution.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 11 Oct 2017 17:28:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700607#M108826</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2017-10-11T17:28:04Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700608#M108827</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Ryan,&lt;/P&gt;&lt;P&gt;Below you can find the response from R&amp;amp;D:&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;DIV class=""&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;After reproducing the issue and performing some tests, it was found that the issue is because “LDREX” and “STREX” instructions overlooked LMEM cache. That means those instructions always access external memory directly, which leads to data inconsistency.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV style="margin: 0;"&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;There’s no SW configuration to make the cacheable data consistent with those atomic instructions, and design team will fix it in later CM4 integration.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="margin: 0;"&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV style="margin: 0;"&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;The possible SW workaround is to add a section in TCM (in linker file) and define atomic variables in that section. Thus “LDREX” and “STREX” will always access non-cacheable memory.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;BR /&gt;Hope this will be useful for you.&lt;BR /&gt;Best regards!&lt;BR /&gt;/Carlos&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Oct 2017 14:52:02 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700608#M108827</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2017-10-17T14:52:02Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700609#M108828</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Carlos and R&amp;amp;D,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for helping to identify the root cause.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Will the fix be implemented in the next revision of the i.MX7D? Is there a time line for when the next revision will be available?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Oct 2017 20:14:48 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700609#M108828</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2017-10-17T20:14:48Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700610#M108829</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If they were going to fix it in the next mask version (and if there is going to be a new mask version) then I'd expect the design team to have said "we'll fix it in the next mask version".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead they said:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-size: 11pt; font-family: courier new,courier,monospace;"&gt;&lt;STRONG&gt;design team will fix it in later CM4 integration&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;That may be a strange choice of words, but without clarification I'd read that to mean "in the next product", as in "when we integrate the CM4 (ARM M4 module) into a different product".&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;Looking to history for answers, the memory throughput on the i.MX6D and i.MX6Q is half of what it should be due to "ERR003740", as detailed here:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/thread/329671"&gt;https://community.nxp.com/thread/329671&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;That was never fixed in those chips. It was fixed in the i.MX6DualPlus and i.MX6QuadPlus chips. The same may happen with this problem. There may need to be a "plus" version that has less "minuses" than the previous one.&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;The people that write the errata have an interesting view on what their chips are used for, which may affect the importance giving to particular errata. Check out &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;&lt;A href="https://www.nxp.com/docs/en/errata/IMX7D_2N09P.pdf"&gt;https://www.nxp.com/docs/en/errata/IMX7D_2N09P.pdf&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;e6939: Core: Interrupted loads to SP can cause erroneous behavior&lt;BR /&gt;Description: ARM Errata 752770: Interrupted loads to SP can cause erroneous behavior&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;If the Stack Pointer is being written to and an interrupt happens, the stack pointer can get corrupted. But the "Workaround" says:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;Most compilers are not affected by this, so a workaround is not required.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;Compilers may not mess with the stack pointer, but all threaded and multitasking operating systems do! Likewise "most compilers" don't generate those lock instructions you're having trouble with, but smarter multitasking systems, threading systems and operating systems do.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 11pt; font-family: Calibri,sans-serif;"&gt;Tom&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Oct 2017 00:06:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700610#M108829</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2017-10-19T00:06:53Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700611#M108830</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Carlos,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Can you make sure that this gets included in the Errata?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Ryan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Nov 2017 16:12:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700611#M108830</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2017-11-02T16:12:34Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700612#M108831</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Was this noted in any errata, and is this fixed now?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 20 Sep 2018 23:54:58 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700612#M108831</guid>
      <dc:creator>dry</dc:creator>
      <dc:date>2018-09-20T23:54:58Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700613#M108832</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;D. Ry asked:&lt;/P&gt;&lt;P&gt;&amp;gt; Was this noted in any errata, and is this fixed now?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Why don't you look?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Happy Birthday! It has been exactly 12 months since this was reported.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There are two Errata documents for this CPU on NXP's site:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;- Mask Set Errata for Mask 3N09P: 8 Apr 2018&lt;/P&gt;&lt;P&gt;- Mask Set Errata for Mask 2N09P: 8 Jun 2017&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The later one lists changing e11166, e10574 and e7805.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;e11166: OCRAM: The first 4K of OCRAM (0x910000 - 0x910fff) is not available during boot time&lt;/P&gt;&lt;P&gt;e10574: Watchdog: A watchdog timeout or software trigger will not reset the SOC&lt;/P&gt;&lt;P&gt;e7805: I2C: When the I2C clock speed is configured for 400 kHz, the SCL low period violates the I2C spec of 1.3 uS min&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So there's still no mention of this problem in either of them. No match on "atomic", "swap" and nothing relevant I can find matching "cache".&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;There's something that makes this harder to prove. The two Errata documents are for two different mask revisions of the chip. There's nothing in either of them that lists which errata items have been FIXED in the later mask. You have to manually compare the two documents to see what might have gone away. For instance e10728 isn't listed in the later mask, so I guess that has been fixed. That also means that the 2N09P document would need a new revision to list this problem if it is present in that version.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It seems that "fixing it in later CM4 integration" didn't include putting a fix into 3N09P.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And a "request" to add it to the Errata wasn't enough.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Sep 2018 00:36:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700613#M108832</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2018-09-21T00:36:32Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700614#M108833</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/CarlosCasillas"&gt;CarlosCasillas&lt;/A&gt;‌ As others have pointed out, it has been a year since NXP has been notified of this bug. This needs to make it into the errata. Who do I need to reach out to to make sure that it is properly documented, if no one in this thread can escalate this?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Sep 2018 01:35:59 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700614#M108833</guid>
      <dc:creator>ryanschaefer</dc:creator>
      <dc:date>2018-09-21T01:35:59Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700615#M108834</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tom,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;In fact I did look, and as I didn't see any mentioning of this (atomic, cache ..), I thought may be information is elsewhere.&lt;/P&gt;&lt;P&gt;Thus the question here, thought it was a good place to double-check.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Hope that make sense :smileyhappy:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;... You have to manually compare the two documents to see what might have gone away.&amp;nbsp; ......And a "request" to add it to the Errata wasn't enough.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;Yep, this is nasty&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Sep 2018 02:31:27 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700615#M108834</guid>
      <dc:creator>dry</dc:creator>
      <dc:date>2018-09-21T02:31:27Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700616#M108835</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;&amp;gt; Who do I need to reach out to to make sure that it is properly documented, if no one in this thread can escalate this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I suspect it might need a large manufacturer with a very large order book for NXP for them to assign new resources (people) to update old documents for current products.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;From their perspective, maybe this problem isn't affecting anyone "important enough". It didn't get into whatever ticketing system they're using to track these issues.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 21 Sep 2018 03:47:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700616#M108835</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2018-09-21T03:47:10Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700617#M108836</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;The issue is still being internally attended, and a document is being prepared to be published soon.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards!&lt;/P&gt;&lt;P&gt;/Carlos&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 01 Oct 2018 20:04:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700617#M108836</guid>
      <dc:creator>CarlosCasillas</dc:creator>
      <dc:date>2018-10-01T20:04:43Z</dc:date>
    </item>
    <item>
      <title>Re: i.MX7D: atomic compare and swap instructions don't work with cache</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700618#M108837</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;BR /&gt;&lt;BR /&gt;&lt;A class="jx-jive-macro-user" href="https://community.nxp.com/people/CarlosCasillas"&gt;CarlosCasillas&lt;/A&gt;‌, has the document been published yet ? Where can we find it ?&lt;BR /&gt;&lt;BR /&gt;Best Regards,&lt;BR /&gt;Nicolas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 27 Feb 2019 09:23:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/i-MX7D-atomic-compare-and-swap-instructions-don-t-work-with/m-p/700618#M108837</guid>
      <dc:creator>nicotruc</dc:creator>
      <dc:date>2019-02-27T09:23:35Z</dc:date>
    </item>
  </channel>
</rss>

