From: Arvid Bjorkengren <ar...@gaisler.com>

This is to improve odds of getting a fast memcpy-operation.
---
 c/src/lib/libbsp/sparc/shared/spw/grspw.c |   11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/c/src/lib/libbsp/sparc/shared/spw/grspw.c 
b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
index 83f3b97..b6ee255 100644
--- a/c/src/lib/libbsp/sparc/shared/spw/grspw.c
+++ b/c/src/lib/libbsp/sparc/shared/spw/grspw.c
@@ -112,6 +112,7 @@ typedef struct {
    /* statistics */
    spw_stats stat;
 
+   unsigned int _ptr_rxbuf0;
    char *ptr_rxbuf0;
    char *ptr_txdbuf0;
    char *ptr_txhbuf0;
@@ -522,6 +523,7 @@ int grspw_device_init(GRSPW_DEV *pDev)
        pDev->txbufcnt = SPACEWIRE_TXBUFS_NR;
        pDev->rxbufcnt = SPACEWIRE_RXBUFS_NR;
 
+       pDev->_ptr_rxbuf0 = 0;
        pDev->ptr_rxbuf0 = 0;
        pDev->ptr_txdbuf0 = 0;
        pDev->ptr_txhbuf0 = 0;
@@ -617,10 +619,11 @@ static int grspw_buffer_alloc(GRSPW_DEV *pDev)
                        pDev->ptr_rxbuf0 = pDev->rx_dma_area;
                }
        } else {
-               if (pDev->ptr_rxbuf0) {
-                       free(pDev->ptr_rxbuf0);
+               if (pDev->_ptr_rxbuf0) {
+                       free(pDev->_ptr_rxbuf0);
                }
-               pDev->ptr_rxbuf0 = (char *) malloc(pDev->rxbufsize * 
pDev->rxbufcnt);
+               pDev->_ptr_rxbuf0 = (unsigned int) malloc(pDev->rxbufsize * 
pDev->rxbufcnt+4);
+               pDev->ptr_rxbuf0 = (char *)((pDev->_ptr_rxbuf0+7)&~7);
                if ( !pDev->ptr_rxbuf0 )
                        return 1;
        }
@@ -1242,7 +1245,7 @@ static rtems_device_driver grspw_control(
                        }
 
                        /* Save new buffer sizes */
-                       pDev->rxbufsize = ps->rxsize;
+                       pDev->rxbufsize = ((ps->rxsize+7)&~7);
                        pDev->txdbufsize = ps->txdsize;
                        pDev->txhbufsize = ps->txhsize;
                        pDev->config.rxmaxlen = pDev->rxbufsize;
-- 
1.7.0.4

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

Reply via email to