summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-02-05 17:00:10 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-02-06 15:35:54 +0100
commit39de53882c1919795ecbf9a426c8c68f51df148d (patch)
tree14feb643bbc4579bbdb416302ce910c184deca70
parentbsps/powerpc: Fix e200 check (diff)
downloadrtems-39de53882c1919795ecbf9a426c8c68f51df148d.tar.bz2
bsps/powerpc: Add and use ppc_cpu_is_specific_e200
-rw-r--r--c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c7
-rw-r--r--c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h5
2 files changed, 10 insertions, 2 deletions
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c
index 872eed49a9..31c9881c60 100644
--- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c
+++ b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/ppc_exc_initialize.c
@@ -105,7 +105,10 @@ static void ppc_exc_initialize_booke(void)
/* Interupt vector prefix register */
MTIVPR(ppc_exc_vector_base);
- if (ppc_cpu_is(PPC_e200z0) || ppc_cpu_is(PPC_e200z1)) {
+ if (
+ ppc_cpu_is_specific_e200(PPC_e200z0)
+ || ppc_cpu_is_specific_e200(PPC_e200z1)
+ ) {
/*
* These cores have hard wired IVOR registers. An access will case a
* program exception.
@@ -135,7 +138,7 @@ static void ppc_exc_initialize_booke(void)
MTIVOR(33, ppc_exc_vector_address(ASM_E500_EMB_FP_DATA_VECTOR));
MTIVOR(34, ppc_exc_vector_address(ASM_E500_EMB_FP_ROUND_VECTOR));
}
- if (ppc_cpu_is_e500()) {
+ if (ppc_cpu_is_specific_e200(PPC_e200z7) || ppc_cpu_is_e500()) {
MTIVOR(35, ppc_exc_vector_address(ASM_E500_PERFMON_VECTOR));
}
}
diff --git a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h b/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h
index cb9607e70f..bbda15e19b 100644
--- a/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h
+++ b/c/src/lib/libcpu/powerpc/shared/include/cpuIdent.h
@@ -124,6 +124,11 @@ static inline bool ppc_cpu_is_e200(void)
return (ppc_cpu_current() & 0xff80) == 0x8100;
}
+static inline bool ppc_cpu_is_specific_e200(ppc_cpu_id_t id)
+{
+ return (ppc_cpu_current() & 0xfff0) == id;
+}
+
static inline bool ppc_cpu_is_e300(void)
{
return ppc_cpu_current() == PPC_e300c1