summaryrefslogtreecommitdiffstats
path: root/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2010-04-25 16:10:36 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2010-04-25 16:10:36 +0000
commitfbd06a090cf4a02fea3c829eb62b587cd0093731 (patch)
treec773800f80785f5a07938ae5c83e38f9db383104 /c/src/lib/libcpu/powerpc/ppc403/clock/clock.c
parent2010-04-25 Joel Sherrill <joel.sherrilL@OARcorp.com> (diff)
downloadrtems-fbd06a090cf4a02fea3c829eb62b587cd0093731.tar.bz2
2010-04-25 Joel Sherrill <joel.sherrilL@OARcorp.com>
* ppc403/clock/clock.c, ppc403/console/console405.c, ppc403/tty_drv/tty_drv.c: Remove warnings and simple vectored interrupt support.
Diffstat (limited to 'c/src/lib/libcpu/powerpc/ppc403/clock/clock.c')
-rw-r--r--c/src/lib/libcpu/powerpc/ppc403/clock/clock.c161
1 files changed, 34 insertions, 127 deletions
diff --git a/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c b/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c
index c9d9243b52..513049e1f8 100644
--- a/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c
+++ b/c/src/lib/libcpu/powerpc/ppc403/clock/clock.c
@@ -50,17 +50,11 @@
#include <bsp.h>
-#ifdef BSP_PPC403_CLOCK_HOOK_EXCEPTION
#include <bsp/vectors.h>
-#define PPC_HAS_CLASSIC_EXCEPTIONS FALSE
-#else
-#if !defined(ppc405)
-#define PPC_HAS_CLASSIC_EXCEPTIONS TRUE
-#else
-#define PPC_HAS_CLASSIC_EXCEPTIONS FALSE
#include <bsp/irq.h>
-#endif
-#endif
+
+extern uint32_t bsp_clicks_per_usec;
+extern bool bsp_timer_internal_clock;
volatile uint32_t Clock_driver_ticks;
static uint32_t pit_value, tick_time;
@@ -74,13 +68,6 @@ rtems_isr_entry set_vector( /* returns old vector */
int type /* RTEMS or RAW intr */
);
-/*
- * These are set by clock driver during its init
- */
-
-rtems_device_major_number rtems_clock_major = ~0;
-rtems_device_minor_number rtems_clock_minor;
-
static inline uint32_t get_itimer(void)
{
register uint32_t rc;
@@ -98,13 +85,7 @@ static inline uint32_t get_itimer(void)
* ISR Handler
*/
-#if PPC_HAS_CLASSIC_EXCEPTIONS
-rtems_isr Clock_isr(rtems_vector_number vector)
-#elif defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
-int Clock_isr(struct _BSP_Exception_frame *f, unsigned int vector)
-#else
void Clock_isr(void* handle)
-#endif
{
uint32_t clicks_til_next_interrupt;
#if defined(BSP_PPC403_CLOCK_ISR_IRQ_LEVEL)
@@ -173,13 +154,8 @@ void Clock_isr(void* handle)
#if defined(BSP_PPC403_CLOCK_ISR_IRQ_LEVEL)
_ISR_Set_level(l_orig)
#endif
-
-#if defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- return 0;
-#endif
}
-#if !PPC_HAS_CLASSIC_EXCEPTIONS && !defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
int ClockIsOn(const rtems_irq_connect_data* unused)
{
register uint32_t tcr;
@@ -188,15 +164,10 @@ int ClockIsOn(const rtems_irq_connect_data* unused)
return (tcr & 0x04000000) != 0;
}
-#endif
void ClockOff(
-#if PPC_HAS_CLASSIC_EXCEPTIONS || defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- void
-#else
const rtems_irq_connect_data* unused
-#endif
- )
+)
{
register uint32_t tcr;
@@ -208,17 +179,11 @@ void ClockOff(
}
void ClockOn(
-#if PPC_HAS_CLASSIC_EXCEPTIONS || defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- void
-#else
const rtems_irq_connect_data* unused
-#endif
- )
+)
{
uint32_t iocr;
register uint32_t tcr;
- extern uint32_t bsp_clicks_per_usec;
- extern bool bsp_timer_internal_clock;
#ifdef ppc403
uint32_t pvr;
#endif /* ppc403 */
@@ -292,15 +257,11 @@ void ClockOn(
void Install_clock(
-#if PPC_HAS_CLASSIC_EXCEPTIONS
- rtems_isr_entry clock_isr
-#elif defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- ppc_exc_handler_t clock_isr
-#else
- void (*clock_isr)(void *)
-#endif
- )
+ void (*clock_isr)(void *)
+)
{
+ rtems_irq_connect_data clockIrqConnData;
+
#ifdef ppc403
uint32_t pvr;
#endif /* ppc403 */
@@ -315,20 +276,6 @@ void Install_clock(
* interrupt overhead
*/
-#if PPC_HAS_CLASSIC_EXCEPTIONS
- {
- rtems_isr_entry previous_isr;
- rtems_interrupt_catch(clock_isr, PPC_IRQ_PIT, &previous_isr);
- ClockOn();
- }
-#elif defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- {
- ppc_exc_set_handler( BSP_PPC403_CLOCK_HOOK_EXCEPTION, clock_isr );
- ClockOn();
- }
-#else
- {
- rtems_irq_connect_data clockIrqConnData;
clockIrqConnData.on = ClockOn;
clockIrqConnData.off = ClockOff;
clockIrqConnData.isOn = ClockIsOn;
@@ -338,61 +285,39 @@ void Install_clock(
printk("Unable to connect Clock Irq handler\n");
rtems_fatal_error_occurred(1);
}
- }
-#endif
- atexit(Clock_exit);
+
+ atexit(Clock_exit);
}
void
ReInstall_clock(
-#if PPC_HAS_CLASSIC_EXCEPTIONS
- rtems_isr_entry new_clock_isr
-#elif defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- ppc_exc_handler_t clock_isr
-#else
- void (*new_clock_isr)(void *)
-#endif
+ void (*new_clock_isr)(void *)
)
{
uint32_t isrlevel = 0;
+ rtems_irq_connect_data clockIrqConnData;
rtems_interrupt_disable(isrlevel);
-#if PPC_HAS_CLASSIC_EXCEPTIONS
- {
- rtems_isr_entry previous_isr;
- rtems_interrupt_catch(new_clock_isr, PPC_IRQ_PIT, &previous_isr);
- ClockOn();
- }
-#elif defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- {
- ppc_exc_set_handler( BSP_PPC403_CLOCK_HOOK_EXCEPTION, clock_isr );
- ClockOn();
- }
-#else
- {
- rtems_irq_connect_data clockIrqConnData;
- clockIrqConnData.name = BSP_PIT;
- if (!BSP_get_current_rtems_irq_handler(&clockIrqConnData)) {
- printk("Unable to stop system clock\n");
- rtems_fatal_error_occurred(1);
- }
+ clockIrqConnData.name = BSP_PIT;
+ if (!BSP_get_current_rtems_irq_handler(&clockIrqConnData)) {
+ printk("Unable to stop system clock\n");
+ rtems_fatal_error_occurred(1);
+ }
- BSP_remove_rtems_irq_handler (&clockIrqConnData);
+ BSP_remove_rtems_irq_handler (&clockIrqConnData);
- clockIrqConnData.on = ClockOn;
- clockIrqConnData.off = ClockOff;
- clockIrqConnData.isOn = ClockIsOn;
- clockIrqConnData.name = BSP_PIT;
- clockIrqConnData.hdl = new_clock_isr;
+ clockIrqConnData.on = ClockOn;
+ clockIrqConnData.off = ClockOff;
+ clockIrqConnData.isOn = ClockIsOn;
+ clockIrqConnData.name = BSP_PIT;
+ clockIrqConnData.hdl = new_clock_isr;
- if (!BSP_install_rtems_irq_handler (&clockIrqConnData)) {
- printk("Unable to connect Clock Irq handler\n");
- rtems_fatal_error_occurred(1);
- }
+ if (!BSP_install_rtems_irq_handler (&clockIrqConnData)) {
+ printk("Unable to connect Clock Irq handler\n");
+ rtems_fatal_error_occurred(1);
}
-#endif
rtems_interrupt_enable(isrlevel);
}
@@ -408,26 +333,15 @@ ReInstall_clock(
void Clock_exit(void)
{
-#if PPC_HAS_CLASSIC_EXCEPTIONS
- ClockOff();
-
- (void) set_vector(0, PPC_IRQ_PIT, 1);
-#elif defined(BSP_PPC403_CLOCK_HOOK_EXCEPTION)
- ClockOff();
- ppc_exc_set_handler( BSP_PPC403_CLOCK_HOOK_EXCEPTION, 0 );
-#else
- {
- rtems_irq_connect_data clockIrqConnData;
+ rtems_irq_connect_data clockIrqConnData;
- clockIrqConnData.name = BSP_PIT;
- if (!BSP_get_current_rtems_irq_handler(&clockIrqConnData)) {
- printk("Unable to stop system clock\n");
- rtems_fatal_error_occurred(1);
- }
+ clockIrqConnData.name = BSP_PIT;
+ if (!BSP_get_current_rtems_irq_handler(&clockIrqConnData)) {
+ printk("Unable to stop system clock\n");
+ rtems_fatal_error_occurred(1);
+ }
- BSP_remove_rtems_irq_handler (&clockIrqConnData);
- }
-#endif
+ BSP_remove_rtems_irq_handler (&clockIrqConnData);
}
rtems_device_driver Clock_initialize(
@@ -438,12 +352,5 @@ rtems_device_driver Clock_initialize(
{
Install_clock( Clock_isr );
- /*
- * make major/minor avail to others such as shared memory driver
- */
-
- rtems_clock_major = major;
- rtems_clock_minor = minor;
-
return RTEMS_SUCCESSFUL;
}