From 133bffb9be3980809def05d2f5c7b2ab81b566a0 Mon Sep 17 00:00:00 2001 From: Thomas Doerfler Date: Tue, 6 Oct 2009 19:56:07 +0000 Subject: various changes --- c/src/lib/libbsp/powerpc/qemuppc/ChangeLog | 16 ++++++++++++++++ c/src/lib/libbsp/powerpc/qemuppc/Makefile.am | 5 ++--- c/src/lib/libbsp/powerpc/qemuppc/include/bsp.h | 9 +++++++++ c/src/lib/libbsp/powerpc/qemuppc/startup/bsppanic.c | 10 ++++++++-- c/src/lib/libbsp/powerpc/qemuppc/startup/bspstart.c | 13 ++++--------- c/src/lib/libbsp/powerpc/qemuppc/startup/cmain.c | 14 ++++++-------- c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds | 9 +++++++-- 7 files changed, 52 insertions(+), 24 deletions(-) (limited to 'c') diff --git a/c/src/lib/libbsp/powerpc/qemuppc/ChangeLog b/c/src/lib/libbsp/powerpc/qemuppc/ChangeLog index 1b56602355..17b6976e2e 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/ChangeLog +++ b/c/src/lib/libbsp/powerpc/qemuppc/ChangeLog @@ -1,3 +1,19 @@ +2009-10-06 Thomas Doerfler + * Makefile.am: + do not use shared/timerstub + + * include/bsp.h: + add macro to convert Decrementer value + + * startup/bspstart.c: + set clock frequency to suitable value + + * startup/bsppanic.c: + issue a reset after panic + + * startup/linkcmds: + add space for stacks + 2009-10-03 Thomas Doerfler * startup/bspstart.c: add missing file diff --git a/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am b/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am index 4bb0496fc6..387c43b158 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am +++ b/c/src/lib/libbsp/powerpc/qemuppc/Makefile.am @@ -38,11 +38,10 @@ startup_SOURCES = ../../shared/bspclean.c ../../shared/bsplibc.c \ ../../shared/gnatinstallhandler.c \ startup/cmain.c startup/bspstart.c startup/bsppanic.c # pclock -clock_SOURCES = ../../shared/clock_driver_simidle.c +# clock_SOURCES = ../../shared/clock_driver_simidle.c +clock_SOURCES = ../shared/clock/clock.c # console console_SOURCES = ../../shared/console-polled.c console/console-io.c -#timer -timer_SOURCES = ../../shared/timerstub.c # irq include_bsp_HEADERS = irq/irq.h \ diff --git a/c/src/lib/libbsp/powerpc/qemuppc/include/bsp.h b/c/src/lib/libbsp/powerpc/qemuppc/include/bsp.h index 221b95bce0..79352603af 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/include/bsp.h +++ b/c/src/lib/libbsp/powerpc/qemuppc/include/bsp.h @@ -28,9 +28,18 @@ extern "C" { #define BSP_SMALL_MEMORY 1 +/* + * Convert decrementer value to tenths of microseconds (used by shared timer + * driver). + */ +#define BSP_Convert_decrementer( _value ) \ + ((int) (((_value) * 10) / bsp_clicks_per_usec)) + +#if 0 /* support for simulated clock tick */ Thread clock_driver_sim_idle_body(uintptr_t); #define BSP_IDLE_TASK_BODY clock_driver_sim_idle_body +#endif #ifdef __cplusplus } diff --git a/c/src/lib/libbsp/powerpc/qemuppc/startup/bsppanic.c b/c/src/lib/libbsp/powerpc/qemuppc/startup/bsppanic.c index 4a9827f6e4..c6a7267c72 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/startup/bsppanic.c +++ b/c/src/lib/libbsp/powerpc/qemuppc/startup/bsppanic.c @@ -1,14 +1,20 @@ #include #include +static void +__outb(int port, unsigned char v) +{ + *((volatile unsigned char *)(0x80000000 + port)) = v; +} + void BSP_panic(char *s) { printk("%s PANIC %s\n",_RTEMS_version, s); - while(1){}; + __outb (0x92, 0x01); } void _BSP_Fatal_error(unsigned int v) { printk("%s PANIC ERROR %x\n",_RTEMS_version, v); - while(1){}; + __outb (0x92, 0x01); } diff --git a/c/src/lib/libbsp/powerpc/qemuppc/startup/bspstart.c b/c/src/lib/libbsp/powerpc/qemuppc/startup/bspstart.c index 6668290256..751f9f3860 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/startup/bspstart.c +++ b/c/src/lib/libbsp/powerpc/qemuppc/startup/bspstart.c @@ -49,11 +49,6 @@ extern char bsp_interrupt_stack_end[]; extern char bsp_interrupt_stack_size[]; uint32_t BSP_mem_size = (uint32_t)RamSize; -/* - * Time base divisior (how many tick for 1 second). - */ -unsigned int BSP_time_base_divisor; - /* Default decrementer exception handler */ static int default_decrementer_exception_handler( BSP_Exception_frame *frame, unsigned number) { @@ -74,7 +69,6 @@ void bsp_start( void ) uint32_t intrStackSize; int rv = 0; rtems_status_code sc; - /* * Note we can not get CPU identification dynamically, so * force current_ppc_cpu. @@ -83,10 +77,11 @@ void bsp_start( void ) /* * initialize the device driver parameters + * assume we are running with 20MHz bus + * this should speed up some tests :-) */ - /* BSP_bus_frequency = (unsigned int)&PSIM_INSTRUCTIONS_PER_MICROSECOND; */ - /* bsp_clicks_per_usec = BSP_bus_frequency; */ - /* BSP_time_base_divisor = 1; */ + BSP_bus_frequency = 20; + bsp_clicks_per_usec = BSP_bus_frequency; /* * Initialize the interrupt related settings. diff --git a/c/src/lib/libbsp/powerpc/qemuppc/startup/cmain.c b/c/src/lib/libbsp/powerpc/qemuppc/startup/cmain.c index 961d3823a2..daa78cbf97 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/startup/cmain.c +++ b/c/src/lib/libbsp/powerpc/qemuppc/startup/cmain.c @@ -1,5 +1,4 @@ -#if 1 static void __outb(int port, unsigned char v) { @@ -11,7 +10,6 @@ __inb(int port) { return *((volatile unsigned char *)(0x80000000 + port)); } -#endif static void __memcpy (unsigned char *d, unsigned char *s, int len) @@ -43,12 +41,12 @@ void cmain (void) * init variable sections */ __memcpy (__sdata2_start, __sdata2_load, __sdata2_end - __sdata2_start); - __memcpy (__sdata_start, __sdata_load, __sdata_end - __sdata_start); - __memcpy (__data_start, __data_load, __data_end - __data_start); - __bzero (__sbss2_start, __sbss2_end - __sbss2_start); - __bzero (__sbss_start, __sbss_end - __sbss_start); - __bzero (__bss_start, __bss_end - __bss_start); - printk( "hello #\n"); + __memcpy (__sdata_start , __sdata_load , __sdata_end - __sdata_start); + __memcpy (__data_start , __data_load , __data_end - __data_start); + __bzero (__sbss2_start , __sbss2_end - __sbss2_start); + __bzero (__sbss_start , __sbss_end - __sbss_start); + __bzero (__bss_start , __bss_end - __bss_start); + printk( "start of BSP\n"); boot_card(0); printk( "end of BSP\n"); __outb (0x92, 0x01); diff --git a/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds b/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds index 6787e3f1a3..cdfce690fd 100644 --- a/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds +++ b/c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds @@ -84,7 +84,11 @@ SECTIONS __rodata_end = .; } >ROM =0 - . = 0x1000; + .vectors : + { + . = . + 0x2000; /* skip vector area */ + } >RAM + __sdata2_load = __rodata_end; .sdata2 : AT (__sdata2_load) { @@ -165,7 +169,8 @@ SECTIONS bsp_interrupt_stack_end = bsp_interrupt_stack_start + 32k; bsp_interrupt_stack_size = bsp_interrupt_stack_end - bsp_interrupt_stack_start; - WorkAreaBase = .; + bsp_work_area_start = bsp_interrupt_stack_end; + WorkAreaBase = bsp_work_area_start; . = RamBase + RamSize; .reset : -- cgit v1.2.3