[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: External interrupt



Hi!

0x90000000 is the uncached physical addres of chip select 0. You
should use the virtual address instead. The virtual address is
stored in the global variable port_csp0_addr. The code could 
look something like this:

#define BLOCK_IRQ_EXT(mask,nr) \
  "move.d " #mask ",r0\n\t" \
  "move.d [_port_csp0_addr], r1
  "add.d  24, r1"
  "move.d r0,[r1]\n\t"  /*register for disable external INT*/
  
Regards
/Mikael
-----Original Message-----
From: owner-dev-etrax@xxxxxxx.com]On">mailto:owner-dev-etrax@xxxxxxx.com]On
Behalf Of Petr Jerabek
Sent: Tuesday, January 29, 2002 5:54 PM
To: dev-etrax
Subject: External interrupt


Hi,

We have some problems with external interrupts.
We added an external interrupts handlers.
Routines of vectors are similar to routines of internal interrupts.
Only macros BLOCK_IRQ (BLOCK_IRQ_EXT) and UNBLOCK... are changed
(see attached files .../arch/cris/kernel/irq.c and 
.../include/asm/irq.h)

Problem:

External interrupt is generated every 20 ms.
Sometimes at the first execution of the routine, sometimes later,
kernel crashes with OOPS message. (OOPS file attached)

Could anybody help us?
Petr Jerabek