Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 67631
b: refs/heads/master
c: 210d3a9
h: refs/heads/master
i:
  67629: f8c6688
  67627: c733404
  67623: 963e9b4
  67615: 172231a
v: v3
  • Loading branch information
Heiko Carstens authored and Martin Schwidefsky committed Oct 12, 2007
1 parent 7222617 commit 3380f92
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c622498e5c82217cda7f661eebbabdaad0814659
refs/heads/master: 210d3a90ce665509e4852977d7a3352654e5e990
24 changes: 13 additions & 11 deletions trunk/include/asm-s390/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,8 @@ extern void pfault_fini(void);
__ret; \
})

extern void __xchg_called_with_bad_pointer(void);

static inline unsigned long __xchg(unsigned long x, void * ptr, int size)
{
unsigned long addr, old;
Expand All @@ -150,8 +152,7 @@ static inline unsigned long __xchg(unsigned long x, void * ptr, int size)
: "=&d" (old), "=m" (*(int *) addr)
: "d" (x << shift), "d" (~(255 << shift)), "a" (addr),
"m" (*(int *) addr) : "memory", "cc", "0");
x = old >> shift;
break;
return old >> shift;
case 2:
addr = (unsigned long) ptr;
shift = (2 ^ (addr & 2)) << 3;
Expand All @@ -166,8 +167,7 @@ static inline unsigned long __xchg(unsigned long x, void * ptr, int size)
: "=&d" (old), "=m" (*(int *) addr)
: "d" (x << shift), "d" (~(65535 << shift)), "a" (addr),
"m" (*(int *) addr) : "memory", "cc", "0");
x = old >> shift;
break;
return old >> shift;
case 4:
asm volatile(
" l %0,0(%3)\n"
Expand All @@ -176,8 +176,7 @@ static inline unsigned long __xchg(unsigned long x, void * ptr, int size)
: "=&d" (old), "=m" (*(int *) ptr)
: "d" (x), "a" (ptr), "m" (*(int *) ptr)
: "memory", "cc");
x = old;
break;
return old;
#ifdef __s390x__
case 8:
asm volatile(
Expand All @@ -187,11 +186,11 @@ static inline unsigned long __xchg(unsigned long x, void * ptr, int size)
: "=&d" (old), "=m" (*(long *) ptr)
: "d" (x), "a" (ptr), "m" (*(long *) ptr)
: "memory", "cc");
x = old;
break;
return old;
#endif /* __s390x__ */
}
return x;
}
__xchg_called_with_bad_pointer();
return x;
}

/*
Expand All @@ -206,6 +205,8 @@ static inline unsigned long __xchg(unsigned long x, void * ptr, int size)
((__typeof__(*(ptr)))__cmpxchg((ptr),(unsigned long)(o),\
(unsigned long)(n),sizeof(*(ptr))))

extern void __cmpxchg_called_with_bad_pointer(void);

static inline unsigned long
__cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
{
Expand Down Expand Up @@ -270,7 +271,8 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
return prev;
#endif /* __s390x__ */
}
return old;
__cmpxchg_called_with_bad_pointer();
return old;
}

/*
Expand Down

0 comments on commit 3380f92

Please sign in to comment.