cregit-Linux how code gets into the kernel

Release 4.7 drivers/scsi/lpfc/lpfc_compat.h

/*******************************************************************
 * This file is part of the Emulex Linux Device Driver for         *
 * Fibre Channel Host Bus Adapters.                                *
 * Copyright (C) 2004-2011 Emulex.  All rights reserved.           *
 * EMULEX and SLI are trademarks of Emulex.                        *
 * www.emulex.com                                                  *
 *                                                                 *
 * This program is free software; you can redistribute it and/or   *
 * modify it under the terms of version 2 of the GNU General       *
 * Public License as published by the Free Software Foundation.    *
 * This program is distributed in the hope that it will be useful. *
 * ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND          *
 * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,  *
 * FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE      *
 * DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD *
 * TO BE LEGALLY INVALID.  See the GNU General Public License for  *
 * more details, a copy of which can be found in the file COPYING  *
 * included with this package.                                     *
 *******************************************************************/

/*
 * This file provides macros to aid compilation in the Linux 2.4 kernel
 * over various platform architectures.
 */

/*******************************************************************
Note: HBA's SLI memory contains little-endian LW.
Thus to access it from a little-endian host,
memcpy_toio() and memcpy_fromio() can be used.
However on a big-endian host, copy 4 bytes at a time,
using writel() and readl().
 *******************************************************************/
#include <asm/byteorder.h>

#ifdef __BIG_ENDIAN


static inline void lpfc_memcpy_to_slim(void __iomem *dest, void *src, unsigned int bytes) { uint32_t __iomem *dest32; uint32_t *src32; unsigned int four_bytes; dest32 = (uint32_t __iomem *) dest; src32 = (uint32_t *) src; /* write input bytes, 4 bytes at a time */ for (four_bytes = bytes /4; four_bytes > 0; four_bytes--) { writel( *src32, dest32); readl(dest32); /* flush */ dest32++; src32++; } return; }

Contributors

PersonTokensPropCommitsCommitProp
james bottomleyjames bottomley89100.00%1100.00%
Total89100.00%1100.00%


static inline void lpfc_memcpy_from_slim( void *dest, void __iomem *src, unsigned int bytes) { uint32_t *dest32; uint32_t __iomem *src32; unsigned int four_bytes; dest32 = (uint32_t *) dest; src32 = (uint32_t __iomem *) src; /* read input bytes, 4 bytes at a time */ for (four_bytes = bytes /4; four_bytes > 0; four_bytes--) { *dest32 = readl( src32); dest32++; src32++; } return; }

Contributors

PersonTokensPropCommitsCommitProp
james bottomleyjames bottomley83100.00%1100.00%
Total83100.00%1100.00%

#else
static inline void lpfc_memcpy_to_slim( void __iomem *dest, void *src, unsigned int bytes) { /* convert bytes in argument list to word count for copy function */ __iowrite32_copy(dest, src, bytes / sizeof(uint32_t)); }

Contributors

PersonTokensPropCommitsCommitProp
james bottomleyjames bottomley2880.00%133.33%
james smartjames smart720.00%266.67%
Total35100.00%3100.00%


static inline void lpfc_memcpy_from_slim( void *dest, void __iomem *src, unsigned int bytes) { /* actually returns 1 byte past dest */ memcpy_fromio( dest, src, bytes); }

Contributors

PersonTokensPropCommitsCommitProp
james bottomleyjames bottomley30100.00%1100.00%
Total30100.00%1100.00%

#endif /* __BIG_ENDIAN */

Overall Contributors

PersonTokensPropCommitsCommitProp
james bottomleyjames bottomley23794.42%120.00%
james smartjames smart93.59%360.00%
olaf heringolaf hering51.99%120.00%
Total251100.00%5100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
{% endraw %}