~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/arm/boot/compressed/string.c

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/arm/boot/compressed/string.c (Architecture ppc) and /arch/mips/boot/compressed/string.c (Architecture mips)


  1 // SPDX-License-Identifier: GPL-2.0                 1 // SPDX-License-Identifier: GPL-2.0
  2 /*                                                  2 /*
  3  * arch/arm/boot/compressed/string.c           !!   3  * arch/mips/boot/compressed/string.c
  4  *                                                  4  *
  5  * Small subset of simple string routines      !!   5  * Very small subset of simple string routines
  6  */                                                 6  */
  7                                                     7 
  8 #define __NO_FORTIFY                           !!   8 #include <linux/compiler_attributes.h>
  9 #include <linux/string.h>                      !!   9 #include <linux/types.h>
                                                   >>  10 #include <asm/string.h>
 10                                                    11 
 11 /*                                             !!  12 void *memcpy(void *dest, const void *src, size_t n)
 12  * The decompressor is built without KASan but << 
 13  * rest of the kernel when CONFIG_KASAN is ena << 
 14  * to __memcpy() but since we are not linking  << 
 15  * library in the decompressor, that will lead << 
 16  *                                             << 
 17  * Undefine KASan's versions, define the wrapp << 
 18  * the right names so that when e.g. __memcpy( << 
 19  * still be linked to this local version of me << 
 20  */                                            << 
 21 #ifdef CONFIG_KASAN                            << 
 22 #undef memcpy                                  << 
 23 #undef memmove                                 << 
 24 #undef memset                                  << 
 25 void *__memcpy(void *__dest, __const void *__s << 
 26 void *__memmove(void *__dest, __const void *__ << 
 27 void *__memset(void *s, int c, size_t count) _ << 
 28 #endif                                         << 
 29                                                << 
 30 void *memcpy(void *__dest, __const void *__src << 
 31 {                                                  13 {
 32         int i = 0;                             !!  14         int i;
 33         unsigned char *d = (unsigned char *)__ !!  15         const char *s = src;
                                                   >>  16         char *d = dest;
 34                                                    17 
 35         for (i = __n >> 3; i > 0; i--) {       !!  18         for (i = 0; i < n; i++)
 36                 *d++ = *s++;                   !!  19                 d[i] = s[i];
 37                 *d++ = *s++;                   !!  20         return dest;
 38                 *d++ = *s++;                   << 
 39                 *d++ = *s++;                   << 
 40                 *d++ = *s++;                   << 
 41                 *d++ = *s++;                   << 
 42                 *d++ = *s++;                   << 
 43                 *d++ = *s++;                   << 
 44         }                                      << 
 45                                                << 
 46         if (__n & 1 << 2) {                    << 
 47                 *d++ = *s++;                   << 
 48                 *d++ = *s++;                   << 
 49                 *d++ = *s++;                   << 
 50                 *d++ = *s++;                   << 
 51         }                                      << 
 52                                                << 
 53         if (__n & 1 << 1) {                    << 
 54                 *d++ = *s++;                   << 
 55                 *d++ = *s++;                   << 
 56         }                                      << 
 57                                                << 
 58         if (__n & 1)                           << 
 59                 *d++ = *s++;                   << 
 60                                                << 
 61         return __dest;                         << 
 62 }                                                  21 }
 63                                                    22 
 64 void *memmove(void *__dest, __const void *__sr !!  23 void *memset(void *s, int c, size_t n)
 65 {                                                  24 {
 66         unsigned char *d = __dest;             !!  25         int i;
 67         const unsigned char *s = __src;        !!  26         char *ss = s;
 68                                                << 
 69         if (__dest == __src)                   << 
 70                 return __dest;                 << 
 71                                                    27 
 72         if (__dest < __src)                    !!  28         for (i = 0; i < n; i++)
 73                 return memcpy(__dest, __src, c !!  29                 ss[i] = c;
 74                                                !!  30         return s;
 75         while (count--)                        << 
 76                 d[count] = s[count];           << 
 77         return __dest;                         << 
 78 }                                              << 
 79                                                << 
 80 size_t strlen(const char *s)                   << 
 81 {                                              << 
 82         const char *sc = s;                    << 
 83                                                << 
 84         while (*sc != '\0')                    << 
 85                 sc++;                          << 
 86         return sc - s;                         << 
 87 }                                              << 
 88                                                << 
 89 size_t strnlen(const char *s, size_t count)    << 
 90 {                                              << 
 91         const char *sc;                        << 
 92                                                << 
 93         for (sc = s; count-- && *sc != '\0'; + << 
 94                 /* nothing */;                 << 
 95         return sc - s;                         << 
 96 }                                                  31 }
 97                                                    32 
 98 int memcmp(const void *cs, const void *ct, siz !!  33 void * __weak memmove(void *dest, const void *src, size_t n)
 99 {                                                  34 {
100         const unsigned char *su1 = cs, *su2 =  !!  35         unsigned int i;
101         int res = 0;                           !!  36         const char *s = src;
102                                                !!  37         char *d = dest;
103         while (su1 < end) {                    !!  38 
104                 res = *su1++ - *su2++;         !!  39         if ((uintptr_t)dest < (uintptr_t)src) {
105                 if (res)                       !!  40                 for (i = 0; i < n; i++)
106                         break;                 !!  41                         d[i] = s[i];
                                                   >>  42         } else {
                                                   >>  43                 for (i = n; i > 0; i--)
                                                   >>  44                         d[i - 1] = s[i - 1];
107         }                                          45         }
108         return res;                            !!  46         return dest;
109 }                                              << 
110                                                << 
111 int strcmp(const char *cs, const char *ct)     << 
112 {                                              << 
113         unsigned char c1, c2;                  << 
114         int res = 0;                           << 
115                                                << 
116         do {                                   << 
117                 c1 = *cs++;                    << 
118                 c2 = *ct++;                    << 
119                 res = c1 - c2;                 << 
120                 if (res)                       << 
121                         break;                 << 
122         } while (c1);                          << 
123         return res;                            << 
124 }                                              << 
125                                                << 
126 void *memchr(const void *s, int c, size_t coun << 
127 {                                              << 
128         const unsigned char *p = s;            << 
129                                                << 
130         while (count--)                        << 
131                 if ((unsigned char)c == *p++)  << 
132                         return (void *)(p - 1) << 
133         return NULL;                           << 
134 }                                              << 
135                                                << 
136 char *strchr(const char *s, int c)             << 
137 {                                              << 
138         while (*s != (char)c)                  << 
139                 if (*s++ == '\0')              << 
140                         return NULL;           << 
141         return (char *)s;                      << 
142 }                                              << 
143                                                << 
144 char *strrchr(const char *s, int c)            << 
145 {                                              << 
146         const char *last = NULL;               << 
147         do {                                   << 
148                 if (*s == (char)c)             << 
149                         last = s;              << 
150         } while (*s++);                        << 
151         return (char *)last;                   << 
152 }                                              << 
153                                                << 
154 #undef memset                                  << 
155                                                << 
156 void *memset(void *s, int c, size_t count)     << 
157 {                                              << 
158         char *xs = s;                          << 
159         while (count--)                        << 
160                 *xs++ = c;                     << 
161         return s;                              << 
162 }                                                  47 }
163                                                    48 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php