From e08dbc5ea9ec881b6fc93cf926c18fb094d3bd55 Mon Sep 17 00:00:00 2001 From: Thomas Doerfler Date: Tue, 3 Nov 2009 18:45:04 +0000 Subject: various PowerPC code maintenance --- c/src/lib/libbsp/powerpc/ChangeLog | 5 ++ c/src/lib/libbsp/powerpc/gen5200/ChangeLog | 4 ++ c/src/lib/libbsp/powerpc/gen5200/start/start.S | 5 -- c/src/lib/libbsp/powerpc/gen83xx/ChangeLog | 4 ++ c/src/lib/libbsp/powerpc/gen83xx/start/start.S | 5 -- c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog | 6 +++ c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am | 6 +-- c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c | 2 +- c/src/lib/libbsp/powerpc/mpc8260ads/start/start.S | 5 -- .../libbsp/powerpc/mpc8260ads/startup/bspstart.c | 17 +++--- c/src/lib/libbsp/powerpc/shared/clock/clock.c | 29 ---------- c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c | 2 +- c/src/lib/libbsp/powerpc/tqm8xx/ChangeLog | 4 ++ c/src/lib/libbsp/powerpc/tqm8xx/console/console.c | 62 +++++++++++++--------- c/src/lib/libbsp/powerpc/tqm8xx/startup/bspstart.c | 4 +- 15 files changed, 74 insertions(+), 86 deletions(-) (limited to 'c/src/lib/libbsp') diff --git a/c/src/lib/libbsp/powerpc/ChangeLog b/c/src/lib/libbsp/powerpc/ChangeLog index 9875c944dd..153c5de5f2 100644 --- a/c/src/lib/libbsp/powerpc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/ChangeLog @@ -1,3 +1,8 @@ +2009-11-03 Thomas Doerfler + + * shared/clock/clock.c: Remove classic decrementer handler + * shared/vme/vme_universe.c: removed non-prototype warnings + 2009-11-03 Ralf Corsépius * shared/startup/probeMemEnd.c: Add missing prototypes. diff --git a/c/src/lib/libbsp/powerpc/gen5200/ChangeLog b/c/src/lib/libbsp/powerpc/gen5200/ChangeLog index 6b3a31a065..130b2bdb7e 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/ChangeLog +++ b/c/src/lib/libbsp/powerpc/gen5200/ChangeLog @@ -1,3 +1,7 @@ +2009-11-02 Thomas Doerfler + + * start/start.S: call to boot_card checked, removed warning + 2009-10-22 Sebastian Huber * Makefile.am, preinstall.am: Update for exception support changes. diff --git a/c/src/lib/libbsp/powerpc/gen5200/start/start.S b/c/src/lib/libbsp/powerpc/gen5200/start/start.S index d22d7d6cc6..4e81be6c64 100644 --- a/c/src/lib/libbsp/powerpc/gen5200/start/start.S +++ b/c/src/lib/libbsp/powerpc/gen5200/start/start.S @@ -90,11 +90,6 @@ /* */ /***********************************************************************/ -#warning Call to boot_card has changed and needs checking. -#warning The call is "void boot_card(const char* cmdline);" -#warning You need to pass a NULL. -#warning Please check and remove these warnings. - #include #include diff --git a/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog b/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog index dee3957d61..0b1e245bae 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog +++ b/c/src/lib/libbsp/powerpc/gen83xx/ChangeLog @@ -1,3 +1,7 @@ +2009-11-02 Thomas Doerfler + + * start/start.S: call to boot_card checked, removed warning + 2009-10-22 Sebastian Huber * Makefile.am, preinstall.am: Update for exception support changes. diff --git a/c/src/lib/libbsp/powerpc/gen83xx/start/start.S b/c/src/lib/libbsp/powerpc/gen83xx/start/start.S index 2168526f1b..8dec6a1822 100644 --- a/c/src/lib/libbsp/powerpc/gen83xx/start/start.S +++ b/c/src/lib/libbsp/powerpc/gen83xx/start/start.S @@ -19,11 +19,6 @@ /* $Id$ */ -#warning Call to boot_card has changed and needs checking. -#warning The call is "void boot_card(const char* cmdline);" -#warning You need to pass a NULL. -#warning Please check and remove these warnings. - #include #include #include diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog b/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog index fef8f5e5be..3af3aeef6a 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/ChangeLog @@ -1,3 +1,9 @@ +2009-11-03 Thomas Doerfler + + * start/start.S: checked and removed boot_card warning + * irq/irq.c: adapted exception handler parameters + * startup/bspstart.c: removed non-prototype warnings + 2009-10-23 Sebastian Huber * vectors/vectors.h, vectors/vectors_init.c, vectors/vectors.S, diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am b/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am index 9fa5325019..d3ac98c2fa 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/Makefile.am @@ -30,8 +30,9 @@ dist_project_lib_DATA += startup/linkcmds noinst_LIBRARIES += libbsp.a libbsp_a_SOURCES = -# pclock -libbsp_a_SOURCES += clock/p_clock.c +# clock +libbsp_a_SOURCES += ../shared/clock/clock.c + # console libbsp_a_SOURCES += console/console.c @@ -68,7 +69,6 @@ libbsp_a_LIBADD = ../../../libcpu/@RTEMS_CPU@/shared/cpuIdent.rel \ ../../../libcpu/@RTEMS_CPU@/shared/cache.rel \ ../../../libcpu/@RTEMS_CPU@/@exceptions@/rtems-cpu.rel \ ../../../libcpu/@RTEMS_CPU@/@exceptions@/exc_bspsupport.rel \ - ../../../libcpu/@RTEMS_CPU@/mpc8260/clock.rel \ ../../../libcpu/@RTEMS_CPU@/mpc8260/console-generic.rel \ ../../../libcpu/@RTEMS_CPU@/mpc8260/cpm.rel \ ../../../libcpu/@RTEMS_CPU@/mpc8260/mmu.rel \ diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c index e7b212177e..8994896696 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/irq/irq.c @@ -213,7 +213,7 @@ volatile unsigned int maxLoop = 0; /* * High level IRQ handler called from shared_raw_irq_code_entry */ -int C_dispatch_irq_handler (CPU_Interrupt_frame *frame, unsigned int excNum) +int C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned excNum) { register unsigned int irq; #if 0 diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/start/start.S b/c/src/lib/libbsp/powerpc/mpc8260ads/start/start.S index 1d3d7aeb26..d238634cc1 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/start/start.S +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/start/start.S @@ -33,11 +33,6 @@ #include -#warning Call to boot_card has changed and needs checking. -#warning The call is "void boot_card(const char* cmdline);" -#warning You need to pass a NULL. -#warning Please check and remove these warnings. - /* * The initial stack is set to run BELOW the code base address. * (between the vectors and text sections) diff --git a/c/src/lib/libbsp/powerpc/mpc8260ads/startup/bspstart.c b/c/src/lib/libbsp/powerpc/mpc8260ads/startup/bspstart.c index fc48062bbc..0126091224 100644 --- a/c/src/lib/libbsp/powerpc/mpc8260ads/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/mpc8260ads/startup/bspstart.c @@ -89,56 +89,56 @@ void _BSP_Fatal_error(unsigned int v) __asm__ __volatile ("sc"); } -void _BSP_GPLED0_on() +void _BSP_GPLED0_on(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); csr->bcsr0 &= ~GP0_LED; /* Turn on GP0 LED */ } -void _BSP_GPLED0_off() +void _BSP_GPLED0_off(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); csr->bcsr0 |= GP0_LED; /* Turn off GP0 LED */ } -void _BSP_GPLED1_on() +void _BSP_GPLED1_on(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); csr->bcsr0 &= ~GP1_LED; /* Turn on GP1 LED */ } -void _BSP_GPLED1_off() +void _BSP_GPLED1_off(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); csr->bcsr0 |= GP1_LED; /* Turn off GP1 LED */ } -void _BSP_Uart1_enable() +void _BSP_Uart1_enable(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); csr->bcsr1 &= ~UART1_E; /* Enable Uart1 */ } -void _BSP_Uart1_disable() +void _BSP_Uart1_disable(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); csr->bcsr1 |= UART1_E; /* Disable Uart1 */ } -void _BSP_Uart2_enable() +void _BSP_Uart2_enable(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); csr->bcsr1 &= ~UART2_E; /* Enable Uart2 */ } -void _BSP_Uart2_disable() +void _BSP_Uart2_disable(void) { BCSR *csr; csr = (BCSR *)(m8260.memc[1].br & 0xFFFF8000); @@ -149,7 +149,6 @@ void _BSP_Uart2_disable() void bsp_start(void) { rtems_status_code sc = RTEMS_SUCCESSFUL; - extern void *_WorkspaceBase; ppc_cpu_id_t myCpu; ppc_cpu_revision_t myCpuRevision; diff --git a/c/src/lib/libbsp/powerpc/shared/clock/clock.c b/c/src/lib/libbsp/powerpc/shared/clock/clock.c index e40cd2078e..740972fa76 100644 --- a/c/src/lib/libbsp/powerpc/shared/clock/clock.c +++ b/c/src/lib/libbsp/powerpc/shared/clock/clock.c @@ -94,35 +94,6 @@ static int ppc_clock_exception_handler( BSP_Exception_frame *frame, unsigned num return 0; } -static int ppc_clock_exception_handler_classic( BSP_Exception_frame *frame, unsigned number) -{ - uint32_t reg1; - uint32_t reg2; - uint32_t msr; - - /* Set new decrementer value */ - asm volatile( - "lwz %1, ppc_clock_decrementer_value@sdarel(13);" - "mfdec %0;" - "add %0, %0, %1;" - "mtdec %0" - : "=r" (reg1), "=r" (reg2) - ); - - /* Increment clock ticks */ - Clock_driver_ticks += 1; - - /* Enable external exceptions */ - msr = ppc_external_exceptions_enable(); - - /* Call clock ticker */ - ppc_clock_tick(); - - /* Restore machine state */ - ppc_external_exceptions_disable( msr); - - return 0; -} static int ppc_clock_exception_handler_booke( BSP_Exception_frame *frame, unsigned number) { diff --git a/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c b/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c index 2477e255f9..84c22c462f 100644 --- a/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c +++ b/c/src/lib/libbsp/powerpc/shared/vme/vme_universe.c @@ -392,7 +392,7 @@ int BSP_VMEInit(void) vmeTsi148Reset(); #ifdef VME_CLEAR_BRIDGE_ERRORS { - extern unsigned short (*_BSP_clear_vmebridge_errors)(); + extern unsigned short (*_BSP_clear_vmebridge_errors)(void); _BSP_clear_vmebridge_errors = VME_CLEAR_BRIDGE_ERRORS; diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/ChangeLog b/c/src/lib/libbsp/powerpc/tqm8xx/ChangeLog index f080c18408..a06efaabfa 100644 --- a/c/src/lib/libbsp/powerpc/tqm8xx/ChangeLog +++ b/c/src/lib/libbsp/powerpc/tqm8xx/ChangeLog @@ -1,3 +1,7 @@ +2009-11-03 Thomas Doerfler + + * startup/bspstart.s, console/console.c: various fixes + 2009-10-28 Thomas Doerfler * startup/bspstart.s: correct clock tick init diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/console/console.c b/c/src/lib/libbsp/powerpc/tqm8xx/console/console.c index 7cfa9dd017..6ca12de107 100644 --- a/c/src/lib/libbsp/powerpc/tqm8xx/console/console.c +++ b/c/src/lib/libbsp/powerpc/tqm8xx/console/console.c @@ -66,7 +66,7 @@ /* * Interrupt-driven input buffer */ -#define RXBUFSIZE 256 +#define RXBUFSIZE 16 #define M8xx_SICR_BRG1 (0) #define M8xx_SICR_BRG2 (1) @@ -662,7 +662,7 @@ sccInitialize (int chan) sccFrstRxBd[chan][i].status |= M8xx_BD_WRAP; } sccFrstRxBd[chan][i].length = 0; - sccFrstRxBd[chan][i].buffer = rxBuf[chan][i]; + sccFrstRxBd[chan][i].buffer = (*rxBuf[chan])[i]; } /* * Setup the Transmit Buffer Descriptor @@ -728,32 +728,44 @@ sccInitialize (int chan) static int sccPollRead (int minor) { - unsigned char c; + int c = -1; int chan = minor; - if ((sccCurrRxBd[chan]->status & M8xx_BD_EMPTY) != 0) { - return -1; - } - rtems_cache_invalidate_multiple_data_lines((void *)sccCurrRxBd[chan]->buffer, - sccCurrRxBd[chan]->length); - c = *((char *)sccCurrRxBd[chan]->buffer); - /* - * clear status - */ - sccCurrRxBd[chan]->status = - (sccCurrRxBd[chan]->status - & (M8xx_BD_WRAP | M8xx_BD_INTERRUPT)) - | M8xx_BD_EMPTY; - /* - * advance to next BD - */ - if ((sccCurrRxBd[chan]->status & M8xx_BD_WRAP) != 0) { - sccCurrRxBd[chan] = sccFrstRxBd[chan]; - } - else { - sccCurrRxBd[chan]++; + while(1) { + if ((sccCurrRxBd[chan]->status & M8xx_BD_EMPTY) != 0) { + return -1; + } + + if (0 == (sccCurrRxBd[chan]->status & (M8xx_BD_OVERRUN + | M8xx_BD_PARITY_ERROR + | M8xx_BD_FRAMING_ERROR + | M8xx_BD_BREAK + | M8xx_BD_IDLE))) { + /* character received and no error detected */ + rtems_cache_invalidate_multiple_data_lines((void *)sccCurrRxBd[chan]->buffer, + sccCurrRxBd[chan]->length); + c = (unsigned)*((char *)sccCurrRxBd[chan]->buffer); + /* + * clear status + */ + } + sccCurrRxBd[chan]->status = + (sccCurrRxBd[chan]->status + & (M8xx_BD_WRAP | M8xx_BD_INTERRUPT)) + | M8xx_BD_EMPTY; + /* + * advance to next BD + */ + if ((sccCurrRxBd[chan]->status & M8xx_BD_WRAP) != 0) { + sccCurrRxBd[chan] = sccFrstRxBd[chan]; + } + else { + sccCurrRxBd[chan]++; + } + if (c >= 0) { + return c; + } } - return c; } diff --git a/c/src/lib/libbsp/powerpc/tqm8xx/startup/bspstart.c b/c/src/lib/libbsp/powerpc/tqm8xx/startup/bspstart.c index d701ed7291..11bcf51377 100644 --- a/c/src/lib/libbsp/powerpc/tqm8xx/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/tqm8xx/startup/bspstart.c @@ -173,9 +173,7 @@ void bsp_start( void) BSP_panic("Cannot determine BUS frequency\n"); } - bsp_clicks_per_usec = BSP_bus_frequency/16; /* force to zero to control - * PIT clock driver from EXTCLK - */ + bsp_clicks_per_usec = BSP_bus_frequency/1000000/16; bsp_timer_least_valid = 3; bsp_timer_average_overhead = 3; -- cgit v1.2.3