From d04bf28ef6492b4034960b531bbacb52c850330e Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 20 May 2008 22:13:16 +0000 Subject: 2008-05-20 Joel Sherrill * Makefile.am, configure.ac, startup/start.c: Use new framework capability where RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION. --- c/src/lib/libbsp/arm/nds/ChangeLog | 5 +++ c/src/lib/libbsp/arm/nds/Makefile.am | 15 +++++--- c/src/lib/libbsp/arm/nds/configure.ac | 2 ++ c/src/lib/libbsp/arm/nds/startup/start.c | 60 +++++++++----------------------- 4 files changed, 34 insertions(+), 48 deletions(-) (limited to 'c/src') diff --git a/c/src/lib/libbsp/arm/nds/ChangeLog b/c/src/lib/libbsp/arm/nds/ChangeLog index 1625340299..42d6737ee7 100644 --- a/c/src/lib/libbsp/arm/nds/ChangeLog +++ b/c/src/lib/libbsp/arm/nds/ChangeLog @@ -1,3 +1,8 @@ +2008-05-20 Joel Sherrill + + * Makefile.am, configure.ac, startup/start.c: Use new framework + capability where RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION. + 2008-04-18 Joel Sherrill * Makefile.am: Use bin2s to produce assembly files which do not need diff --git a/c/src/lib/libbsp/arm/nds/Makefile.am b/c/src/lib/libbsp/arm/nds/Makefile.am index e3afcf97c3..264cf14ef7 100644 --- a/c/src/lib/libbsp/arm/nds/Makefile.am +++ b/c/src/lib/libbsp/arm/nds/Makefile.am @@ -33,11 +33,15 @@ include_rtems_HEADERS = fb/fb.h touchscreen/touchscreen.h sound/sound.h noinst_PROGRAMS += startup.rel startup_rel_SOURCES = ../../shared/bsplibc.c ../../shared/bsppost.c \ startup/start.c ../../shared/bsppredriverhook.c \ - ../../shared/bootcard.c ../../shared/sbrk.c \ - ../../shared/gnatinstallhandler.c + ../../shared/bsppretaskinghook.c ../../shared/bootcard.c startup_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include startup_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) +noinst_PROGRAMS += gnatsupp.rel +gnatsupp_rel_SOURCES = ../../shared/gnatinstallhandler.c +gnatsupp_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include +gnatsupp_rel_LDFLAGS = $(RTEMS_RELLDFLAGS) + noinst_PROGRAMS += clock.rel clock_rel_SOURCES = clock/clock.c clock_rel_CPPFLAGS = $(AM_CPPFLAGS) -DARM9 -I$(srcdir)/libnds/include @@ -251,9 +255,12 @@ project_lib_DATA += coproc.bin noinst_LIBRARIES = libbsp.a libbsp_a_SOURCES = -libbsp_a_LIBADD = clock.rel console.rel startup.rel irq.rel timer.rel libnds9.rel rtc.rel fb.rel touchscreen.rel sound.rel block.rel libdldi.rel +libbsp_a_LIBADD = clock.rel console.rel gnatsupp.rel startup.rel irq.rel \ + timer.rel libnds9.rel rtc.rel fb.rel touchscreen.rel sound.rel \ + block.rel libdldi.rel + if HAS_NETWORKING -libbsp_a_LIBADD += wifi.rel dswifi9.rel + libbsp_a_LIBADD += wifi.rel dswifi9.rel endif include $(srcdir)/preinstall.am diff --git a/c/src/lib/libbsp/arm/nds/configure.ac b/c/src/lib/libbsp/arm/nds/configure.ac index 860a89acfc..9923363b2e 100644 --- a/c/src/lib/libbsp/arm/nds/configure.ac +++ b/c/src/lib/libbsp/arm/nds/configure.ac @@ -19,6 +19,8 @@ RTEMS_PROG_CCAS RTEMS_CHECK_NETWORKING AM_CONDITIONAL(HAS_NETWORKING,test "$HAS_NETWORKING" = "yes") +RTEMS_BSP_BOOTCARD_HANDLES_RAM_ALLOCATION + RTEMS_CONFIG_BUILD_SUBDIRS(tools) ## $srcdir/mk_libnds.sh $srcdir diff --git a/c/src/lib/libbsp/arm/nds/startup/start.c b/c/src/lib/libbsp/arm/nds/startup/start.c index 4a5022be06..2521a22793 100644 --- a/c/src/lib/libbsp/arm/nds/startup/start.c +++ b/c/src/lib/libbsp/arm/nds/startup/start.c @@ -14,48 +14,28 @@ #include #include -/* - * ld linker symbols. - */ - -extern uint8_t __bss_start; -extern uint8_t __bss_end; -extern uint8_t _end; -extern uint8_t __ewram_end; - -/* - * address of start of free memory - should be updated after creating new - * partitions or regions. - */ - -static uint32_t heap_start; - -/* - * other bsp init functions. - */ - -extern void bsp_libc_init (void *, uint32_t, int); - /* * This definition comes from ARM cpu code. */ - extern unsigned int arm_cpu_mode; /* - * setup libc. + * This method returns the base address and size of the area which + * is to be allocated between the RTEMS Workspace and the C Program + * Heap. */ - -void -bsp_pretasking_hook (void) +void bsp_get_workarea( + void **workarea_base, + size_t *workarea_size, + size_t *requested_heap_size +) { - uint32_t heap_size; + extern uint8_t _end; + extern uint8_t __ewram_end; - printk ("[+] initializing heap\n"); - - /* initialize heap with all remaining memory */ - heap_size = (uint32_t) & __ewram_end - heap_start; - bsp_libc_init ((void *) heap_start, heap_size, 0); + *workarea_base = &_end; + *workarea_size = (void *)&__ewram_end - (void *)&_end; + *requested_heap_size = 0; } /* @@ -65,8 +45,6 @@ bsp_pretasking_hook (void) void bsp_start (void) { - Configuration.work_space_start = &_end; - /* initialize irq management */ BSP_rtems_irq_mngt_init (); @@ -89,15 +67,6 @@ bsp_start (void) /* configure clock period */ Configuration.microseconds_per_tick = 10000; /* us */ - - /* check memory space for rtems workspace */ - heap_start = - Configuration.work_space_start + - rtems_configuration_get_work_space_size (); - if (heap_start > &__ewram_end) { - printk ("[!] memory exhausted\n"); - bsp_cleanup (); - } } /* @@ -107,6 +76,9 @@ bsp_start (void) void bss_reset (void) { + extern uint8_t __bss_start; + extern uint8_t __bss_end; + memset (&__bss_start, 0, (uint32_t) & __bss_end - (uint32_t) & __bss_start); } -- cgit v1.2.3