summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-12-14 14:51:50 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-12-14 14:51:50 +0000
commit8e46b093b5e6b8b5daccea6054bff316ba2d8dee (patch)
treeded5da61a78044eea44031828cffca359eb28ce8
parent2009-12-11 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-8e46b093b5e6b8b5daccea6054bff316ba2d8dee.tar.bz2
Removed new-exceptions/bspsupport/ppc_exc_bspsupp.h
-rw-r--r--c/src/lib/libcpu/powerpc/ChangeLog6
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/README25
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_bspsupp.h146
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_test.c1
4 files changed, 22 insertions, 156 deletions
diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog
index 69c27f65d5..1e3c9fd804 100644
--- a/c/src/lib/libcpu/powerpc/ChangeLog
+++ b/c/src/lib/libcpu/powerpc/ChangeLog
@@ -1,3 +1,9 @@
+2009-12-04 Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+ * new-exceptions/bspsupport/ppc_exc_bspsupp.h: Removed file.
+ * new-exceptions/bspsupport/ppc_exc_test.c,
+ new-exceptions/bspsupport/README: Update for removed file.
+
2009-12-01 Till Straumann <strauman@slac.stanford.edu>
* new-exceptions/cpu.c, new-exceptions/cpu_asm.S,
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/README b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/README
index 0f575ff1b1..414e358e6d 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/README
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/README
@@ -186,8 +186,15 @@ USAGE
BSP initialization; call
- initialize_exceptions();
- BSP_rtems_irq_mngt_set();
+ rtems_status_code sc = ppc_exc_initialize(
+ PPC_INTERRUPT_DISABLE_MASK_DEFAULT,
+ interrupt_stack_begin,
+ interrupt_stack_size
+ );
+ if (sc != RTEMS_SUCCESSFUL) {
+ BSP_panic("cannot initialize exceptions");
+ }
+ BSP_rtems_irq_mngt_set();
Note that BSP_rtems_irq_mngt_set() hooks the C_dispatch_irq_handler()
to the external and decrementer (PIT exception for bookE; a decrementer
@@ -202,7 +209,7 @@ USAGE
Hooking exceptions:
- The API defined in ppc_exc_bspsupp.h declares routines for connecting
+ The API defined in vectors.h declares routines for connecting
a C-handler to any exception. Note that the execution environment
of the C-handler depends on the exception being synchronous or
asynchronous:
@@ -231,15 +238,15 @@ USAGE
- add
- include_bsp_HEADERS += \
- ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/vectors.h \
- ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/irq_supp.h \
- ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/ppc_exc_bspsupp.h
+ ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/vectors.h
+ ../../../libcpu/@RTEMS_CPU@/@exceptions@/bspsupport/irq_supp.h
+
+ to 'include_bsp_HEADERS'
- add
- ../../../libcpu/@RTEMS_CPU@/@exceptions@/exc_bspsupport.rel \
- ../../../libcpu/@RTEMS_CPU@/@exceptions@/irq_bspsupport.rel \
+ ../../../libcpu/@RTEMS_CPU@/@exceptions@/exc_bspsupport.rel
+ ../../../libcpu/@RTEMS_CPU@/@exceptions@/irq_bspsupport.rel
to 'libbsp_a_LIBADD'
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_bspsupp.h b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_bspsupp.h
deleted file mode 100644
index 446e514984..0000000000
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_bspsupp.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* PowerPC exception handling middleware; consult README for more
- * information.
- *
- * Author: Till Straumann <strauman@slac.stanford.edu>, 2007
- *
- * The license and distribution terms for this file may be
- * found in found in the file LICENSE in this distribution or at
- * http://www.rtems.com/license/LICENSE.
- *
- * $Id$
- */
-
-#ifndef PPC_EXC_SHARED_H
-#define PPC_EXC_SHARED_H
-
-#include <stdint.h>
-
-#include "vectors.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/********* C-Exception Handlers *********************/
-
-/* API to be used by middleware, */
-/* BSP and application code (if necessary) */
-
-/****************************************************/
-
-/*
- * Exception handlers should return 0 if the exception
- * was handled and normal execution may resume.
- *
- * They should return (-1) to 'rethrow' the exception
- * resulting in the globalExcHdl() being called.
- *
- * Other return values are reserved.
- */
-typedef int (*ppc_exc_handler_t)(BSP_Exception_frame *f, unsigned int vector);
-
-/*
- * Bits in MSR that are enabled during execution of exception handlers / ISRs
- * (on classic PPC these are DR/IR/RI [default], on bookE-style CPUs they should
- * be set to 0 during initialization)
- *
- * By default, the setting of these bits that is in effect when exception
- * handling is initialized is used.
- */
-extern uint32_t ppc_exc_msr_bits;
-
-/* (See README under CAVEATS). During initialization
- * a check is performed to assert that write-back
- * caching is enabled for memory accesses. If a BSP
- * runs entirely without any caching then it should
- * set this variable to zero prior to initializing
- * exceptions in order to skip the test.
- * NOTE: The code does NOT support mapping memory
- * with cache-attributes other than write-back
- * (unless the entire cache is physically disabled)
- */
-extern uint32_t ppc_exc_cache_wb_check;
-
-/*
- * Hook C exception handlers.
- * - handlers for asynchronous exceptions run on the ISR stack
- * with thread-dispatching disabled.
- * - handlers for synchronous exceptions run on the task stack
- * with thread-dispatching enabled.
- *
- * If a particular slot is NULL then the traditional 'globalExcHdl' is used.
- *
- * ppc_exc_set_handler() registers a handler (returning 0 on success,
- * -1 if the vector argument is too big).
- *
- * It is legal to set a NULL handler. This leads to the globalExcHdl
- * being called if an exception for 'vector' occurs.
- */
-int
-ppc_exc_set_handler(unsigned vector, ppc_exc_handler_t hdl);
-
-/* ppc_exc_get_handler() retrieves the currently active handler.
- */
-ppc_exc_handler_t
-ppc_exc_get_handler(unsigned vector);
-
-/********* Low-level Exception Handlers *************/
-
-/* This part of the API is used by middleware code */
-
-/****************************************************/
-
-typedef uint32_t ppc_exc_min_prolog_t[4];
-
-/* Templates are ppc_raw_except_func BUT they must be exactly 16 bytes */
-typedef rtems_raw_except_func ppc_exc_min_prolog_template_t;
-
-/*
- * Expand a prolog template into 'buf' using vector 'vec'
- */
-void
-ppc_exc_min_prolog_expand(ppc_exc_min_prolog_t buf, ppc_exc_min_prolog_template_t templ, uint16_t vec);
-
-extern unsigned ppc_exc_min_prolog_size[];
-/* Symbols are defined by the linker; declare as an array so
- * that gcc doesn't attempt to emit a relocation looking for
- * it in the SDA section
- */
-extern unsigned ppc_exc_tgpr_clr_prolog_size[];
-
-/* Templates for ppc_exc_min_prolog_expand() which fills-in the vector information */
-extern void ppc_exc_min_prolog_async_tmpl_std(void);
-extern void ppc_exc_min_prolog_sync_tmpl_std(void);
-extern void ppc_exc_min_prolog_async_tmpl_p405_crit(void);
-extern void ppc_exc_min_prolog_sync_tmpl_p405_crit(void);
-extern void ppc_exc_min_prolog_async_tmpl_bookE_crit(void);
-extern void ppc_exc_min_prolog_sync_tmpl_bookE_crit(void);
-extern void ppc_exc_min_prolog_sync_tmpl_e500_mchk(void);
-extern void ppc_exc_min_prolog_async_tmpl_e500_mchk(void);
-extern void ppc_exc_min_prolog_tmpl_naked(void);
-
-/* Special prologue for handling register shadowing on 603-style CPUs */
-extern void ppc_exc_tgpr_clr_prolog(void);
-/* Classic prologue which determines the vector dynamically from
- * the offset address. This must only be used for classic, synchronous
- * exceptions with a vector offset aligned on a 256-byte boundary.
- */
-extern void ppc_exc_min_prolog_auto(void);
-
-extern void ppc_exc_min_prolog_auto_packed(void);
-
-
-/* CPU support may store the address of a function here
- * that can be used by the default exception handler to
- * obtain fault-address info which is helpful. Unfortunately,
- * the SPR holding this information is not uniform
- * across PPC families so we need assistance from
- * CPU support
- */
-extern uint32_t (*ppc_exc_get_DAR)(void);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_test.c b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_test.c
index fa84c43866..ca48d1bf86 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_test.c
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_test.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <string.h>
#include "vectors.h"
-#include "ppc_exc_bspsupp.h"
typedef struct regs_ {