diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2008-10-02 19:13:05 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2008-10-02 19:13:05 +0000 |
commit | 61814f978e390ab499a24bc614a8eb979b707cd7 (patch) | |
tree | 0a5d076f65130d44f6d210d473f6f19e654bfed8 /c | |
parent | 2008-10-02 Joel Sherrill <joel.sherrill@oarcorp.com> (diff) | |
download | rtems-61814f978e390ab499a24bc614a8eb979b707cd7.tar.bz2 |
2008-10-02 Joel Sherrill <joel.sherrill@oarcorp.com>
* bootcard.c, bspgetworkarea.c, bsppretaskinghook.c,
include/bootcard.h: Change size_t to ssize_t on bsp_get_work_area().
On 16-bit architectures, size_t can be 16-bits which would limit the
work area to 64K.
Diffstat (limited to 'c')
-rw-r--r-- | c/src/lib/libbsp/shared/ChangeLog | 7 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/bootcard.c | 18 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/bspgetworkarea.c | 10 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/bsppretaskinghook.c | 2 | ||||
-rw-r--r-- | c/src/lib/libbsp/shared/include/bootcard.h | 9 |
5 files changed, 26 insertions, 20 deletions
diff --git a/c/src/lib/libbsp/shared/ChangeLog b/c/src/lib/libbsp/shared/ChangeLog index 290070a275..bcddcfabb2 100644 --- a/c/src/lib/libbsp/shared/ChangeLog +++ b/c/src/lib/libbsp/shared/ChangeLog @@ -1,3 +1,10 @@ +2008-10-02 Joel Sherrill <joel.sherrill@oarcorp.com> + + * bootcard.c, bspgetworkarea.c, bsppretaskinghook.c, + include/bootcard.h: Change size_t to ssize_t on bsp_get_work_area(). + On 16-bit architectures, size_t can be 16-bits which would limit the + work area to 64K. + 2008-09-30 Sebastian Huber <sebastian.huber@embedded-brains.de> * include/utility.h: Renamed various macros. diff --git a/c/src/lib/libbsp/shared/bootcard.c b/c/src/lib/libbsp/shared/bootcard.c index 67d63a4945..58b1fb8aa5 100644 --- a/c/src/lib/libbsp/shared/bootcard.c +++ b/c/src/lib/libbsp/shared/bootcard.c @@ -63,13 +63,13 @@ extern bool rtems_unified_work_area; * the RTEMS Workspace and C Program Heap. */ static rtems_status_code bootcard_bsp_libc_helper( - void *work_area_start, - size_t work_area_size, - void *heap_start, - size_t heap_size + void *work_area_start, + ssize_t work_area_size, + void *heap_start, + ssize_t heap_size ) { - size_t heap_size_default = 0; + ssize_t heap_size_default = 0; if ( !rtems_unified_work_area && heap_start == BSP_BOOTCARD_HEAP_USES_WORK_AREA) { @@ -86,11 +86,11 @@ static rtems_status_code bootcard_bsp_libc_helper( * For the default heap size use the free space from the start of the * work area up to the work space start as heap area. */ - heap_size_default = (size_t) ((char *) Configuration.work_space_start + heap_size_default = (ssize_t) ((char *) Configuration.work_space_start - (char *) work_area_start); /* Keep it as a multiple of 16 bytes */ - heap_size_default &= ~((size_t) 0xf); + heap_size_default &= ~((ssize_t) 0xf); /* Use default heap size if requested */ if (heap_size == BSP_BOOTCARD_HEAP_SIZE_DEFAULT) { @@ -127,9 +127,9 @@ int boot_card( rtems_interrupt_level bsp_isr_level; rtems_status_code sc = RTEMS_SUCCESSFUL; void *work_area_start = NULL; - size_t work_area_size = 0; + ssize_t work_area_size = 0; void *heap_start = NULL; - size_t heap_size = 0; + ssize_t heap_size = 0; /* * Special case for PowerPC: The interrupt disable mask is stored in SPRG0. diff --git a/c/src/lib/libbsp/shared/bspgetworkarea.c b/c/src/lib/libbsp/shared/bspgetworkarea.c index 5cc5ce4502..db03d1e3e7 100644 --- a/c/src/lib/libbsp/shared/bspgetworkarea.c +++ b/c/src/lib/libbsp/shared/bspgetworkarea.c @@ -43,10 +43,10 @@ extern char HeapSize[]; * Heap. */ void bsp_get_work_area( - void **work_area_start, - size_t *work_area_size, - void **heap_start, - size_t *heap_size + void **work_area_start, + ssize_t *work_area_size, + void **heap_start, + ssize_t *heap_size ) { uintptr_t ram_end; @@ -61,7 +61,7 @@ void bsp_get_work_area( *work_area_start = WorkAreaBase; *work_area_size = ram_end - (uintptr_t) WorkAreaBase; *heap_start = BSP_BOOTCARD_HEAP_USES_WORK_AREA; - *heap_size = (size_t) HeapSize; + *heap_size = (ssize_t) HeapSize; #ifdef BSP_GET_WORK_AREA_DEBUG printk( "work_area_start = %p\n", *work_area_start ); diff --git a/c/src/lib/libbsp/shared/bsppretaskinghook.c b/c/src/lib/libbsp/shared/bsppretaskinghook.c index 8437ff933a..a1331100cb 100644 --- a/c/src/lib/libbsp/shared/bsppretaskinghook.c +++ b/c/src/lib/libbsp/shared/bsppretaskinghook.c @@ -1,7 +1,5 @@ /* * This is a shared BSP pretasking hook which does nothing. - * If all the BSP needs to do is initialize the C library, - * then it can rely on bootcard.c and provide bsp_get_work_area(). * * COPYRIGHT (c) 1989-2008. * On-Line Applications Research Corporation (OAR). diff --git a/c/src/lib/libbsp/shared/include/bootcard.h b/c/src/lib/libbsp/shared/include/bootcard.h index 69669aa623..12bb45a3ff 100644 --- a/c/src/lib/libbsp/shared/include/bootcard.h +++ b/c/src/lib/libbsp/shared/include/bootcard.h @@ -29,6 +29,7 @@ #include <stddef.h> #include <stdint.h> +#include <sys/types.h> #include <bspopts.h> @@ -53,10 +54,10 @@ void bsp_reset(void); #define BSP_BOOTCARD_HEAP_SIZE_DEFAULT 0 void bsp_get_work_area( - void **work_area_start, - size_t *work_area_size, - void **heap_start, - size_t *heap_size + void **work_area_start, + ssize_t *work_area_size, + void **heap_start, + ssize_t *heap_size ); int boot_card( int argc, char **argv, char **envp); |