diff options
| author | Thomas Gleixner <tglx@linutronix.de> | 2016-09-26 15:47:03 -0400 |
|---|---|---|
| committer | Thomas Gleixner <tglx@linutronix.de> | 2016-09-26 15:47:03 -0400 |
| commit | 1e1b37273cf719545da50b76f214f983a710aaf4 (patch) | |
| tree | 033f6062325ef7aaeefe8559bb409ab7d2be3c76 /arch/s390/lib | |
| parent | c183a603e8d8a5a189729b77d0c623a3d5950e5f (diff) | |
| parent | c291b015158577be533dd5a959dfc09bab119eed (diff) | |
Merge branch 'x86/urgent' into x86/apic
Bring in the upstream modifications so we can fixup the silent merge
conflict which is introduced by this merge.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'arch/s390/lib')
| -rw-r--r-- | arch/s390/lib/string.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/s390/lib/string.c b/arch/s390/lib/string.c index e390bbb16443..48352bffbc92 100644 --- a/arch/s390/lib/string.c +++ b/arch/s390/lib/string.c | |||
| @@ -237,11 +237,10 @@ char * strrchr(const char * s, int c) | |||
| 237 | EXPORT_SYMBOL(strrchr); | 237 | EXPORT_SYMBOL(strrchr); |
| 238 | 238 | ||
| 239 | static inline int clcle(const char *s1, unsigned long l1, | 239 | static inline int clcle(const char *s1, unsigned long l1, |
| 240 | const char *s2, unsigned long l2, | 240 | const char *s2, unsigned long l2) |
| 241 | int *diff) | ||
| 242 | { | 241 | { |
| 243 | register unsigned long r2 asm("2") = (unsigned long) s1; | 242 | register unsigned long r2 asm("2") = (unsigned long) s1; |
| 244 | register unsigned long r3 asm("3") = (unsigned long) l2; | 243 | register unsigned long r3 asm("3") = (unsigned long) l1; |
| 245 | register unsigned long r4 asm("4") = (unsigned long) s2; | 244 | register unsigned long r4 asm("4") = (unsigned long) s2; |
| 246 | register unsigned long r5 asm("5") = (unsigned long) l2; | 245 | register unsigned long r5 asm("5") = (unsigned long) l2; |
| 247 | int cc; | 246 | int cc; |
| @@ -252,7 +251,6 @@ static inline int clcle(const char *s1, unsigned long l1, | |||
| 252 | " srl %0,28" | 251 | " srl %0,28" |
| 253 | : "=&d" (cc), "+a" (r2), "+a" (r3), | 252 | : "=&d" (cc), "+a" (r2), "+a" (r3), |
| 254 | "+a" (r4), "+a" (r5) : : "cc"); | 253 | "+a" (r4), "+a" (r5) : : "cc"); |
| 255 | *diff = *(char *)r2 - *(char *)r4; | ||
| 256 | return cc; | 254 | return cc; |
| 257 | } | 255 | } |
| 258 | 256 | ||
| @@ -270,9 +268,9 @@ char * strstr(const char * s1,const char * s2) | |||
| 270 | return (char *) s1; | 268 | return (char *) s1; |
| 271 | l1 = __strend(s1) - s1; | 269 | l1 = __strend(s1) - s1; |
| 272 | while (l1-- >= l2) { | 270 | while (l1-- >= l2) { |
| 273 | int cc, dummy; | 271 | int cc; |
| 274 | 272 | ||
| 275 | cc = clcle(s1, l1, s2, l2, &dummy); | 273 | cc = clcle(s1, l2, s2, l2); |
| 276 | if (!cc) | 274 | if (!cc) |
| 277 | return (char *) s1; | 275 | return (char *) s1; |
| 278 | s1++; | 276 | s1++; |
| @@ -313,11 +311,11 @@ EXPORT_SYMBOL(memchr); | |||
| 313 | */ | 311 | */ |
| 314 | int memcmp(const void *cs, const void *ct, size_t n) | 312 | int memcmp(const void *cs, const void *ct, size_t n) |
| 315 | { | 313 | { |
| 316 | int ret, diff; | 314 | int ret; |
| 317 | 315 | ||
| 318 | ret = clcle(cs, n, ct, n, &diff); | 316 | ret = clcle(cs, n, ct, n); |
| 319 | if (ret) | 317 | if (ret) |
| 320 | ret = diff; | 318 | ret = ret == 1 ? -1 : 1; |
| 321 | return ret; | 319 | return ret; |
| 322 | } | 320 | } |
| 323 | EXPORT_SYMBOL(memcmp); | 321 | EXPORT_SYMBOL(memcmp); |
