diff options
Diffstat (limited to '')
-rw-r--r-- | c/src/lib/libcpu/powerpc/ChangeLog | 16 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc5xx/exceptions/raw_exception.c | 24 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c | 20 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc6xx/exceptions/raw_exception.c | 20 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc8260/exceptions/raw_exception.c | 20 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/mpc8xx/exceptions/raw_exception.c | 20 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/new-exceptions/raw_exception.c | 21 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c | 14 | ||||
-rw-r--r-- | c/src/lib/libcpu/powerpc/ppc403/irq/ictrl.c | 14 |
9 files changed, 94 insertions, 75 deletions
diff --git a/c/src/lib/libcpu/powerpc/ChangeLog b/c/src/lib/libcpu/powerpc/ChangeLog index 2e18475661..13562c767f 100644 --- a/c/src/lib/libcpu/powerpc/ChangeLog +++ b/c/src/lib/libcpu/powerpc/ChangeLog @@ -1,3 +1,19 @@ +2007-09-12 Joel Sherrill <joel.sherrill@OARcorp.com> + + PR 1257/bsps + * mpc5xx/exceptions/raw_exception.c, mpc5xx/irq/irq.c, + mpc6xx/exceptions/raw_exception.c, + mpc8260/exceptions/raw_exception.c, + mpc8xx/exceptions/raw_exception.c, new-exceptions/raw_exception.c, + ppc403/ictrl/ictrl.c, ppc403/irq/ictrl.c: Code outside of cpukit + should use the public API for + rtems_interrupt_disable/rtems_interrupt_enable. By bypassing the + public API and directly accessing _CPU_ISR_Disable and + _CPU_ISR_Enable, they were bypassing the compiler memory barrier + directive which could lead to problems. This patch also changes the + type of the variable passed into these routines and addresses minor + style issues. + 2007-09-11 Joel Sherrill <joel.sherrill@OARcorp.com> * Makefile.am, configure.ac: Do not build networking drivers if diff --git a/c/src/lib/libcpu/powerpc/mpc5xx/exceptions/raw_exception.c b/c/src/lib/libcpu/powerpc/mpc5xx/exceptions/raw_exception.c index d1049923db..ea5a4e085c 100644 --- a/c/src/lib/libcpu/powerpc/mpc5xx/exceptions/raw_exception.c +++ b/c/src/lib/libcpu/powerpc/mpc5xx/exceptions/raw_exception.c @@ -20,11 +20,9 @@ * found in found in the file LICENSE in this distribution or at * http://www.rtems.com/license/LICENSE. * - * $Id$ */ -#include <rtems/system.h> -#include <rtems/score/cpu.h> +#include <rtems.h> #include <rtems/score/powerpc.h> #include <libcpu/raw_exception.h> #include <libcpu/cpuIdent.h> @@ -75,7 +73,7 @@ int mpc5xx_vector_is_valid(rtems_vector vector) int mpc5xx_set_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc5xx_vector_is_valid(except->exceptIndex)) { return 0; @@ -92,14 +90,14 @@ int mpc5xx_set_exception (const rtems_raw_except_connect_data* except) return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); raw_except_table[except->exceptIndex] = *except; exception_handler_table[except->exceptIndex] = except->hdl.raw_hdl; except->on(except); - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -116,7 +114,7 @@ int mpc5xx_get_current_exception (rtems_raw_except_connect_data* except) int mpc5xx_delete_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc5xx_vector_is_valid(except->exceptIndex)){ return 0; @@ -132,7 +130,7 @@ int mpc5xx_delete_exception (const rtems_raw_except_connect_data* except) return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); except->off(except); exception_handler_table[except->exceptIndex] = @@ -141,7 +139,7 @@ int mpc5xx_delete_exception (const rtems_raw_except_connect_data* except) raw_except_table[except->exceptIndex] = default_raw_except_entry; raw_except_table[except->exceptIndex].exceptIndex = except->exceptIndex; - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -154,8 +152,8 @@ int mpc5xx_delete_exception (const rtems_raw_except_connect_data* except) */ int mpc5xx_init_exceptions (rtems_raw_except_global_settings* config) { - unsigned i; - unsigned int level; + unsigned i; + rtems_interrupt_level level; /* * store various accelerators @@ -164,7 +162,7 @@ int mpc5xx_init_exceptions (rtems_raw_except_global_settings* config) local_settings = config; default_raw_except_entry = config->defaultRawEntry; - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); for (i = 0; i < NUM_EXCEPTIONS; i++) { exception_handler_table[i] = raw_except_table[i].hdl.raw_hdl; @@ -176,7 +174,7 @@ int mpc5xx_init_exceptions (rtems_raw_except_global_settings* config) raw_except_table[i].off(&raw_except_table[i]); } } - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } diff --git a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c index ef457a67a2..ae3489de40 100644 --- a/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c +++ b/c/src/lib/libcpu/powerpc/mpc5xx/irq/irq.c @@ -206,7 +206,7 @@ int CPU_irq_enabled_at_usiu(const rtems_irq_number irqLine) int CPU_install_rtems_irq_handler (const rtems_irq_connect_data* irq) { - unsigned int level; + rtems_interrupt_level level; if (!isValidInterrupt(irq->name)) { return 0; @@ -222,7 +222,7 @@ int CPU_install_rtems_irq_handler (const rtems_irq_connect_data* irq) return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); /* * store the data provided by user @@ -254,7 +254,7 @@ int CPU_install_rtems_irq_handler (const rtems_irq_connect_data* irq) */ irq->on(irq); - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -271,7 +271,7 @@ int CPU_get_current_rtems_irq_handler (rtems_irq_connect_data* irq) int CPU_remove_rtems_irq_handler (const rtems_irq_connect_data* irq) { - unsigned int level; + rtems_interrupt_level level; if (!isValidInterrupt(irq->name)) { return 0; @@ -286,7 +286,7 @@ int CPU_remove_rtems_irq_handler (const rtems_irq_connect_data* irq) if (rtems_hdl_tbl[irq->name].hdl != irq->hdl) { return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); /* * Disable interrupt on device @@ -316,7 +316,7 @@ int CPU_remove_rtems_irq_handler (const rtems_irq_connect_data* irq) */ rtems_hdl_tbl[irq->name] = default_rtems_entry; - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -327,8 +327,8 @@ int CPU_remove_rtems_irq_handler (const rtems_irq_connect_data* irq) int CPU_rtems_irq_mngt_set (rtems_irq_global_settings* config) { - int i; - unsigned int level; + int i; + rtems_interrupt_level level; /* * Store various code accelerators @@ -337,7 +337,7 @@ int CPU_rtems_irq_mngt_set (rtems_irq_global_settings* config) default_rtems_entry = config->defaultEntry; rtems_hdl_tbl = config->irqHdlTbl; - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); /* * Start with UIMB IRQ @@ -387,7 +387,7 @@ int CPU_rtems_irq_mngt_set (rtems_irq_global_settings* config) rtems_hdl_tbl[i].off(&rtems_hdl_tbl[i]); } } - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } diff --git a/c/src/lib/libcpu/powerpc/mpc6xx/exceptions/raw_exception.c b/c/src/lib/libcpu/powerpc/mpc6xx/exceptions/raw_exception.c index 5f697bfb0f..c40d2e0408 100644 --- a/c/src/lib/libcpu/powerpc/mpc6xx/exceptions/raw_exception.c +++ b/c/src/lib/libcpu/powerpc/mpc6xx/exceptions/raw_exception.c @@ -224,7 +224,7 @@ int mpc60x_vector_is_valid(rtems_vector vector) int mpc60x_set_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc60x_vector_is_valid(except->exceptIndex)) { printk("mpc60x_set_exception: vector %d is not valid\n", @@ -246,7 +246,7 @@ int mpc60x_set_exception (const rtems_raw_except_connect_data* except) return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); raw_except_table [except->exceptIndex] = *except; codemove((void*)mpc60x_get_vector_addr(except->exceptIndex), @@ -255,7 +255,7 @@ int mpc60x_set_exception (const rtems_raw_except_connect_data* except) PPC_CACHE_ALIGNMENT); except->on(except); - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -272,7 +272,7 @@ int mpc60x_get_current_exception (rtems_raw_except_connect_data* except) int mpc60x_delete_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc60x_vector_is_valid(except->exceptIndex)){ return 0; @@ -289,7 +289,7 @@ int mpc60x_delete_exception (const rtems_raw_except_connect_data* except) except->hdl.raw_hdl_size)) { return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); except->off(except); codemove((void*)mpc60x_get_vector_addr(except->exceptIndex), @@ -301,7 +301,7 @@ int mpc60x_delete_exception (const rtems_raw_except_connect_data* except) raw_except_table[except->exceptIndex] = default_raw_except_entry; raw_except_table[except->exceptIndex].exceptIndex = except->exceptIndex; - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -311,8 +311,8 @@ int mpc60x_delete_exception (const rtems_raw_except_connect_data* except) */ int mpc60x_init_exceptions (rtems_raw_except_global_settings* config) { - unsigned i; - unsigned int level; + int i; + rtems_interrupt_level level; /* * store various accelerators @@ -321,7 +321,7 @@ int mpc60x_init_exceptions (rtems_raw_except_global_settings* config) local_settings = config; default_raw_except_entry = config->defaultRawEntry; - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); for (i=0; i <= LAST_VALID_EXC; i++) { if (!mpc60x_vector_is_valid(i)){ @@ -338,7 +338,7 @@ int mpc60x_init_exceptions (rtems_raw_except_global_settings* config) raw_except_table[i].off(&raw_except_table[i]); } } - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } diff --git a/c/src/lib/libcpu/powerpc/mpc8260/exceptions/raw_exception.c b/c/src/lib/libcpu/powerpc/mpc8260/exceptions/raw_exception.c index 08d8548f9b..78a0275513 100644 --- a/c/src/lib/libcpu/powerpc/mpc8260/exceptions/raw_exception.c +++ b/c/src/lib/libcpu/powerpc/mpc8260/exceptions/raw_exception.c @@ -80,7 +80,7 @@ int mpc8xx_vector_is_valid(rtems_vector vector) int mpc8xx_set_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc8xx_vector_is_valid(except->exceptIndex)) { return 0; @@ -96,7 +96,7 @@ int mpc8xx_set_exception (const rtems_raw_except_connect_data* except) return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); raw_except_table [except->exceptIndex] = *except; /* @@ -112,7 +112,7 @@ int mpc8xx_set_exception (const rtems_raw_except_connect_data* except) except->on(except); - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -129,7 +129,7 @@ int mpc8xx_get_current_exception (rtems_raw_except_connect_data* except) int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc8xx_vector_is_valid(except->exceptIndex)){ return 0; @@ -146,7 +146,7 @@ int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) except->hdl.raw_hdl_size)) { return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); except->off(except); codemove((void*)mpc8xx_get_vector_addr(except->exceptIndex), @@ -158,7 +158,7 @@ int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) raw_except_table[except->exceptIndex] = default_raw_except_entry; raw_except_table[except->exceptIndex].exceptIndex = except->exceptIndex; - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -168,8 +168,8 @@ int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) */ int mpc8xx_init_exceptions (rtems_raw_except_global_settings* config) { - unsigned i; - unsigned int level; + int i; + rtems_interrupt_level level; /* * store various accelerators @@ -178,7 +178,7 @@ int mpc8xx_init_exceptions (rtems_raw_except_global_settings* config) local_settings = config; default_raw_except_entry = config->defaultRawEntry; - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); for (i=0; i <= LAST_VALID_EXC; i++) { if (!mpc8xx_vector_is_valid(i)){ @@ -195,7 +195,7 @@ int mpc8xx_init_exceptions (rtems_raw_except_global_settings* config) raw_except_table[i].off(&raw_except_table[i]); } } - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } diff --git a/c/src/lib/libcpu/powerpc/mpc8xx/exceptions/raw_exception.c b/c/src/lib/libcpu/powerpc/mpc8xx/exceptions/raw_exception.c index 3b338d1f56..3dd28d9a89 100644 --- a/c/src/lib/libcpu/powerpc/mpc8xx/exceptions/raw_exception.c +++ b/c/src/lib/libcpu/powerpc/mpc8xx/exceptions/raw_exception.c @@ -82,7 +82,7 @@ int mpc8xx_vector_is_valid(rtems_vector vector) int mpc8xx_set_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc8xx_vector_is_valid(except->exceptIndex)) { return 0; @@ -98,7 +98,7 @@ int mpc8xx_set_exception (const rtems_raw_except_connect_data* except) return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); raw_except_table [except->exceptIndex] = *except; codemove((void*)mpc8xx_get_vector_addr(except->exceptIndex), @@ -107,7 +107,7 @@ int mpc8xx_set_exception (const rtems_raw_except_connect_data* except) PPC_CACHE_ALIGNMENT); except->on(except); - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -124,7 +124,7 @@ int mpc8xx_get_current_exception (rtems_raw_except_connect_data* except) int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + rtems_interrupt_level level; if (!mpc8xx_vector_is_valid(except->exceptIndex)){ return 0; @@ -141,7 +141,7 @@ int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) except->hdl.raw_hdl_size)) { return 0; } - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); except->off(except); codemove((void*)mpc8xx_get_vector_addr(except->exceptIndex), @@ -153,7 +153,7 @@ int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) raw_except_table[except->exceptIndex] = default_raw_except_entry; raw_except_table[except->exceptIndex].exceptIndex = except->exceptIndex; - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } @@ -163,8 +163,8 @@ int mpc8xx_delete_exception (const rtems_raw_except_connect_data* except) */ int mpc8xx_init_exceptions (rtems_raw_except_global_settings* config) { - unsigned i; - unsigned int level; + int i; + rtems_interrupt_level level; /* * store various accelerators @@ -173,7 +173,7 @@ int mpc8xx_init_exceptions (rtems_raw_except_global_settings* config) local_settings = config; default_raw_except_entry = config->defaultRawEntry; - _CPU_ISR_Disable(level); + rtems_interrupt_disable(level); for (i=0; i <= LAST_VALID_EXC; i++) { if (!mpc8xx_vector_is_valid(i)){ @@ -190,7 +190,7 @@ int mpc8xx_init_exceptions (rtems_raw_except_global_settings* config) raw_except_table[i].off(&raw_except_table[i]); } } - _CPU_ISR_Enable(level); + rtems_interrupt_enable(level); return 1; } diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/raw_exception.c b/c/src/lib/libcpu/powerpc/new-exceptions/raw_exception.c index 7f7ee9c9c3..521b36bd7f 100644 --- a/c/src/lib/libcpu/powerpc/new-exceptions/raw_exception.c +++ b/c/src/lib/libcpu/powerpc/new-exceptions/raw_exception.c @@ -26,6 +26,7 @@ */ #include <rtems/system.h> #include <rtems/score/powerpc.h> +#include <rtems/score/isr.h> #include <rtems/bspIo.h> #include <libcpu/raw_exception.h> #include <libcpu/cpuIdent.h> @@ -385,7 +386,7 @@ int ppc_vector_is_valid(rtems_vector vector) int ppc_set_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + ISR_Level level; if (!ppc_vector_is_valid(except->exceptIndex)) { printk("ppc_set_exception: vector %d is not valid\n", @@ -407,7 +408,7 @@ int ppc_set_exception (const rtems_raw_except_connect_data* except) return 0; } - _CPU_ISR_Disable(level); + _ISR_Disable(level); raw_except_table [except->exceptIndex] = *except; codemove((void*)ppc_get_vector_addr(except->exceptIndex), @@ -416,7 +417,7 @@ int ppc_set_exception (const rtems_raw_except_connect_data* except) PPC_CACHE_ALIGNMENT); except->on(except); - _CPU_ISR_Enable(level); + _ISR_Enable(level); return 1; } @@ -433,7 +434,7 @@ int ppc_get_current_exception (rtems_raw_except_connect_data* except) int ppc_delete_exception (const rtems_raw_except_connect_data* except) { - unsigned int level; + ISR_Level level; if (!ppc_vector_is_valid(except->exceptIndex)){ return 0; @@ -450,7 +451,7 @@ int ppc_delete_exception (const rtems_raw_except_connect_data* except) except->hdl.raw_hdl_size)) { return 0; } - _CPU_ISR_Disable(level); + _ISR_Disable(level); except->off(except); codemove((void*)ppc_get_vector_addr(except->exceptIndex), @@ -462,7 +463,7 @@ int ppc_delete_exception (const rtems_raw_except_connect_data* except) raw_except_table[except->exceptIndex] = default_raw_except_entry; raw_except_table[except->exceptIndex].exceptIndex = except->exceptIndex; - _CPU_ISR_Enable(level); + _ISR_Enable(level); return 1; } @@ -472,8 +473,8 @@ int ppc_delete_exception (const rtems_raw_except_connect_data* except) */ int ppc_init_exceptions (rtems_raw_except_global_settings* config) { - unsigned i; - unsigned int level; + int i; + ISR_Level level; /* * store various accelerators @@ -482,7 +483,7 @@ int ppc_init_exceptions (rtems_raw_except_global_settings* config) local_settings = config; default_raw_except_entry = config->defaultRawEntry; - _CPU_ISR_Disable(level); + _ISR_Disable(level); for (i=0; i <= LAST_VALID_EXC; i++) { if (!ppc_vector_is_valid(i)){ @@ -499,7 +500,7 @@ int ppc_init_exceptions (rtems_raw_except_global_settings* config) raw_except_table[i].off(&raw_except_table[i]); } } - _CPU_ISR_Enable(level); + _ISR_Enable(level); return 1; } diff --git a/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c b/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c index 6a1f810cd0..dc51da6bd6 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c +++ b/c/src/lib/libcpu/powerpc/ppc403/ictrl/ictrl.c @@ -128,10 +128,11 @@ set_exier(uint32_t val) RTEMS_INLINE_ROUTINE void enable_ext_irq( uint32_t mask) { - uint32_t isrlvl; - _CPU_ISR_Disable(isrlvl); + rtems_interrupt_level level; + + rtems_interrupt_disable(level); set_exier(get_exier() | ((mask)&PPC_EXI_MASK)); - _CPU_ISR_Enable(isrlvl); + rtems_interrupt_enable(level); } /* @@ -140,10 +141,11 @@ enable_ext_irq( uint32_t mask) RTEMS_INLINE_ROUTINE void disable_ext_irq( uint32_t mask) { - uint32_t isrlvl; - _CPU_ISR_Disable(isrlvl); + rtems_interrupt_level level; + + rtems_interrupt_disable(level); set_exier(get_exier() & ~(mask) & PPC_EXI_MASK); - _CPU_ISR_Enable(isrlvl); + rtems_interrupt_enable(level); } /* diff --git a/c/src/lib/libcpu/powerpc/ppc403/irq/ictrl.c b/c/src/lib/libcpu/powerpc/ppc403/irq/ictrl.c index 6a1f810cd0..dc51da6bd6 100644 --- a/c/src/lib/libcpu/powerpc/ppc403/irq/ictrl.c +++ b/c/src/lib/libcpu/powerpc/ppc403/irq/ictrl.c @@ -128,10 +128,11 @@ set_exier(uint32_t val) RTEMS_INLINE_ROUTINE void enable_ext_irq( uint32_t mask) { - uint32_t isrlvl; - _CPU_ISR_Disable(isrlvl); + rtems_interrupt_level level; + + rtems_interrupt_disable(level); set_exier(get_exier() | ((mask)&PPC_EXI_MASK)); - _CPU_ISR_Enable(isrlvl); + rtems_interrupt_enable(level); } /* @@ -140,10 +141,11 @@ enable_ext_irq( uint32_t mask) RTEMS_INLINE_ROUTINE void disable_ext_irq( uint32_t mask) { - uint32_t isrlvl; - _CPU_ISR_Disable(isrlvl); + rtems_interrupt_level level; + + rtems_interrupt_disable(level); set_exier(get_exier() & ~(mask) & PPC_EXI_MASK); - _CPU_ISR_Enable(isrlvl); + rtems_interrupt_enable(level); } /* |