Changeset 1433ecda in mainline for kernel/arch/mips32/include/arch/atomic.h
- Timestamp:
- 2018-04-04T15:42:37Z (6 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
-
kernel/arch/mips32/include/arch/atomic.h
r47b2d7e3 r1433ecda 62 62 63 63 asm volatile ( 64 65 66 67 68 69 70 71 72 73 74 75 64 "1:\n" 65 " ll %0, %1\n" 66 " addu %0, %0, %3\n" /* same as addi, but never traps on overflow */ 67 " move %2, %0\n" 68 " sc %0, %1\n" 69 " beq %0, %4, 1b\n" /* if the atomic operation failed, try again */ 70 " nop\n" 71 : "=&r" (tmp), 72 "+m" (val->count), 73 "=&r" (v) 74 : "r" (i), 75 "i" (0) 76 76 ); 77 77 … … 85 85 86 86 asm volatile ( 87 88 89 90 91 92 93 94 95 96 97 98 87 "1:\n" 88 " ll %2, %1\n" 89 " bnez %2, 2f\n" 90 " li %0, %3\n" 91 " sc %0, %1\n" 92 " beqz %0, 1b\n" 93 " nop\n" 94 "2:\n" 95 : "=&r" (tmp), 96 "+m" (val->count), 97 "=&r" (v) 98 : "i" (1) 99 99 ); 100 100 … … 105 105 { 106 106 do { 107 while (val->count); 107 while (val->count) 108 ; 108 109 } while (test_and_set(val)); 109 110 }
Note:
See TracChangeset
for help on using the changeset viewer.