Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0-or-later */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) #include <linux/types.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #include <asm/string.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #define OPSIZ (BITS_PER_LONG/8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) typedef unsigned long op_t;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) void *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) memset (void *dstpp, int sc, size_t len)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11)   unsigned int c = sc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)   long int dstp = (long int) dstpp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)   if (len >= 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)     {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)       size_t xlen;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)       op_t cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)       cccc = (unsigned char) c;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20)       cccc |= cccc << 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21)       cccc |= cccc << 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)       if (OPSIZ > 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 	/* Do the shift in two steps to avoid warning if long has 32 bits.  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 	cccc |= (cccc << 16) << 16;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)       /* There are at least some bytes to set.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 	 No need to test for LEN == 0 in this alignment loop.  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)       while (dstp % OPSIZ != 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	  ((unsigned char *) dstp)[0] = c;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 	  dstp += 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 	  len -= 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)       /* Write 8 `op_t' per iteration until less than 8 `op_t' remain.  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)       xlen = len / (OPSIZ * 8);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)       while (xlen > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	  ((op_t *) dstp)[0] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 	  ((op_t *) dstp)[1] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 	  ((op_t *) dstp)[2] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 	  ((op_t *) dstp)[3] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	  ((op_t *) dstp)[4] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) 	  ((op_t *) dstp)[5] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) 	  ((op_t *) dstp)[6] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) 	  ((op_t *) dstp)[7] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) 	  dstp += 8 * OPSIZ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48) 	  xlen -= 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)       len %= OPSIZ * 8;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)       /* Write 1 `op_t' per iteration until less than OPSIZ bytes remain.  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)       xlen = len / OPSIZ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)       while (xlen > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	{
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	  ((op_t *) dstp)[0] = cccc;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 	  dstp += OPSIZ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) 	  xlen -= 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)       len %= OPSIZ;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)     }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63)   /* Write the last few bytes.  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)   while (len > 0)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)     {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66)       ((unsigned char *) dstp)[0] = c;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)       dstp += 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)       len -= 1;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)     }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)   return dstpp;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) }