# Eclusive instruction contributed by <`tina0405`> ### LOAD/STORE * 為了要使用 lock, 本來有想過要使用 cas 但其指令只支援 armv8.1, 因此在 armv8.0 中參考了 linux 的 `read/write lock`, 因此選擇了 `exclusive-load/store`, 這個指令的特色就是被 lock 住的 resource 會有兩種狀態(open 和 exclusive), load 可以一直 loading,但 store 只有在 exclusive 的時候會被儲存,如下圖。 ![](https://i.imgur.com/DoAVVNO.png) * LDAXR ![](https://i.imgur.com/Ihy6Bs2.png) ### 組語部份 * 利用硬體平台特性來完成 lock * cbz/cbnz: 比較,為0則跳轉; 非0則跳轉。 * 用法 ~~~ CBZ Rn, label CBNZ Rn, label ~~~ 註: "forward" for "f" or "backward" for "b" ### Reference * https://blog.csdn.net/modianwutong/article/details/68925664 * http://www.lujun.org.cn/?p=4097 * https://blog.csdn.net/forever_2015/article/details/52653439 * https://blog.csdn.net/qq_31780525/article/details/54376674 * https://www.twblogs.net/a/5b8ae3802b71775d1ce9a695 * https://lore.kernel.org/lkml/20120910155033.GF27042@arm.com/T/