summaryrefslogtreecommitdiffstats
path: root/c
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-10-06 19:56:07 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-10-06 19:56:07 +0000
commit133bffb9be3980809def05d2f5c7b2ab81b566a0 (patch)
tree89b7621f35d8b0f5e0dd3af298424faec058bf9c /c
parent2009-10-04 Sebastian Huber <Sebastian.Huber@embedded-brains.de> (diff)
downloadrtems-133bffb9be3980809def05d2f5c7b2ab81b566a0.tar.bz2
various changes
Diffstat (limited to 'c')
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/ChangeLog16
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/Makefile.am5
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/include/bsp.h9
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/startup/bsppanic.c10
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/startup/bspstart.c13
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/startup/cmain.c14
-rw-r--r--c/src/lib/libbsp/powerpc/qemuppc/startup/linkcmds9
7 files changed, 52 insertions, 24 deletions
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 <Thomas.Doerfler@embedded-brains.de>
+ * 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 <Thomas.Doerfler@embedded-brains.de>
* 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 <rtems.h>
#include <rtems/bspIo.h>
+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 :