the code:
0xc0016d40 <__run_task_queue>: stwu r1,-64(r1)
0xc0016d44 <__run_task_queue+4>: mflr r0
0xc0016d48 <__run_task_queue+8>: stmw r28,48(r1)
0xc0016d4c <__run_task_queue+12>: stw r0,68(r1)
0xc0016d50 <__run_task_queue+16>: mr r29,r3
0xc0016d54 <__run_task_queue+20>: addi r3,r1,24
0xc0016d58 <__run_task_queue+24>: bl 0xc000492c <__save_flags_ptr>
0xc0016d5c <__run_task_queue+28>: bl 0xc00049e0 <__cli>
0xc0016d60 <__run_task_queue+32>: addi r28,r1,8
0xc0016d64 <__run_task_queue+36>: lwz r9,0(r29)
0xc0016d68 <__run_task_queue+40>: stw r28,4(r9)
0xc0016d6c <__run_task_queue+44>: lwz r11,4(r29)
0xc0016d70 <__run_task_queue+48>: stw r9,8(r1)
0xc0016d74 <__run_task_queue+52>: stw r11,4(r28)
0xc0016d78 <__run_task_queue+56>: stw r28,0(r29)
0xc0016d7c <__run_task_queue+60>: stw r28,0(r11)
0xc0016d80 <__run_task_queue+64>: stw r29,0(r29)
0xc0016d84 <__run_task_queue+68>: stw r29,4(r29)
0xc0016d88 <__run_task_queue+72>: lwz r3,24(r1)
0xc0016d8c <__run_task_queue+76>: bl 0xc000497c <__restore_flags>
0xc0016d90 <__run_task_queue+80>: lwz r29,8(r1)
0xc0016d94 <__run_task_queue+84>: cmpw r29,r28
---Type <return> to continue, or q <return> to quit---
0xc0016d98 <__run_task_queue+88>:
beq 0xc0016dd0 <__run_task_queue+144>
0xc0016d9c <__run_task_queue+92>: li r31,0
0xc0016da0 <__run_task_queue+96>: mr r9,r29
0xc0016da4 <__run_task_queue+100>: lwz r0,12(r9)
0xc0016da8 <__run_task_queue+104>: lwz r3,16(r9)
0xc0016dac <__run_task_queue+108>: lwz r29,0(r29)
0xc0016db0 <__run_task_queue+112>: eieio
0xc0016db4 <__run_task_queue+116>: cmpwi r0,0
0xc0016db8 <__run_task_queue+120>: stw r31,8(r9)
0xc0016dbc <__run_task_queue+124>:
beq 0xc0016dc8 <__run_task_queue+136>
0xc0016dc0 <__run_task_queue+128>: mtlr r0
0xc0016dc4 <__run_task_queue+132>: blrl
0xc0016dc8 <__run_task_queue+136>: cmpw r29,r28 <================ HERE! just before the NIP.
0xc0016dcc <__run_task_queue+140>:
bne 0xc0016da0 <__run_task_queue+96>
0xc0016dd0 <__run_task_queue+144>: lwz r0,68(r1)
0xc0016dd4 <__run_task_queue+148>: mtlr r0
0xc0016dd8 <__run_task_queue+152>: lmw r28,48(r1)
0xc0016ddc <__run_task_queue+156>: addi r1,r1,64
0xc0016de0 <__run_task_queue+160>: blr
in c:
void __run_task_queue(task_queue *list)
{
struct list_head head, *next;
unsigned long flags;
spin_lock_irqsave(&tqueue_lock, flags);
list_add(&head, list);
list_del_init(list);
spin_unlock_irqrestore(&tqueue_lock, flags);
next = head.next;
while (next != &head) {
void (*f) (void *);
struct tq_struct *p;
void *data;
p = list_entry(next, struct tq_struct, list);
next = next->next;
f = p->routine;
data = p->data;
wmb();
p->sync = 0;
if (f)
f(data);
}
}
7. running kernel-2.4.17 (monta vista hard hat) on STB04xx chip.
if i'm correct, it's trying access the invalid p->routine? what are the things i can try to debug this problem?
whenever the oops occurs, NIP is always 0x0000040. i'm really stuck with this, and any help will be GREATLY
appreciated!
thanks in advance!!
---------------
Q-ha Park (*)
Office: +82-2-2105-9167
Mobile: +82-16-372-0474
---------------
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/