source: rtems/c/src/lib/libcpu/i960/i960ka/cpu_install_raw_isr.c @ bc85fd5a

4.104.114.84.95
Last change on this file since bc85fd5a was bc85fd5a, checked in by Joel Sherrill <joel.sherrill@…>, on 07/11/00 at 19:31:04

Reworked score/cpu/i960 so it can be safely compiled multilib. All
routines and structures that require CPU model specific information
are now in libcpu. This required significant rework of the
score/cpu header files and the creation of multiple header files
and subdirectories in libcpu/i960.

  • Property mode set to 100644
File size: 946 bytes
RevLine 
[bc85fd5a]1/*
2 *  Install raw interrupt vector for i960ka
3 *
4 *  $Id$
5 */
6
7#include <rtems.h>
8#include <libcpu/i960KA.h>
9
10/* this is from the CA and probably not right */
11#define i960_vector_caching_enabled( _prcb ) \
12   ((_prcb)->control_tbl->icon & 0x2000)
13
14extern i960_PRCB *Prcb;
15
16void _CPU_ISR_install_raw_handler(
17  unsigned32  vector,
18  proc_ptr    new_handler,
19  proc_ptr   *old_handler
20)
21{
22  i960_PRCB   *prcb = Prcb;
23  proc_ptr    *cached_intr_tbl = NULL;
24
25  /*  The i80960CA does not support vectors 0-7.  The first 9 entries
26   *  in the Interrupt Table are used to manage pending interrupts.
27   *  Thus vector 8, the first valid vector number, is actually in
28   *  slot 9 in the table.
29   */
30
31  *old_handler = prcb->intr_tbl[ vector + 1 ];
32
33  prcb->intr_tbl[ vector + 1 ] = new_handler;
34
35  if ( i960_vector_caching_enabled( prcb ) )
36    if ( (vector & 0xf) == 0x2 )       /* cacheable? */
37      cached_intr_tbl[ vector >> 4 ] = new_handler;
38}
39
Note: See TracBrowser for help on using the repository browser.