#define __down_op(ptr,fail) \
({ \
__asm__ __volatile__( \
"@ down_op\n" \
" mrs ip, cpsr\n" \
" orr lr, ip, #128\n" \
" msr cpsr_c, lr\n" \
" ldr lr, [%0]\n" \
" subs lr, lr, %1\n" \
" str lr, [%0]\n" \
" msr cpsr_c, ip\n" \
" movmi ip, %0\n" \
" blmi " SYMBOL_NAME_STR(fail) \
: \
: "r" (ptr), "I" (1) \
: "ip", "lr", "cc"); \
})
위에 코드가 무슨 역활을 하는지 알고 싶습니다.
위치는 커널 소스내에서 /include/asm/proc-armv/locks.h 안에 들어 있거든요
어셈블러에 약하다보니 저넘들이 도대체 뭔일들을 하고 있느지 답답하네요.