Changeset 1433ecda in mainline for uspace/lib/c/arch/arm32/include/libarch/atomic.h
- Timestamp:
- 2018-04-04T15:42:37Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 2c4e1cc
- Parents:
- 47b2d7e3
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/arch/arm32/include/libarch/atomic.h
r47b2d7e3 r1433ecda 56 56 */ 57 57 asm volatile ( 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 58 "1:\n" 59 " adr %[ret], 1b\n" 60 " str %[ret], %[rp0]\n" 61 " adr %[ret], 2f\n" 62 " str %[ret], %[rp1]\n" 63 " ldr %[ret], %[addr]\n" 64 " cmp %[ret], %[ov]\n" 65 " streq %[nv], %[addr]\n" 66 "2:\n" 67 " moveq %[ret], #1\n" 68 " movne %[ret], #0\n" 69 : [ret] "+&r" (ret), 70 [rp0] "=m" (ras_page[0]), 71 [rp1] "=m" (ras_page[1]), 72 [addr] "+m" (val->count) 73 : [ov] "r" (ov), 74 [nv] "r" (nv) 75 : "memory" 76 76 ); 77 77 78 78 ras_page[0] = 0; 79 79 asm volatile ( 80 80 "" ::: "memory" 81 81 ); 82 82 ras_page[1] = 0xffffffff; … … 103 103 */ 104 104 asm volatile ( 105 106 107 108 109 110 111 112 113 114 115 116 117 118 105 "1:\n" 106 " adr %[ret], 1b\n" 107 " str %[ret], %[rp0]\n" 108 " adr %[ret], 2f\n" 109 " str %[ret], %[rp1]\n" 110 " ldr %[ret], %[addr]\n" 111 " add %[ret], %[ret], %[imm]\n" 112 " str %[ret], %[addr]\n" 113 "2:\n" 114 : [ret] "+&r" (ret), 115 [rp0] "=m" (ras_page[0]), 116 [rp1] "=m" (ras_page[1]), 117 [addr] "+m" (val->count) 118 : [imm] "r" (i) 119 119 ); 120 120 121 121 ras_page[0] = 0; 122 122 asm volatile ( 123 123 "" ::: "memory" 124 124 ); 125 125 ras_page[1] = 0xffffffff;
Note:
See TracChangeset
for help on using the changeset viewer.