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 <ged...@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 <ged...@rtems.org> wrote:
From: Daniel Ramirez <javam...@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


_______________________________________________
devel mailing list
devel@rtems.org
http://lists.rtems.org/mailman/listinfo/devel

Reply via email to