Ticket #1492: sbrk_policy.diff

File sbrk_policy.diff, 1.7 KB (added by strauman, on 01/29/10 at 00:42:00)

Fix for the aforementioned problem

Line 
1Index: c/src/lib/libbsp/powerpc/shared/startup/sbrk.c
2===================================================================
3RCS file: /usr1/CVS/rtems/c/src/lib/libbsp/powerpc/shared/startup/sbrk.c,v
4retrieving revision 1.5.4.1
5diff -c -r1.5.4.1 sbrk.c
6*** c/src/lib/libbsp/powerpc/shared/startup/sbrk.c      3 Nov 2008 19:58:43 -0000       1.5.4.1
7--- c/src/lib/libbsp/powerpc/shared/startup/sbrk.c      29 Jan 2010 01:37:28 -0000
8***************
9*** 89,97 ****
10  _bsp_sbrk_init(uint32_t         heap_start, uint32_t         *heap_size_p)
11  {
12    uint32_t         rval=0;
13 
14    remaining_start =  heap_start;
15!   remaining_size  = *heap_size_p;
16 
17    if (remaining_start < LIMIT_32M &&
18        remaining_start + remaining_size > LIMIT_32M) {
19--- 89,98 ----
20  _bsp_sbrk_init(uint32_t         heap_start, uint32_t         *heap_size_p)
21  {
22    uint32_t         rval=0;
23+   uint32_t         orig_size;
24 
25    remaining_start =  heap_start;
26!   orig_size = remaining_size  = *heap_size_p;
27 
28    if (remaining_start < LIMIT_32M &&
29        remaining_start + remaining_size > LIMIT_32M) {
30***************
31*** 105,111 ****
32    if ( 0 != &BSP_sbrk_policy ) {
33        switch ( BSP_sbrk_policy ) {
34                case (uint32_t)(-1):
35!                       remaining_start  = heap_start + *heap_size_p;
36                        remaining_size   = 0;
37                        /* return a nonzero sbrk_amount because the libsupport code
38                         * at some point divides by this number prior to trying an
39--- 106,113 ----
40    if ( 0 != &BSP_sbrk_policy ) {
41        switch ( BSP_sbrk_policy ) {
42                case (uint32_t)(-1):
43!                       remaining_start  = heap_start + orig_size;
44!                       *heap_size_p     = orig_size;
45                        remaining_size   = 0;
46                        /* return a nonzero sbrk_amount because the libsupport code
47                         * at some point divides by this number prior to trying an