source: rtems/c/src/lib/libcpu/powerpc/new-exceptions/e500_raw_exc_init.c @ 4be2812f

4.104.114.95
Last change on this file since 4be2812f was 4be2812f, checked in by Till Straumann <strauman@…>, on 12/08/07 at 22:46:59

2007-12-08 Till Straumann <strauman@…>

  • new-exceptions/e500_raw_exc_init.c, new-exceptions/raw_exception.c, shared/include/cpuIdent.c, shared/include/cpuIdent.h: Added different kinds of 'bookE' to the ppc_cpu_is_bookE feature check; unfortunately...
  • Property mode set to 100644
File size: 1.5 KB
Line 
1#include <libcpu/cpuIdent.h>
2#include <libcpu/raw_exception.h>
3
4#define MTIVOR(x, vec) asm volatile("mtivor"#x" %0"::"r"(vec));
5
6/* Use during early init for initializing the e500 IVOR/IVPR registers */
7void
8e500_setup_raw_exceptions()
9{
10unsigned c;
11        if ( ! (c = ppc_cpu_is_bookE()) || PPC_BOOKE_405 == c )
12                return;
13        asm volatile("mtivpr %0"::"r"(0));
14        /* setup vectors to be compatible with classic PPC */
15        MTIVOR(0,  ppc_get_vector_addr(ASM_BOOKE_CRIT_VECTOR)); /* Critical input not (yet) supported; use reset vector */
16        MTIVOR(1,  ppc_get_vector_addr(ASM_MACH_VECTOR));
17        MTIVOR(2,  ppc_get_vector_addr(ASM_PROT_VECTOR));
18        MTIVOR(3,  ppc_get_vector_addr(ASM_ISI_VECTOR));
19        MTIVOR(4,  ppc_get_vector_addr(ASM_EXT_VECTOR));
20        MTIVOR(5,  ppc_get_vector_addr(ASM_ALIGN_VECTOR));
21        MTIVOR(6,  ppc_get_vector_addr(ASM_PROG_VECTOR));
22        MTIVOR(7,  ppc_get_vector_addr(ASM_FLOAT_VECTOR));
23        MTIVOR(8,  ppc_get_vector_addr(ASM_SYS_VECTOR));
24        MTIVOR(9,  ppc_get_vector_addr(0x0b));
25        MTIVOR(10, ppc_get_vector_addr(ASM_DEC_VECTOR));
26        MTIVOR(11, ppc_get_vector_addr(ASM_BOOKE_PIT_VECTOR));
27        MTIVOR(12, ppc_get_vector_addr(ASM_BOOKE_WDOG_VECTOR));
28        MTIVOR(13, ppc_get_vector_addr(ASM_60X_DSMISS_VECTOR));
29        MTIVOR(14, ppc_get_vector_addr(ASM_60X_DLMISS_VECTOR));
30        MTIVOR(15, ppc_get_vector_addr(ASM_TRACE_VECTOR));
31        MTIVOR(32, ppc_get_vector_addr(ASM_60X_VEC_VECTOR));
32        MTIVOR(33, ppc_get_vector_addr(0x16));
33        MTIVOR(34, ppc_get_vector_addr(0x15));
34        MTIVOR(35, ppc_get_vector_addr(ASM_60X_PERFMON_VECTOR));
35}
Note: See TracBrowser for help on using the repository browser.