Linux IA64 platform development
 help / color / mirror / Atom feed
* fsys_rt_sigprocmask fastcall missing PF_FREEZE handling?
@ 2005-06-02 19:43 Christoph Lameter
  2005-06-02 20:22 ` David Mosberger
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Christoph Lameter @ 2005-06-02 19:43 UTC (permalink / raw)
  To: linux-ia64

I just compared fsys_rt_sigprocmask in arch/ia64/kernel/fsys.S with 
kernel/signal.c and noted that there does not seem to be any handling of 
the PF_FREEZE flag. This may be okay if IA64 does not support power 
management but I see some adaptec drivers in SLES9 that use PF_FREEZE.

c:

fastcall void recalc_sigpending_tsk(struct task_struct *t)
{
        if (t->signal->group_stop_count > 0 ||
            (t->flags & PF_FREEZE) ||
            PENDING(&t->pending, &t->blocked) ||
            PENDING(&t->signal->shared_pending, &t->blocked))
                set_tsk_thread_flag(t, TIF_SIGPENDING);
        else
                clear_tsk_thread_flag(t, TIF_SIGPENDING);
}

asm:
        ld4 r17=[r17]           // r17 <- current->signal->group_stop_count
(p7)    mov r8=0                // clear error code

        ld8 r19=[r19]           // r19 <- current->signal->shared_pending
        ;;
        cmp4.gt p6,p7=r17,r0    // p6/p7 <- (current->signal->group_stop_count > 0)?
(p8)    mov r8=0                // clear error code

        or r18=r18,r19          // r18 <- current->pending | current->signal->shared_pending
        ;;
        // r18 <- (current->pending | current->signal->shared_pending) & ~current->blocked:
        andcm r18=r18,r14
        add r9=TI_FLAGS+IA64_TASK_SIZE,r16
        ;;

(p7)    cmp.ne.or.andcm p6,p7=r18,r0            // p6/p7 <- signal pending
        mov r19=0                                       // i must not leak kernel bits...
(p6)    br.cond.dpnt.many .sig_pending
        ;;

1:      ld4 r17=[r9]                            // r17 <- current->thread_info->flags
        ;;
        mov ar.ccv=r17
        and r18=~_TIF_SIGPENDING,r17            // r18 <- r17 & ~(1 << TIF_SIGPENDING)
        ;;

        st8 [r2]=r14                            // update current->blocked with new mask
        cmpxchg4.acq r14=[r9],r18,ar.ccv        // current->thread_info->flags <- r18
        ;;
        cmp.ne p6,p0=r17,r14                    // update failed?
(p6)    br.cond.spnt.few 1b                     // yes -> retry


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-06-02 21:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-06-02 19:43 fsys_rt_sigprocmask fastcall missing PF_FREEZE handling? Christoph Lameter
2005-06-02 20:22 ` David Mosberger
2005-06-02 20:28 ` Christoph Lameter
2005-06-02 21:21 ` David Mosberger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox