Here are two small compile fixes for x86-64 in 2.5.6pre2.
- Remove call to schedule_tail.
- Fix inline assembly of semaphores to work with latest gcc 3.1.
* A newly forked process directly context switches into this.
*/
ENTRY(ret_from_fork)
- movq %rbx, %rdi
- call schedule_tail
GET_THREAD_INFO(%rcx)
bt $TIF_SYSCALL_TRACE,threadinfo_flags(%rcx)
jc rff_trace
" jmp 1b\n"
".previous\n"
"# ending __up_read\n"
- : "+m"(sem->count), "+d"(tmp)
+ : "+d"(tmp)
: "a"(sem)
- : "memory", "cc");
+ : "memory");
}
/*
{
__asm__ __volatile__(
"# beginning __up_write\n\t"
- " movl %2,%%edx\n\t"
+ " movl %1,%%edx\n\t"
LOCK_PREFIX " xaddl %%edx,(%%rax)\n\t" /* tries to transition 0xffff0001 -> 0x00000000 */
" jnz 2f\n\t" /* jump if the lock is being waited upon */
"1:\n\t"
" jmp 1b\n"
".previous\n"
"# ending __up_write\n"
- : "+m"(sem->count)
+ :
: "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS)
: "memory", "cc", "edx");
}