Skip to content

Commit 519fa60

Browse files
author
Michal Simek
committed
microblaze: Use asm generic cmpxchg.h for !SMP case
The whole implementation is done in asm-generic/cmpxchg.h file and there is no reason to duplicate it. Also do not include asm-generic/cmpxchg-local.h because it is already included from asm-generic/cmpxchg.h Signed-off-by: Michal Simek <[email protected]> Reviewed-by: Stefan Asserhall <[email protected]> Reviewed-by: Arnd Bergmann <[email protected]>
1 parent 06951c9 commit 519fa60

File tree

1 file changed

+3
-37
lines changed

1 file changed

+3
-37
lines changed

arch/microblaze/include/asm/cmpxchg.h

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,42 +2,8 @@
22
#ifndef _ASM_MICROBLAZE_CMPXCHG_H
33
#define _ASM_MICROBLAZE_CMPXCHG_H
44

5-
#include <linux/irqflags.h>
6-
7-
void __bad_xchg(volatile void *ptr, int size);
8-
9-
static inline unsigned long __xchg(unsigned long x, volatile void *ptr,
10-
int size)
11-
{
12-
unsigned long ret;
13-
unsigned long flags;
14-
15-
switch (size) {
16-
case 1:
17-
local_irq_save(flags);
18-
ret = *(volatile unsigned char *)ptr;
19-
*(volatile unsigned char *)ptr = x;
20-
local_irq_restore(flags);
21-
break;
22-
23-
case 4:
24-
local_irq_save(flags);
25-
ret = *(volatile unsigned long *)ptr;
26-
*(volatile unsigned long *)ptr = x;
27-
local_irq_restore(flags);
28-
break;
29-
default:
30-
__bad_xchg(ptr, size), ret = 0;
31-
break;
32-
}
33-
34-
return ret;
35-
}
36-
37-
#define xchg(ptr, x) \
38-
((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr))))
39-
40-
#include <asm-generic/cmpxchg.h>
41-
#include <asm-generic/cmpxchg-local.h>
5+
#ifndef CONFIG_SMP
6+
# include <asm-generic/cmpxchg.h>
7+
#endif
428

439
#endif /* _ASM_MICROBLAZE_CMPXCHG_H */

0 commit comments

Comments
 (0)