기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
futex_atomic_cmpxchg_inatomic()의 구현 여부 입니다.
Kernel/futex.c 에서
curval = cmpxchg_futex_value_locked(NULL, 0, 0);
-> curval = futex_atomic_cmpxchg_inatomic(uaddr, uval, newval); 이렇게
-> 호출되는데
동작 하는 커널은 futex_atomic_cmpxchg_inatomic()을 그냥 리턴 하는데 문제가 되는 커널은
다음의 asm 코드가 있습니다.
> + spin_lock(&futex_atomic_lock);
> +
> + __asm__ __volatile__( "@futex_atomic_cmpxchg_inatomic n"
> + "1: ldrt %0, [%3] n"
> + " teq %0, %1 n"
> + "2: streqt %2, [%3] n"
> + "3: n"
> + " .section __ex_table, "a" n"
> + " .align 3 n"
> + " .long 1b, 4f, 2b, 4f n"
> + " .previous n"
> + " .section .fixup,"ax" n"
> + "4: mov %0, %4 n"
> + " b 3b n"
> + " .previous"
> + : "=&r" (val)
> + : "r" (oldval), "r" (newval), "r" (uaddr), "Ir" (-EFAULT)
> + : "cc");
> +
> + spin_unlock(&futex_atomic_lock);
흠..이 부분에서 data abort가 발생하는듯 합니다.
v6_early_abort로 점프 하는 것을 trace에서 확인 했습니다.
흠.. 혹시 이와같은 문제 잇는분 없나요??....-;-
잘 넘어 가네요....