[PATCH] grspw: descriptor tables no longer statically allocated

Daniel Hellstrom daniel at gaisler.com
Thu Jan 22 08:15:20 UTC 2015


Hello,

Haven't tested but seems good.

Thanks,
Daniel

On 01/21/2015 05:05 PM, Gedare Bloom wrote:
> Claudio and Daniel H,
> OK to commit?
>
> -Gedare
>
> On Tue, Dec 23, 2014 at 10:08 PM, Gedare Bloom <gedare at rtems.org> wrote:
>> This is a patch proposed for PR 1761
>> [https://devel.rtems.org/ticket/1761]. Comment if OK or not.
>>
>>
>> On Tue, Dec 23, 2014 at 10:05 PM, Gedare Bloom <gedare at rtems.org> wrote:
>>> From: Daniel Ramirez <javamonn at gmail.com>
>>>
>>> ---
>>>   c/src/lib/libbsp/sparc/shared/spw/grspw.c | 14 +++++++-------
>>>   1 file changed, 7 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw.c b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
>>> index b311500..d3eb9b9 100644
>>> --- a/c/src/lib/libbsp/sparc/shared/spw/grspw.c
>>> +++ b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
>>> @@ -84,6 +84,7 @@
>>>   #include <assert.h>
>>>   #include <ctype.h>
>>>   #include <rtems/bspIo.h>
>>> +#include <rtems/malloc.h>
>>>   #include <ambapp.h>
>>>   #include <grlib.h>
>>>   #include <grspw.h>
>>> @@ -149,8 +150,6 @@ typedef struct {
>>>
>>>   #define BUFMEM_PER_LINK (SPACEWIRE_TXBUFS_NR*(SPACEWIRE_TXD_SIZE+SPACEWIRE_TXH_SIZE) + SPACEWIRE_RXBUFS_NR*SPACEWIRE_RXPCK_SIZE)
>>>
>>> -#define SPW_ALIGN(p,c) ((((unsigned int)(p))+((c)-1))&~((c)-1))
>>> -
>>>   typedef struct {
>>>      /* configuration parameters */
>>>      spw_config config;
>>> @@ -190,9 +189,6 @@ typedef struct {
>>>
>>>   #ifdef GRSPW_STATIC_MEM
>>>      unsigned int membase, memend, mem_bdtable;
>>> -#else
>>> -   char _rxtable[SPACEWIRE_BDTABLE_SIZE*2];
>>> -   char _txtable[SPACEWIRE_BDTABLE_SIZE*2];
>>>   #endif
>>>
>>>      LEON3_SPACEWIRE_Regs_Map *regs;
>>> @@ -1383,8 +1379,8 @@ static int grspw_hw_init(GRSPW_DEV *pDev) {
>>>           pDev->rx = (SPACEWIRE_RXBD *) pDev->mem_bdtable;
>>>           pDev->tx = (SPACEWIRE_RXBD *) pDev->mem_bdtable + SPACEWIRE_BDTABLE_SIZE;
>>>   #else
>>> -        pDev->rx = (SPACEWIRE_RXBD *) SPW_ALIGN(&pDev->_rxtable, SPACEWIRE_BDTABLE_SIZE);
>>> -        pDev->tx = (SPACEWIRE_TXBD *) SPW_ALIGN(&pDev->_txtable, SPACEWIRE_BDTABLE_SIZE);
>>> +        pDev->rx = (SPACEWIRE_RXBD *) rtems_heap_allocate_aligned_with_boundry( SPACEWIRE_BDTABLE_SIZE, 1024, 0 );
>>> +        pDev->tx = (SPACEWIRE_TXBD *) rtems_heap_allocate_aligned_with_boundry( SPACEWIRE_BDTABLE_SIZE, 1024, 0 );
>>>   #endif
>>>           SPACEWIRE_DBG("hw_init [minor %i]\n", pDev->minor);
>>>
>>> @@ -1425,6 +1421,10 @@ static void grspw_hw_reset(GRSPW_DEV *pDev)
>>>           SPW_STATUS_WRITE(pDev, SPW_STATUS_TO | SPW_STATUS_CE | SPW_STATUS_ER | SPW_STATUS_DE | SPW_STATUS_PE |
>>>                            SPW_STATUS_WE | SPW_STATUS_IA | SPW_STATUS_EE); /*clear status*/
>>>           SPW_CTRL_WRITE(pDev, SPW_CTRL_LINKSTART); /*start link core*/
>>> +        #ifndef GRSPW_STATIC_MEM
>>> +                free(pDev->rx);
>>> +                free(pDec->tx);
>>> +        #endif
>>>   }
>>>
>>>   static void grspw_hw_read_config(GRSPW_DEV *pDev)
>>> --
>>> 1.8.3.1
>>>



More information about the devel mailing list