Displaying 1 result from an estimated 1 matches for "foo_unlock".
Did you mean:
do_unlock
2018 Dec 04
2
Incorrect placement of an instruction after PostRAScheduler pass
...= LOCK),1)) { // First
comparison using lock_flag, which is a function argument and an enum
with values 0, 1, 2.
lock=foo_lock(vaddr);
}
old = func(flags, vaddr, data);
if (__builtin_expect((lock_flag == LOCK),1)) { // Second
comparison using lock_flag
foo_unlock(lock);
}
The inline asm comes from the below function that is called within func().
static inline void write64 (volatile void *p, uint64_t val)
{
uint64_t tmp=0,prev=0;
asm volatile(
"3: ldaexd %[prev], %H[prev], [%[p]];"
" strexd %[tmp], %[val], %H...