aboutsummaryrefslogtreecommitdiffstats
path: root/arch/s390/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-05-31 13:51:10 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-05-31 13:51:10 -0400
commit8ee78c6fb982b3a7343faf561e7937d4cfa955ff (patch)
tree93d9327018e648174fb83b4144eed89de72693dd /arch/s390/include
parentaac422afeffa9093544799c3257a96b55ba42044 (diff)
parent491af9903b858ee7c36735dc31708fe4074ce56f (diff)
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux
Pull s390 patches from Heiko Carstens: "A couple of s390 patches for the 3.5 merge window. Just a collection of bug fixes and cleanups." * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux: s390/uaccess: fix access_ok compile warnings s390/cmpxchg: select HAVE_CMPXCHG_LOCAL option s390/cmpxchg: fix sign extension bugs s390/cmpxchg: fix 1 and 2 byte memory accesses s390/cmpxchg: fix compile warnings specific to s390 s390/cmpxchg: add missing memory barrier to cmpxchg64 s390/cpu: remove cpu "capabilities" sysfs attribute s390/kernel: Fix smp_call_ipl_cpu() for offline CPUs s390/kernel: Introduce memcpy_absolute() function s390/headers: replace __s390x__ with CONFIG_64BIT where possible s390/headers: remove #ifdef __KERNEL__ from not exported headers s390/irq: split irq stats for cpu-measurement alert facilities s390/kexec: Move early_pgm_check_handler() to text section s390/kdump: Use real mode for PSW restart and kexec s390/kdump: Account /sys/kernel/kexec_crash_size changes in OS info s390/kernel: Remove OS info init function call and diag 308 for kdump
Diffstat (limited to 'arch/s390/include')
-rw-r--r--arch/s390/include/asm/bitops.h21
-rw-r--r--arch/s390/include/asm/cio.h4
-rw-r--r--arch/s390/include/asm/cmpxchg.h54
-rw-r--r--arch/s390/include/asm/cputime.h10
-rw-r--r--arch/s390/include/asm/ctl_reg.h6
-rw-r--r--arch/s390/include/asm/current.h3
-rw-r--r--arch/s390/include/asm/elf.h12
-rw-r--r--arch/s390/include/asm/futex.h3
-rw-r--r--arch/s390/include/asm/idals.h10
-rw-r--r--arch/s390/include/asm/io.h4
-rw-r--r--arch/s390/include/asm/irq.h3
-rw-r--r--arch/s390/include/asm/kexec.h4
-rw-r--r--arch/s390/include/asm/kmap_types.h2
-rw-r--r--arch/s390/include/asm/mmu_context.h2
-rw-r--r--arch/s390/include/asm/module.h2
-rw-r--r--arch/s390/include/asm/os_info.h5
-rw-r--r--arch/s390/include/asm/percpu.h2
-rw-r--r--arch/s390/include/asm/pgalloc.h6
-rw-r--r--arch/s390/include/asm/pgtable.h44
-rw-r--r--arch/s390/include/asm/processor.h39
-rw-r--r--arch/s390/include/asm/rwsem.h63
-rw-r--r--arch/s390/include/asm/setup.h18
-rw-r--r--arch/s390/include/asm/sfp-util.h2
-rw-r--r--arch/s390/include/asm/string.h4
-rw-r--r--arch/s390/include/asm/thread_info.h10
-rw-r--r--arch/s390/include/asm/timer.h4
-rw-r--r--arch/s390/include/asm/tlb.h4
-rw-r--r--arch/s390/include/asm/tlbflush.h4
-rw-r--r--arch/s390/include/asm/types.h4
-rw-r--r--arch/s390/include/asm/uaccess.h15
-rw-r--r--arch/s390/include/asm/vdso.h5
31 files changed, 170 insertions, 199 deletions
diff --git a/arch/s390/include/asm/bitops.h b/arch/s390/include/asm/bitops.h
index e5beb490959b..a6ff5a83e227 100644
--- a/arch/s390/include/asm/bitops.h
+++ b/arch/s390/include/asm/bitops.h
@@ -13,8 +13,6 @@
13 * 13 *
14 */ 14 */
15 15
16#ifdef __KERNEL__
17
18#ifndef _LINUX_BITOPS_H 16#ifndef _LINUX_BITOPS_H
19#error only <linux/bitops.h> can be included directly 17#error only <linux/bitops.h> can be included directly
20#endif 18#endif
@@ -63,7 +61,7 @@ extern const char _ni_bitmap[];
63extern const char _zb_findmap[]; 61extern const char _zb_findmap[];
64extern const char _sb_findmap[]; 62extern const char _sb_findmap[];
65 63
66#ifndef __s390x__ 64#ifndef CONFIG_64BIT
67 65
68#define __BITOPS_ALIGN 3 66#define __BITOPS_ALIGN 3
69#define __BITOPS_WORDSIZE 32 67#define __BITOPS_WORDSIZE 32
@@ -83,7 +81,7 @@ extern const char _sb_findmap[];
83 : "d" (__val), "Q" (*(unsigned long *) __addr) \ 81 : "d" (__val), "Q" (*(unsigned long *) __addr) \
84 : "cc"); 82 : "cc");
85 83
86#else /* __s390x__ */ 84#else /* CONFIG_64BIT */
87 85
88#define __BITOPS_ALIGN 7 86#define __BITOPS_ALIGN 7
89#define __BITOPS_WORDSIZE 64 87#define __BITOPS_WORDSIZE 64
@@ -103,7 +101,7 @@ extern const char _sb_findmap[];
103 : "d" (__val), "Q" (*(unsigned long *) __addr) \ 101 : "d" (__val), "Q" (*(unsigned long *) __addr) \
104 : "cc"); 102 : "cc");
105 103
106#endif /* __s390x__ */ 104#endif /* CONFIG_64BIT */
107 105
108#define __BITOPS_WORDS(bits) (((bits)+__BITOPS_WORDSIZE-1)/__BITOPS_WORDSIZE) 106#define __BITOPS_WORDS(bits) (((bits)+__BITOPS_WORDSIZE-1)/__BITOPS_WORDSIZE)
109#define __BITOPS_BARRIER() asm volatile("" : : : "memory") 107#define __BITOPS_BARRIER() asm volatile("" : : : "memory")
@@ -412,7 +410,7 @@ static inline unsigned long __ffz_word_loop(const unsigned long *addr,
412 unsigned long bytes = 0; 410 unsigned long bytes = 0;
413 411
414 asm volatile( 412 asm volatile(
415#ifndef __s390x__ 413#ifndef CONFIG_64BIT
416 " ahi %1,-1\n" 414 " ahi %1,-1\n"
417 " sra %1,5\n" 415 " sra %1,5\n"
418 " jz 1f\n" 416 " jz 1f\n"
@@ -449,7 +447,7 @@ static inline unsigned long __ffs_word_loop(const unsigned long *addr,
449 unsigned long bytes = 0; 447 unsigned long bytes = 0;
450 448
451 asm volatile( 449 asm volatile(
452#ifndef __s390x__ 450#ifndef CONFIG_64BIT
453 " ahi %1,-1\n" 451 " ahi %1,-1\n"
454 " sra %1,5\n" 452 " sra %1,5\n"
455 " jz 1f\n" 453 " jz 1f\n"
@@ -481,7 +479,7 @@ static inline unsigned long __ffs_word_loop(const unsigned long *addr,
481 */ 479 */
482static inline unsigned long __ffz_word(unsigned long nr, unsigned long word) 480static inline unsigned long __ffz_word(unsigned long nr, unsigned long word)
483{ 481{
484#ifdef __s390x__ 482#ifdef CONFIG_64BIT
485 if ((word & 0xffffffff) == 0xffffffff) { 483 if ((word & 0xffffffff) == 0xffffffff) {
486 word >>= 32; 484 word >>= 32;
487 nr += 32; 485 nr += 32;
@@ -505,7 +503,7 @@ static inline unsigned long __ffz_word(unsigned long nr, unsigned long word)
505 */ 503 */
506static inline unsigned long __ffs_word(unsigned long nr, unsigned long word) 504static inline unsigned long __ffs_word(unsigned long nr, unsigned long word)
507{ 505{
508#ifdef __s390x__ 506#ifdef CONFIG_64BIT
509 if ((word & 0xffffffff) == 0) { 507 if ((word & 0xffffffff) == 0) {
510 word >>= 32; 508 word >>= 32;
511 nr += 32; 509 nr += 32;
@@ -546,7 +544,7 @@ static inline unsigned long __load_ulong_le(const unsigned long *p,
546 unsigned long word; 544 unsigned long word;
547 545
548 p = (unsigned long *)((unsigned long) p + offset); 546 p = (unsigned long *)((unsigned long) p + offset);
549#ifndef __s390x__ 547#ifndef CONFIG_64BIT
550 asm volatile( 548 asm volatile(
551 " ic %0,%O1(%R1)\n" 549 " ic %0,%O1(%R1)\n"
552 " icm %0,2,%O1+1(%R1)\n" 550 " icm %0,2,%O1+1(%R1)\n"
@@ -834,7 +832,4 @@ static inline int find_next_bit_le(void *vaddr, unsigned long size,
834 832
835#include <asm-generic/bitops/ext2-atomic-setbit.h> 833#include <asm-generic/bitops/ext2-atomic-setbit.h>
836 834
837
838#endif /* __KERNEL__ */
839
840#endif /* _S390_BITOPS_H */ 835#endif /* _S390_BITOPS_H */
diff --git a/arch/s390/include/asm/cio.h b/arch/s390/include/asm/cio.h
index fc50a3342da3..4c8d4d5b8bd2 100644
--- a/arch/s390/include/asm/cio.h
+++ b/arch/s390/include/asm/cio.h
@@ -10,8 +10,6 @@
10#include <linux/spinlock.h> 10#include <linux/spinlock.h>
11#include <asm/types.h> 11#include <asm/types.h>
12 12
13#ifdef __KERNEL__
14
15#define LPM_ANYPATH 0xff 13#define LPM_ANYPATH 0xff
16#define __MAX_CSSID 0 14#define __MAX_CSSID 0
17 15
@@ -291,5 +289,3 @@ int chsc_sstpc(void *page, unsigned int op, u16 ctrl);
291int chsc_sstpi(void *page, void *result, size_t size); 289int chsc_sstpi(void *page, void *result, size_t size);
292 290
293#endif 291#endif
294
295#endif
diff --git a/arch/s390/include/asm/cmpxchg.h b/arch/s390/include/asm/cmpxchg.h
index 81d7908416cf..8d798e962b63 100644
--- a/arch/s390/include/asm/cmpxchg.h
+++ b/arch/s390/include/asm/cmpxchg.h
@@ -29,7 +29,7 @@ static inline unsigned long __xchg(unsigned long x, void *ptr, int size)
29 " cs %0,0,%4\n" 29 " cs %0,0,%4\n"
30 " jl 0b\n" 30 " jl 0b\n"
31 : "=&d" (old), "=Q" (*(int *) addr) 31 : "=&d" (old), "=Q" (*(int *) addr)
32 : "d" (x << shift), "d" (~(255 << shift)), 32 : "d" ((x & 0xff) << shift), "d" (~(0xff << shift)),
33 "Q" (*(int *) addr) : "memory", "cc", "0"); 33 "Q" (*(int *) addr) : "memory", "cc", "0");
34 return old >> shift; 34 return old >> shift;
35 case 2: 35 case 2:
@@ -44,7 +44,7 @@ static inline unsigned long __xchg(unsigned long x, void *ptr, int size)
44 " cs %0,0,%4\n" 44 " cs %0,0,%4\n"
45 " jl 0b\n" 45 " jl 0b\n"
46 : "=&d" (old), "=Q" (*(int *) addr) 46 : "=&d" (old), "=Q" (*(int *) addr)
47 : "d" (x << shift), "d" (~(65535 << shift)), 47 : "d" ((x & 0xffff) << shift), "d" (~(0xffff << shift)),
48 "Q" (*(int *) addr) : "memory", "cc", "0"); 48 "Q" (*(int *) addr) : "memory", "cc", "0");
49 return old >> shift; 49 return old >> shift;
50 case 4: 50 case 4:
@@ -113,9 +113,10 @@ static inline unsigned long __cmpxchg(void *ptr, unsigned long old,
113 " nr %1,%5\n" 113 " nr %1,%5\n"
114 " jnz 0b\n" 114 " jnz 0b\n"
115 "1:" 115 "1:"
116 : "=&d" (prev), "=&d" (tmp), "=Q" (*(int *) ptr) 116 : "=&d" (prev), "=&d" (tmp), "+Q" (*(int *) addr)
117 : "d" (old << shift), "d" (new << shift), 117 : "d" ((old & 0xff) << shift),
118 "d" (~(255 << shift)), "Q" (*(int *) ptr) 118 "d" ((new & 0xff) << shift),
119 "d" (~(0xff << shift))
119 : "memory", "cc"); 120 : "memory", "cc");
120 return prev >> shift; 121 return prev >> shift;
121 case 2: 122 case 2:
@@ -134,9 +135,10 @@ static inline unsigned long __cmpxchg(void *ptr, unsigned long old,
134 " nr %1,%5\n" 135 " nr %1,%5\n"
135 " jnz 0b\n" 136 " jnz 0b\n"
136 "1:" 137 "1:"
137 : "=&d" (prev), "=&d" (tmp), "=Q" (*(int *) ptr) 138 : "=&d" (prev), "=&d" (tmp), "+Q" (*(int *) addr)
138 : "d" (old << shift), "d" (new << shift), 139 : "d" ((old & 0xffff) << shift),
139 "d" (~(65535 << shift)), "Q" (*(int *) ptr) 140 "d" ((new & 0xffff) << shift),
141 "d" (~(0xffff << shift))
140 : "memory", "cc"); 142 : "memory", "cc");
141 return prev >> shift; 143 return prev >> shift;
142 case 4: 144 case 4:
@@ -160,9 +162,14 @@ static inline unsigned long __cmpxchg(void *ptr, unsigned long old,
160 return old; 162 return old;
161} 163}
162 164
163#define cmpxchg(ptr, o, n) \ 165#define cmpxchg(ptr, o, n) \
164 ((__typeof__(*(ptr)))__cmpxchg((ptr), (unsigned long)(o), \ 166({ \
165 (unsigned long)(n), sizeof(*(ptr)))) 167 __typeof__(*(ptr)) __ret; \
168 __ret = (__typeof__(*(ptr))) \
169 __cmpxchg((ptr), (unsigned long)(o), (unsigned long)(n), \
170 sizeof(*(ptr))); \
171 __ret; \
172})
166 173
167#ifdef CONFIG_64BIT 174#ifdef CONFIG_64BIT
168#define cmpxchg64(ptr, o, n) \ 175#define cmpxchg64(ptr, o, n) \
@@ -181,13 +188,19 @@ static inline unsigned long long __cmpxchg64(void *ptr,
181 " cds %0,%2,%1" 188 " cds %0,%2,%1"
182 : "+&d" (rp_old), "=Q" (ptr) 189 : "+&d" (rp_old), "=Q" (ptr)
183 : "d" (rp_new), "Q" (ptr) 190 : "d" (rp_new), "Q" (ptr)
184 : "cc"); 191 : "memory", "cc");
185 return rp_old.pair; 192 return rp_old.pair;
186} 193}
187#define cmpxchg64(ptr, o, n) \ 194
188 ((__typeof__(*(ptr)))__cmpxchg64((ptr), \ 195#define cmpxchg64(ptr, o, n) \
189 (unsigned long long)(o), \ 196({ \
190 (unsigned long long)(n))) 197 __typeof__(*(ptr)) __ret; \
198 __ret = (__typeof__(*(ptr))) \
199 __cmpxchg64((ptr), \
200 (unsigned long long)(o), \
201 (unsigned long long)(n)); \
202 __ret; \
203})
191#endif /* CONFIG_64BIT */ 204#endif /* CONFIG_64BIT */
192 205
193#include <asm-generic/cmpxchg-local.h> 206#include <asm-generic/cmpxchg-local.h>
@@ -216,8 +229,13 @@ static inline unsigned long __cmpxchg_local(void *ptr,
216 * them available. 229 * them available.
217 */ 230 */
218#define cmpxchg_local(ptr, o, n) \ 231#define cmpxchg_local(ptr, o, n) \
219 ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \ 232({ \
220 (unsigned long)(n), sizeof(*(ptr)))) 233 __typeof__(*(ptr)) __ret; \
234 __ret = (__typeof__(*(ptr))) \
235 __cmpxchg_local((ptr), (unsigned long)(o), \
236 (unsigned long)(n), sizeof(*(ptr))); \
237 __ret; \
238})
221 239
222#define cmpxchg64_local(ptr, o, n) cmpxchg64((ptr), (o), (n)) 240#define cmpxchg64_local(ptr, o, n) cmpxchg64((ptr), (o), (n))
223 241
diff --git a/arch/s390/include/asm/cputime.h b/arch/s390/include/asm/cputime.h
index 24ef186a1c4f..718374de9c7f 100644
--- a/arch/s390/include/asm/cputime.h
+++ b/arch/s390/include/asm/cputime.h
@@ -21,15 +21,15 @@ typedef unsigned long long __nocast cputime64_t;
21 21
22static inline unsigned long __div(unsigned long long n, unsigned long base) 22static inline unsigned long __div(unsigned long long n, unsigned long base)
23{ 23{
24#ifndef __s390x__ 24#ifndef CONFIG_64BIT
25 register_pair rp; 25 register_pair rp;
26 26
27 rp.pair = n >> 1; 27 rp.pair = n >> 1;
28 asm ("dr %0,%1" : "+d" (rp) : "d" (base >> 1)); 28 asm ("dr %0,%1" : "+d" (rp) : "d" (base >> 1));
29 return rp.subreg.odd; 29 return rp.subreg.odd;
30#else /* __s390x__ */ 30#else /* CONFIG_64BIT */
31 return n / base; 31 return n / base;
32#endif /* __s390x__ */ 32#endif /* CONFIG_64BIT */
33} 33}
34 34
35#define cputime_one_jiffy jiffies_to_cputime(1) 35#define cputime_one_jiffy jiffies_to_cputime(1)
@@ -100,7 +100,7 @@ static inline void cputime_to_timespec(const cputime_t cputime,
100 struct timespec *value) 100 struct timespec *value)
101{ 101{
102 unsigned long long __cputime = (__force unsigned long long) cputime; 102 unsigned long long __cputime = (__force unsigned long long) cputime;
103#ifndef __s390x__ 103#ifndef CONFIG_64BIT
104 register_pair rp; 104 register_pair rp;
105 105
106 rp.pair = __cputime >> 1; 106 rp.pair = __cputime >> 1;
@@ -128,7 +128,7 @@ static inline void cputime_to_timeval(const cputime_t cputime,
128 struct timeval *value) 128 struct timeval *value)
129{ 129{
130 unsigned long long __cputime = (__force unsigned long long) cputime; 130 unsigned long long __cputime = (__force unsigned long long) cputime;
131#ifndef __s390x__ 131#ifndef CONFIG_64BIT
132 register_pair rp; 132 register_pair rp;
133 133
134 rp.pair = __cputime >> 1; 134 rp.pair = __cputime >> 1;
diff --git a/arch/s390/include/asm/ctl_reg.h b/arch/s390/include/asm/ctl_reg.h
index ecde9417d669..debfda33d1f8 100644
--- a/arch/s390/include/asm/ctl_reg.h
+++ b/arch/s390/include/asm/ctl_reg.h
@@ -7,7 +7,7 @@
7#ifndef __ASM_CTL_REG_H 7#ifndef __ASM_CTL_REG_H
8#define __ASM_CTL_REG_H 8#define __ASM_CTL_REG_H
9 9
10#ifdef __s390x__ 10#ifdef CONFIG_64BIT
11 11
12#define __ctl_load(array, low, high) ({ \ 12#define __ctl_load(array, low, high) ({ \
13 typedef struct { char _[sizeof(array)]; } addrtype; \ 13 typedef struct { char _[sizeof(array)]; } addrtype; \
@@ -25,7 +25,7 @@
25 : "i" (low), "i" (high)); \ 25 : "i" (low), "i" (high)); \
26 }) 26 })
27 27
28#else /* __s390x__ */ 28#else /* CONFIG_64BIT */
29 29
30#define __ctl_load(array, low, high) ({ \ 30#define __ctl_load(array, low, high) ({ \
31 typedef struct { char _[sizeof(array)]; } addrtype; \ 31 typedef struct { char _[sizeof(array)]; } addrtype; \
@@ -43,7 +43,7 @@
43 : "i" (low), "i" (high)); \ 43 : "i" (low), "i" (high)); \
44 }) 44 })
45 45
46#endif /* __s390x__ */ 46#endif /* CONFIG_64BIT */
47 47
48#define __ctl_set_bit(cr, bit) ({ \ 48#define __ctl_set_bit(cr, bit) ({ \
49 unsigned long __dummy; \ 49 unsigned long __dummy; \
diff --git a/arch/s390/include/asm/current.h b/arch/s390/include/asm/current.h
index 83cf36cde2da..7a68084ec2f0 100644
--- a/arch/s390/include/asm/current.h
+++ b/arch/s390/include/asm/current.h
@@ -11,13 +11,10 @@
11#ifndef _S390_CURRENT_H 11#ifndef _S390_CURRENT_H
12#define _S390_CURRENT_H 12#define _S390_CURRENT_H
13 13
14#ifdef __KERNEL__
15#include <asm/lowcore.h> 14#include <asm/lowcore.h>
16 15
17struct task_struct; 16struct task_struct;
18 17
19#define current ((struct task_struct *const)S390_lowcore.current_task) 18#define current ((struct task_struct *const)S390_lowcore.current_task)
20 19
21#endif
22
23#endif /* !(_S390_CURRENT_H) */ 20#endif /* !(_S390_CURRENT_H) */
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h
index c4ee39f7a4d6..06151e6a3098 100644
--- a/arch/s390/include/asm/elf.h
+++ b/arch/s390/include/asm/elf.h
@@ -107,11 +107,11 @@
107/* 107/*
108 * These are used to set parameters in the core dumps. 108 * These are used to set parameters in the core dumps.
109 */ 109 */
110#ifndef __s390x__ 110#ifndef CONFIG_64BIT
111#define ELF_CLASS ELFCLASS32 111#define ELF_CLASS ELFCLASS32
112#else /* __s390x__ */ 112#else /* CONFIG_64BIT */
113#define ELF_CLASS ELFCLASS64 113#define ELF_CLASS ELFCLASS64
114#endif /* __s390x__ */ 114#endif /* CONFIG_64BIT */
115#define ELF_DATA ELFDATA2MSB 115#define ELF_DATA ELFDATA2MSB
116#define ELF_ARCH EM_S390 116#define ELF_ARCH EM_S390
117 117
@@ -181,9 +181,9 @@ extern unsigned long elf_hwcap;
181extern char elf_platform[]; 181extern char elf_platform[];
182#define ELF_PLATFORM (elf_platform) 182#define ELF_PLATFORM (elf_platform)
183 183
184#ifndef __s390x__ 184#ifndef CONFIG_64BIT
185#define SET_PERSONALITY(ex) set_personality(PER_LINUX) 185#define SET_PERSONALITY(ex) set_personality(PER_LINUX)
186#else /* __s390x__ */ 186#else /* CONFIG_64BIT */
187#define SET_PERSONALITY(ex) \ 187#define SET_PERSONALITY(ex) \
188do { \ 188do { \
189 if (personality(current->personality) != PER_LINUX32) \ 189 if (personality(current->personality) != PER_LINUX32) \
@@ -194,7 +194,7 @@ do { \
194 else \ 194 else \
195 clear_thread_flag(TIF_31BIT); \ 195 clear_thread_flag(TIF_31BIT); \
196} while (0) 196} while (0)
197#endif /* __s390x__ */ 197#endif /* CONFIG_64BIT */
198 198
199#define STACK_RND_MASK 0x7ffUL 199#define STACK_RND_MASK 0x7ffUL
200 200
diff --git a/arch/s390/include/asm/futex.h b/arch/s390/include/asm/futex.h
index 81cf36b691f1..96bc83ea5c90 100644
--- a/arch/s390/include/asm/futex.h
+++ b/arch/s390/include/asm/futex.h
@@ -1,8 +1,6 @@
1#ifndef _ASM_S390_FUTEX_H 1#ifndef _ASM_S390_FUTEX_H
2#define _ASM_S390_FUTEX_H 2#define _ASM_S390_FUTEX_H
3 3
4#ifdef __KERNEL__
5
6#include <linux/futex.h> 4#include <linux/futex.h>
7#include <linux/uaccess.h> 5#include <linux/uaccess.h>
8#include <asm/errno.h> 6#include <asm/errno.h>
@@ -48,5 +46,4 @@ static inline int futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
48 return uaccess.futex_atomic_cmpxchg(uval, uaddr, oldval, newval); 46 return uaccess.futex_atomic_cmpxchg(uval, uaddr, oldval, newval);
49} 47}
50 48
51#endif /* __KERNEL__ */
52#endif /* _ASM_S390_FUTEX_H */ 49#endif /* _ASM_S390_FUTEX_H */
diff --git a/arch/s390/include/asm/idals.h b/arch/s390/include/asm/idals.h
index aae276d00383..aef0dde340d1 100644
--- a/arch/s390/include/asm/idals.h
+++ b/arch/s390/include/asm/idals.h
@@ -20,7 +20,7 @@
20#include <asm/cio.h> 20#include <asm/cio.h>
21#include <asm/uaccess.h> 21#include <asm/uaccess.h>
22 22
23#ifdef __s390x__ 23#ifdef CONFIG_64BIT
24#define IDA_SIZE_LOG 12 /* 11 for 2k , 12 for 4k */ 24#define IDA_SIZE_LOG 12 /* 11 for 2k , 12 for 4k */
25#else 25#else
26#define IDA_SIZE_LOG 11 /* 11 for 2k , 12 for 4k */ 26#define IDA_SIZE_LOG 11 /* 11 for 2k , 12 for 4k */
@@ -33,7 +33,7 @@
33static inline int 33static inline int
34idal_is_needed(void *vaddr, unsigned int length) 34idal_is_needed(void *vaddr, unsigned int length)
35{ 35{
36#ifdef __s390x__ 36#ifdef CONFIG_64BIT
37 return ((__pa(vaddr) + length - 1) >> 31) != 0; 37 return ((__pa(vaddr) + length - 1) >> 31) != 0;
38#else 38#else
39 return 0; 39 return 0;
@@ -78,7 +78,7 @@ static inline unsigned long *idal_create_words(unsigned long *idaws,
78static inline int 78static inline int
79set_normalized_cda(struct ccw1 * ccw, void *vaddr) 79set_normalized_cda(struct ccw1 * ccw, void *vaddr)
80{ 80{
81#ifdef __s390x__ 81#ifdef CONFIG_64BIT
82 unsigned int nridaws; 82 unsigned int nridaws;
83 unsigned long *idal; 83 unsigned long *idal;
84 84
@@ -105,7 +105,7 @@ set_normalized_cda(struct ccw1 * ccw, void *vaddr)
105static inline void 105static inline void
106clear_normalized_cda(struct ccw1 * ccw) 106clear_normalized_cda(struct ccw1 * ccw)
107{ 107{
108#ifdef __s390x__ 108#ifdef CONFIG_64BIT
109 if (ccw->flags & CCW_FLAG_IDA) { 109 if (ccw->flags & CCW_FLAG_IDA) {
110 kfree((void *)(unsigned long) ccw->cda); 110 kfree((void *)(unsigned long) ccw->cda);
111 ccw->flags &= ~CCW_FLAG_IDA; 111 ccw->flags &= ~CCW_FLAG_IDA;
@@ -182,7 +182,7 @@ idal_buffer_free(struct idal_buffer *ib)
182static inline int 182static inline int
183__idal_buffer_is_needed(struct idal_buffer *ib) 183__idal_buffer_is_needed(struct idal_buffer *ib)
184{ 184{
185#ifdef __s390x__ 185#ifdef CONFIG_64BIT
186 return ib->size > (4096ul << ib->page_order) || 186 return ib->size > (4096ul << ib->page_order) ||
187 idal_is_needed(ib->data[0], ib->size); 187 idal_is_needed(ib->data[0], ib->size);
188#else 188#else
diff --git a/arch/s390/include/asm/io.h b/arch/s390/include/asm/io.h
index 27216d317991..f81a0975cbea 100644
--- a/arch/s390/include/asm/io.h
+++ b/arch/s390/include/asm/io.h
@@ -11,8 +11,6 @@
11#ifndef _S390_IO_H 11#ifndef _S390_IO_H
12#define _S390_IO_H 12#define _S390_IO_H
13 13
14#ifdef __KERNEL__
15
16#include <asm/page.h> 14#include <asm/page.h>
17 15
18#define IO_SPACE_LIMIT 0xffffffff 16#define IO_SPACE_LIMIT 0xffffffff
@@ -46,6 +44,4 @@ void unxlate_dev_mem_ptr(unsigned long phys, void *addr);
46 */ 44 */
47#define xlate_dev_kmem_ptr(p) p 45#define xlate_dev_kmem_ptr(p) p
48 46
49#endif /* __KERNEL__ */
50
51#endif 47#endif
diff --git a/arch/s390/include/asm/irq.h b/arch/s390/include/asm/irq.h
index 5289cacd4861..2b9d41899d21 100644
--- a/arch/s390/include/asm/irq.h
+++ b/arch/s390/include/asm/irq.h
@@ -17,7 +17,8 @@ enum interruption_class {
17 EXTINT_VRT, 17 EXTINT_VRT,
18 EXTINT_SCP, 18 EXTINT_SCP,
19 EXTINT_IUC, 19 EXTINT_IUC,
20 EXTINT_CPM, 20 EXTINT_CMS,
21 EXTINT_CMC,
21 IOINT_CIO, 22 IOINT_CIO,
22 IOINT_QAI, 23 IOINT_QAI,
23 IOINT_DAS, 24 IOINT_DAS,
diff --git a/arch/s390/include/asm/kexec.h b/arch/s390/include/asm/kexec.h
index 3f30dac804ea..f4f38826eebb 100644
--- a/arch/s390/include/asm/kexec.h
+++ b/arch/s390/include/asm/kexec.h
@@ -10,10 +10,8 @@
10#ifndef _S390_KEXEC_H 10#ifndef _S390_KEXEC_H
11#define _S390_KEXEC_H 11#define _S390_KEXEC_H
12 12
13#ifdef __KERNEL__
14#include <asm/page.h>
15#endif
16#include <asm/processor.h> 13#include <asm/processor.h>
14#include <asm/page.h>
17/* 15/*
18 * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return. 16 * KEXEC_SOURCE_MEMORY_LIMIT maximum page get_free_page can return.
19 * I.e. Maximum page that is mapped directly into kernel memory, 17 * I.e. Maximum page that is mapped directly into kernel memory,
diff --git a/arch/s390/include/asm/kmap_types.h b/arch/s390/include/asm/kmap_types.h
index 94ec3ee07983..0a88622339ee 100644
--- a/arch/s390/include/asm/kmap_types.h
+++ b/arch/s390/include/asm/kmap_types.h
@@ -1,8 +1,6 @@
1#ifdef __KERNEL__
2#ifndef _ASM_KMAP_TYPES_H 1#ifndef _ASM_KMAP_TYPES_H
3#define _ASM_KMAP_TYPES_H 2#define _ASM_KMAP_TYPES_H
4 3
5#include <asm-generic/kmap_types.h> 4#include <asm-generic/kmap_types.h>
6 5
7#endif 6#endif
8#endif /* __KERNEL__ */
diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h
index 5d09e405c54d..69bdf72e95ec 100644
--- a/arch/s390/include/asm/mmu_context.h
+++ b/arch/s390/include/asm/mmu_context.h
@@ -49,7 +49,7 @@ static inline int init_new_context(struct task_struct *tsk,
49 49
50#define destroy_context(mm) do { } while (0) 50#define destroy_context(mm) do { } while (0)
51 51
52#ifndef __s390x__ 52#ifndef CONFIG_64BIT
53#define LCTL_OPCODE "lctl" 53#define LCTL_OPCODE "lctl"
54#else 54#else
55#define LCTL_OPCODE "lctlg" 55#define LCTL_OPCODE "lctlg"
diff --git a/arch/s390/include/asm/module.h b/arch/s390/include/asm/module.h
index 1cc1c5af705a..f0b6b26b6e59 100644
--- a/arch/s390/include/asm/module.h
+++ b/arch/s390/include/asm/module.h
@@ -28,7 +28,7 @@ struct mod_arch_specific
28 struct mod_arch_syminfo *syminfo; 28 struct mod_arch_syminfo *syminfo;
29}; 29};
30 30
31#ifdef __s390x__ 31#ifdef CONFIG_64BIT
32#define ElfW(x) Elf64_ ## x 32#define ElfW(x) Elf64_ ## x
33#define ELFW(x) ELF64_ ## x 33#define ELFW(x) ELF64_ ## x
34#else 34#else
diff --git a/arch/s390/include/asm/os_info.h b/arch/s390/include/asm/os_info.h
index d07518af09ea..295f2c4f1c96 100644
--- a/arch/s390/include/asm/os_info.h
+++ b/arch/s390/include/asm/os_info.h
@@ -13,7 +13,6 @@
13 13
14#define OS_INFO_VMCOREINFO 0 14#define OS_INFO_VMCOREINFO 0
15#define OS_INFO_REIPL_BLOCK 1 15#define OS_INFO_REIPL_BLOCK 1
16#define OS_INFO_INIT_FN 2
17 16
18struct os_info_entry { 17struct os_info_entry {
19 u64 addr; 18 u64 addr;
@@ -28,8 +27,8 @@ struct os_info {
28 u16 version_minor; 27 u16 version_minor;
29 u64 crashkernel_addr; 28 u64 crashkernel_addr;
30 u64 crashkernel_size; 29 u64 crashkernel_size;
31 struct os_info_entry entry[3]; 30 struct os_info_entry entry[2];
32 u8 reserved[4004]; 31 u8 reserved[4024];
33} __packed; 32} __packed;
34 33
35void os_info_init(void); 34void os_info_init(void);
diff --git a/arch/s390/include/asm/percpu.h b/arch/s390/include/asm/percpu.h
index 0fbd1899c7b0..6537e72e0853 100644
--- a/arch/s390/include/asm/percpu.h
+++ b/arch/s390/include/asm/percpu.h
@@ -15,7 +15,7 @@
15 * per cpu area, use weak definitions to force the compiler to 15 * per cpu area, use weak definitions to force the compiler to
16 * generate external references. 16 * generate external references.
17 */ 17 */
18#if defined(CONFIG_SMP) && defined(__s390x__) && defined(MODULE) 18#if defined(CONFIG_SMP) && defined(CONFIG_64BIT) && defined(MODULE)
19#define ARCH_NEEDS_WEAK_PER_CPU 19#define ARCH_NEEDS_WEAK_PER_CPU
20#endif 20#endif
21 21
diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h
index 78e3041919de..43078c194394 100644
--- a/arch/s390/include/asm/pgalloc.h
+++ b/arch/s390/include/asm/pgalloc.h
@@ -48,7 +48,7 @@ static inline void crst_table_init(unsigned long *crst, unsigned long entry)
48 clear_table(crst, entry, sizeof(unsigned long)*2048); 48 clear_table(crst, entry, sizeof(unsigned long)*2048);
49} 49}
50 50
51#ifndef __s390x__ 51#ifndef CONFIG_64BIT
52 52
53static inline unsigned long pgd_entry_type(struct mm_struct *mm) 53static inline unsigned long pgd_entry_type(struct mm_struct *mm)
54{ 54{
@@ -64,7 +64,7 @@ static inline unsigned long pgd_entry_type(struct mm_struct *mm)
64#define pgd_populate(mm, pgd, pud) BUG() 64#define pgd_populate(mm, pgd, pud) BUG()
65#define pud_populate(mm, pud, pmd) BUG() 65#define pud_populate(mm, pud, pmd) BUG()
66 66
67#else /* __s390x__ */ 67#else /* CONFIG_64BIT */
68 68
69static inline unsigned long pgd_entry_type(struct mm_struct *mm) 69static inline unsigned long pgd_entry_type(struct mm_struct *mm)
70{ 70{
@@ -106,7 +106,7 @@ static inline void pud_populate(struct mm_struct *mm, pud_t *pud, pmd_t *pmd)
106 pud_val(*pud) = _REGION3_ENTRY | __pa(pmd); 106 pud_val(*pud) = _REGION3_ENTRY | __pa(pmd);
107} 107}
108 108
109#endif /* __s390x__ */ 109#endif /* CONFIG_64BIT */
110 110
111static inline pgd_t *pgd_alloc(struct mm_struct *mm) 111static inline pgd_t *pgd_alloc(struct mm_struct *mm)
112{ 112{
diff --git a/arch/s390/include/asm/pgtable.h b/arch/s390/include/asm/pgtable.h
index 011358c1b18e..b3227415abda 100644
--- a/arch/s390/include/asm/pgtable.h
+++ b/arch/s390/include/asm/pgtable.h
@@ -74,15 +74,15 @@ static inline int is_zero_pfn(unsigned long pfn)
74 * table can map 74 * table can map
75 * PGDIR_SHIFT determines what a third-level page table entry can map 75 * PGDIR_SHIFT determines what a third-level page table entry can map
76 */ 76 */
77#ifndef __s390x__ 77#ifndef CONFIG_64BIT
78# define PMD_SHIFT 20 78# define PMD_SHIFT 20
79# define PUD_SHIFT 20 79# define PUD_SHIFT 20
80# define PGDIR_SHIFT 20 80# define PGDIR_SHIFT 20
81#else /* __s390x__ */ 81#else /* CONFIG_64BIT */
82# define PMD_SHIFT 20 82# define PMD_SHIFT 20
83# define PUD_SHIFT 31 83# define PUD_SHIFT 31
84# define PGDIR_SHIFT 42 84# define PGDIR_SHIFT 42
85#endif /* __s390x__ */ 85#endif /* CONFIG_64BIT */
86 86
87#define PMD_SIZE (1UL << PMD_SHIFT) 87#define PMD_SIZE (1UL << PMD_SHIFT)
88#define PMD_MASK (~(PMD_SIZE-1)) 88#define PMD_MASK (~(PMD_SIZE-1))
@@ -98,13 +98,13 @@ static inline int is_zero_pfn(unsigned long pfn)
98 * that leads to 1024 pte per pgd 98 * that leads to 1024 pte per pgd
99 */ 99 */
100#define PTRS_PER_PTE 256 100#define PTRS_PER_PTE 256
101#ifndef __s390x__ 101#ifndef CONFIG_64BIT
102#define PTRS_PER_PMD 1 102#define PTRS_PER_PMD 1
103#define PTRS_PER_PUD 1 103#define PTRS_PER_PUD 1
104#else /* __s390x__ */ 104#else /* CONFIG_64BIT */
105#define PTRS_PER_PMD 2048 105#define PTRS_PER_PMD 2048
106#define PTRS_PER_PUD 2048 106#define PTRS_PER_PUD 2048
107#endif /* __s390x__ */ 107#endif /* CONFIG_64BIT */
108#define PTRS_PER_PGD 2048 108#define PTRS_PER_PGD 2048
109 109
110#define FIRST_USER_ADDRESS 0 110#define FIRST_USER_ADDRESS 0
@@ -276,7 +276,7 @@ extern struct page *vmemmap;
276 * swap pte is 1011 and 0001, 0011, 0101, 0111 are invalid. 276 * swap pte is 1011 and 0001, 0011, 0101, 0111 are invalid.
277 */ 277 */
278 278
279#ifndef __s390x__ 279#ifndef CONFIG_64BIT
280 280
281/* Bits in the segment table address-space-control-element */ 281/* Bits in the segment table address-space-control-element */
282#define _ASCE_SPACE_SWITCH 0x80000000UL /* space switch event */ 282#define _ASCE_SPACE_SWITCH 0x80000000UL /* space switch event */
@@ -308,7 +308,7 @@ extern struct page *vmemmap;
308#define KVM_UR_BIT 0x00008000UL 308#define KVM_UR_BIT 0x00008000UL
309#define KVM_UC_BIT 0x00004000UL 309#define KVM_UC_BIT 0x00004000UL
310 310
311#else /* __s390x__ */ 311#else /* CONFIG_64BIT */
312 312
313/* Bits in the segment/region table address-space-control-element */ 313/* Bits in the segment/region table address-space-control-element */
314#define _ASCE_ORIGIN ~0xfffUL/* segment table origin */ 314#define _ASCE_ORIGIN ~0xfffUL/* segment table origin */
@@ -363,7 +363,7 @@ extern struct page *vmemmap;
363#define KVM_UR_BIT 0x0000800000000000UL 363#define KVM_UR_BIT 0x0000800000000000UL
364#define KVM_UC_BIT 0x0000400000000000UL 364#define KVM_UC_BIT 0x0000400000000000UL
365 365
366#endif /* __s390x__ */ 366#endif /* CONFIG_64BIT */
367 367
368/* 368/*
369 * A user page table pointer has the space-switch-event bit, the 369 * A user page table pointer has the space-switch-event bit, the
@@ -424,7 +424,7 @@ static inline int mm_has_pgste(struct mm_struct *mm)
424/* 424/*
425 * pgd/pmd/pte query functions 425 * pgd/pmd/pte query functions
426 */ 426 */
427#ifndef __s390x__ 427#ifndef CONFIG_64BIT
428 428
429static inline int pgd_present(pgd_t pgd) { return 1; } 429static inline int pgd_present(pgd_t pgd) { return 1; }
430static inline int pgd_none(pgd_t pgd) { return 0; } 430static inline int pgd_none(pgd_t pgd) { return 0; }
@@ -434,7 +434,7 @@ static inline int pud_present(pud_t pud) { return 1; }
434static inline int pud_none(pud_t pud) { return 0; } 434static inline int pud_none(pud_t pud) { return 0; }
435static inline int pud_bad(pud_t pud) { return 0; } 435static inline int pud_bad(pud_t pud) { return 0; }
436 436
437#else /* __s390x__ */ 437#else /* CONFIG_64BIT */
438 438
439static inline int pgd_present(pgd_t pgd) 439static inline int pgd_present(pgd_t pgd)
440{ 440{
@@ -490,7 +490,7 @@ static inline int pud_bad(pud_t pud)
490 return (pud_val(pud) & mask) != 0; 490 return (pud_val(pud) & mask) != 0;
491} 491}
492 492
493#endif /* __s390x__ */ 493#endif /* CONFIG_64BIT */
494 494
495static inline int pmd_present(pmd_t pmd) 495static inline int pmd_present(pmd_t pmd)
496{ 496{
@@ -741,7 +741,7 @@ static inline int pte_young(pte_t pte)
741 741
742static inline void pgd_clear(pgd_t *pgd) 742static inline void pgd_clear(pgd_t *pgd)
743{ 743{
744#ifdef __s390x__ 744#ifdef CONFIG_64BIT
745 if ((pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R2) 745 if ((pgd_val(*pgd) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R2)
746 pgd_val(*pgd) = _REGION2_ENTRY_EMPTY; 746 pgd_val(*pgd) = _REGION2_ENTRY_EMPTY;
747#endif 747#endif
@@ -749,7 +749,7 @@ static inline void pgd_clear(pgd_t *pgd)
749 749
750static inline void pud_clear(pud_t *pud) 750static inline void pud_clear(pud_t *pud)
751{ 751{
752#ifdef __s390x__ 752#ifdef CONFIG_64BIT
753 if ((pud_val(*pud) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3) 753 if ((pud_val(*pud) & _REGION_ENTRY_TYPE_MASK) == _REGION_ENTRY_TYPE_R3)
754 pud_val(*pud) = _REGION3_ENTRY_EMPTY; 754 pud_val(*pud) = _REGION3_ENTRY_EMPTY;
755#endif 755#endif
@@ -921,7 +921,7 @@ static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
921static inline void __ptep_ipte(unsigned long address, pte_t *ptep) 921static inline void __ptep_ipte(unsigned long address, pte_t *ptep)
922{ 922{
923 if (!(pte_val(*ptep) & _PAGE_INVALID)) { 923 if (!(pte_val(*ptep) & _PAGE_INVALID)) {
924#ifndef __s390x__ 924#ifndef CONFIG_64BIT
925 /* pto must point to the start of the segment table */ 925 /* pto must point to the start of the segment table */
926 pte_t *pto = (pte_t *) (((unsigned long) ptep) & 0x7ffffc00); 926 pte_t *pto = (pte_t *) (((unsigned long) ptep) & 0x7ffffc00);
927#else 927#else
@@ -1116,7 +1116,7 @@ static inline pte_t mk_pte(struct page *page, pgprot_t pgprot)
1116#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address)) 1116#define pgd_offset(mm, address) ((mm)->pgd + pgd_index(address))
1117#define pgd_offset_k(address) pgd_offset(&init_mm, address) 1117#define pgd_offset_k(address) pgd_offset(&init_mm, address)
1118 1118
1119#ifndef __s390x__ 1119#ifndef CONFIG_64BIT
1120 1120
1121#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN) 1121#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN)
1122#define pud_deref(pmd) ({ BUG(); 0UL; }) 1122#define pud_deref(pmd) ({ BUG(); 0UL; })
@@ -1125,7 +1125,7 @@ static inline pte_t mk_pte(struct page *page, pgprot_t pgprot)
1125#define pud_offset(pgd, address) ((pud_t *) pgd) 1125#define pud_offset(pgd, address) ((pud_t *) pgd)
1126#define pmd_offset(pud, address) ((pmd_t *) pud + pmd_index(address)) 1126#define pmd_offset(pud, address) ((pmd_t *) pud + pmd_index(address))
1127 1127
1128#else /* __s390x__ */ 1128#else /* CONFIG_64BIT */
1129 1129
1130#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN) 1130#define pmd_deref(pmd) (pmd_val(pmd) & _SEGMENT_ENTRY_ORIGIN)
1131#define pud_deref(pud) (pud_val(pud) & _REGION_ENTRY_ORIGIN) 1131#define pud_deref(pud) (pud_val(pud) & _REGION_ENTRY_ORIGIN)
@@ -1147,7 +1147,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
1147 return pmd + pmd_index(address); 1147 return pmd + pmd_index(address);
1148} 1148}
1149 1149
1150#endif /* __s390x__ */ 1150#endif /* CONFIG_64BIT */
1151 1151
1152#define pfn_pte(pfn,pgprot) mk_pte_phys(__pa((pfn) << PAGE_SHIFT),(pgprot)) 1152#define pfn_pte(pfn,pgprot) mk_pte_phys(__pa((pfn) << PAGE_SHIFT),(pgprot))
1153#define pte_pfn(x) (pte_val(x) >> PAGE_SHIFT) 1153#define pte_pfn(x) (pte_val(x) >> PAGE_SHIFT)
@@ -1196,7 +1196,7 @@ static inline pmd_t *pmd_offset(pud_t *pud, unsigned long address)
1196 * 0000000000111111111122222222223333333333444444444455 5555 5 55566 66 1196 * 0000000000111111111122222222223333333333444444444455 5555 5 55566 66
1197 * 0123456789012345678901234567890123456789012345678901 2345 6 78901 23 1197 * 0123456789012345678901234567890123456789012345678901 2345 6 78901 23
1198 */ 1198 */
1199#ifndef __s390x__ 1199#ifndef CONFIG_64BIT
1200#define __SWP_OFFSET_MASK (~0UL >> 12) 1200#define __SWP_OFFSET_MASK (~0UL >> 12)
1201#else 1201#else
1202#define __SWP_OFFSET_MASK (~0UL >> 11) 1202#define __SWP_OFFSET_MASK (~0UL >> 11)
@@ -1217,11 +1217,11 @@ static inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
1217#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) 1217#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
1218#define __swp_entry_to_pte(x) ((pte_t) { (x).val }) 1218#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
1219 1219
1220#ifndef __s390x__ 1220#ifndef CONFIG_64BIT
1221# define PTE_FILE_MAX_BITS 26 1221# define PTE_FILE_MAX_BITS 26
1222#else /* __s390x__ */ 1222#else /* CONFIG_64BIT */
1223# define PTE_FILE_MAX_BITS 59 1223# define PTE_FILE_MAX_BITS 59
1224#endif /* __s390x__ */ 1224#endif /* CONFIG_64BIT */
1225 1225
1226#define pte_to_pgoff(__pte) \ 1226#define pte_to_pgoff(__pte) \
1227 ((((__pte).pte >> 12) << 7) + (((__pte).pte >> 1) & 0x7f)) 1227 ((((__pte).pte >> 12) << 7) + (((__pte).pte >> 1) & 0x7f))
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h
index 6cbf31311673..20d0585cf905 100644
--- a/arch/s390/include/asm/processor.h
+++ b/arch/s390/include/asm/processor.h
@@ -20,7 +20,6 @@
20#include <asm/ptrace.h> 20#include <asm/ptrace.h>
21#include <asm/setup.h> 21#include <asm/setup.h>
22 22
23#ifdef __KERNEL__
24/* 23/*
25 * Default implementation of macro that returns current 24 * Default implementation of macro that returns current
26 * instruction pointer ("program counter"). 25 * instruction pointer ("program counter").
@@ -33,39 +32,33 @@ static inline void get_cpu_id(struct cpuid *ptr)
33} 32}
34 33
35extern void s390_adjust_jiffies(void); 34extern void s390_adjust_jiffies(void);
36extern int get_cpu_capability(unsigned int *);
37extern const struct seq_operations cpuinfo_op; 35extern const struct seq_operations cpuinfo_op;
38extern int sysctl_ieee_emulation_warnings; 36extern int sysctl_ieee_emulation_warnings;
39 37
40/* 38/*
41 * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit. 39 * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit.
42 */ 40 */
43#ifndef __s390x__ 41#ifndef CONFIG_64BIT
44 42
45#define TASK_SIZE (1UL << 31) 43#define TASK_SIZE (1UL << 31)
46#define TASK_UNMAPPED_BASE (1UL << 30) 44#define TASK_UNMAPPED_BASE (1UL << 30)
47 45
48#else /* __s390x__ */ 46#else /* CONFIG_64BIT */
49 47
50#define TASK_SIZE_OF(tsk) ((tsk)->mm->context.asce_limit) 48#define TASK_SIZE_OF(tsk) ((tsk)->mm->context.asce_limit)
51#define TASK_UNMAPPED_BASE (test_thread_flag(TIF_31BIT) ? \ 49#define TASK_UNMAPPED_BASE (test_thread_flag(TIF_31BIT) ? \
52 (1UL << 30) : (1UL << 41)) 50 (1UL << 30) : (1UL << 41))
53#define TASK_SIZE TASK_SIZE_OF(current) 51#define TASK_SIZE TASK_SIZE_OF(current)
54 52
55#endif /* __s390x__ */ 53#endif /* CONFIG_64BIT */
56 54
57#ifdef __KERNEL__ 55#ifndef CONFIG_64BIT
58
59#ifndef __s390x__
60#define STACK_TOP (1UL << 31) 56#define STACK_TOP (1UL << 31)
61#define STACK_TOP_MAX (1UL << 31) 57#define STACK_TOP_MAX (1UL << 31)
62#else /* __s390x__ */ 58#else /* CONFIG_64BIT */
63#define STACK_TOP (1UL << (test_thread_flag(TIF_31BIT) ? 31:42)) 59#define STACK_TOP (1UL << (test_thread_flag(TIF_31BIT) ? 31:42))
64#define STACK_TOP_MAX (1UL << 42) 60#define STACK_TOP_MAX (1UL << 42)
65#endif /* __s390x__ */ 61#endif /* CONFIG_64BIT */
66
67
68#endif
69 62
70#define HAVE_ARCH_PICK_MMAP_LAYOUT 63#define HAVE_ARCH_PICK_MMAP_LAYOUT
71 64
@@ -182,7 +175,7 @@ static inline void psw_set_key(unsigned int key)
182 */ 175 */
183static inline void __load_psw(psw_t psw) 176static inline void __load_psw(psw_t psw)
184{ 177{
185#ifndef __s390x__ 178#ifndef CONFIG_64BIT
186 asm volatile("lpsw %0" : : "Q" (psw) : "cc"); 179 asm volatile("lpsw %0" : : "Q" (psw) : "cc");
187#else 180#else
188 asm volatile("lpswe %0" : : "Q" (psw) : "cc"); 181 asm volatile("lpswe %0" : : "Q" (psw) : "cc");
@@ -200,7 +193,7 @@ static inline void __load_psw_mask (unsigned long mask)
200 193
201 psw.mask = mask; 194 psw.mask = mask;
202 195
203#ifndef __s390x__ 196#ifndef CONFIG_64BIT
204 asm volatile( 197 asm volatile(
205 " basr %0,0\n" 198 " basr %0,0\n"
206 "0: ahi %0,1f-0b\n" 199 "0: ahi %0,1f-0b\n"
@@ -208,14 +201,14 @@ static inline void __load_psw_mask (unsigned long mask)
208 " lpsw %1\n" 201 " lpsw %1\n"
209 "1:" 202 "1:"
210 : "=&d" (addr), "=Q" (psw) : "Q" (psw) : "memory", "cc"); 203 : "=&d" (addr), "=Q" (psw) : "Q" (psw) : "memory", "cc");
211#else /* __s390x__ */ 204#else /* CONFIG_64BIT */
212 asm volatile( 205 asm volatile(
213 " larl %0,1f\n" 206 " larl %0,1f\n"
214 " stg %0,%O1+8(%R1)\n" 207 " stg %0,%O1+8(%R1)\n"
215 " lpswe %1\n" 208 " lpswe %1\n"
216 "1:" 209 "1:"
217 : "=&d" (addr), "=Q" (psw) : "Q" (psw) : "memory", "cc"); 210 : "=&d" (addr), "=Q" (psw) : "Q" (psw) : "memory", "cc");
218#endif /* __s390x__ */ 211#endif /* CONFIG_64BIT */
219} 212}
220 213
221/* 214/*
@@ -223,7 +216,7 @@ static inline void __load_psw_mask (unsigned long mask)
223 */ 216 */
224static inline unsigned long __rewind_psw(psw_t psw, unsigned long ilc) 217static inline unsigned long __rewind_psw(psw_t psw, unsigned long ilc)
225{ 218{
226#ifndef __s390x__ 219#ifndef CONFIG_64BIT
227 if (psw.addr & PSW_ADDR_AMODE) 220 if (psw.addr & PSW_ADDR_AMODE)
228 /* 31 bit mode */ 221 /* 31 bit mode */
229 return (psw.addr - ilc) | PSW_ADDR_AMODE; 222 return (psw.addr - ilc) | PSW_ADDR_AMODE;
@@ -253,7 +246,7 @@ static inline void __noreturn disabled_wait(unsigned long code)
253 * Store status and then load disabled wait psw, 246 * Store status and then load disabled wait psw,
254 * the processor is dead afterwards 247 * the processor is dead afterwards
255 */ 248 */
256#ifndef __s390x__ 249#ifndef CONFIG_64BIT
257 asm volatile( 250 asm volatile(
258 " stctl 0,0,0(%2)\n" 251 " stctl 0,0,0(%2)\n"
259 " ni 0(%2),0xef\n" /* switch off protection */ 252 " ni 0(%2),0xef\n" /* switch off protection */
@@ -272,7 +265,7 @@ static inline void __noreturn disabled_wait(unsigned long code)
272 " lpsw 0(%1)" 265 " lpsw 0(%1)"
273 : "=m" (ctl_buf) 266 : "=m" (ctl_buf)
274 : "a" (&dw_psw), "a" (&ctl_buf), "m" (dw_psw) : "cc"); 267 : "a" (&dw_psw), "a" (&ctl_buf), "m" (dw_psw) : "cc");
275#else /* __s390x__ */ 268#else /* CONFIG_64BIT */
276 asm volatile( 269 asm volatile(
277 " stctg 0,0,0(%2)\n" 270 " stctg 0,0,0(%2)\n"
278 " ni 4(%2),0xef\n" /* switch off protection */ 271 " ni 4(%2),0xef\n" /* switch off protection */
@@ -305,7 +298,7 @@ static inline void __noreturn disabled_wait(unsigned long code)
305 " lpswe 0(%1)" 298 " lpswe 0(%1)"
306 : "=m" (ctl_buf) 299 : "=m" (ctl_buf)
307 : "a" (&dw_psw), "a" (&ctl_buf), "m" (dw_psw) : "cc", "0", "1"); 300 : "a" (&dw_psw), "a" (&ctl_buf), "m" (dw_psw) : "cc", "0", "1");
308#endif /* __s390x__ */ 301#endif /* CONFIG_64BIT */
309 while (1); 302 while (1);
310} 303}
311 304
@@ -338,12 +331,10 @@ extern void (*s390_base_ext_handler_fn)(void);
338 331
339#define ARCH_LOW_ADDRESS_LIMIT 0x7fffffffUL 332#define ARCH_LOW_ADDRESS_LIMIT 0x7fffffffUL
340 333
341#endif
342
343/* 334/*
344 * Helper macro for exception table entries 335 * Helper macro for exception table entries
345 */ 336 */
346#ifndef __s390x__ 337#ifndef CONFIG_64BIT
347#define EX_TABLE(_fault,_target) \ 338#define EX_TABLE(_fault,_target) \
348 ".section __ex_table,\"a\"\n" \ 339 ".section __ex_table,\"a\"\n" \
349 " .align 4\n" \ 340 " .align 4\n" \
diff --git a/arch/s390/include/asm/rwsem.h b/arch/s390/include/asm/rwsem.h
index d0eb4653cebd..1ceee10264c3 100644
--- a/arch/s390/include/asm/rwsem.h
+++ b/arch/s390/include/asm/rwsem.h
@@ -41,19 +41,17 @@
41#error "please don't include asm/rwsem.h directly, use linux/rwsem.h instead" 41#error "please don't include asm/rwsem.h directly, use linux/rwsem.h instead"
42#endif 42#endif
43 43
44#ifdef __KERNEL__ 44#ifndef CONFIG_64BIT
45
46#ifndef __s390x__
47#define RWSEM_UNLOCKED_VALUE 0x00000000 45#define RWSEM_UNLOCKED_VALUE 0x00000000
48#define RWSEM_ACTIVE_BIAS 0x00000001 46#define RWSEM_ACTIVE_BIAS 0x00000001
49#define RWSEM_ACTIVE_MASK 0x0000ffff 47#define RWSEM_ACTIVE_MASK 0x0000ffff
50#define RWSEM_WAITING_BIAS (-0x00010000) 48#define RWSEM_WAITING_BIAS (-0x00010000)
51#else /* __s390x__ */ 49#else /* CONFIG_64BIT */
52#define RWSEM_UNLOCKED_VALUE 0x0000000000000000L 50#define RWSEM_UNLOCKED_VALUE 0x0000000000000000L
53#define RWSEM_ACTIVE_BIAS 0x0000000000000001L 51#define RWSEM_ACTIVE_BIAS 0x0000000000000001L
54#define RWSEM_ACTIVE_MASK 0x00000000ffffffffL 52#define RWSEM_ACTIVE_MASK 0x00000000ffffffffL
55#define RWSEM_WAITING_BIAS (-0x0000000100000000L) 53#define RWSEM_WAITING_BIAS (-0x0000000100000000L)
56#endif /* __s390x__ */ 54#endif /* CONFIG_64BIT */
57#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS 55#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
58#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) 56#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
59 57
@@ -65,19 +63,19 @@ static inline void __down_read(struct rw_semaphore *sem)
65 signed long old, new; 63 signed long old, new;
66 64
67 asm volatile( 65 asm volatile(
68#ifndef __s390x__ 66#ifndef CONFIG_64BIT
69 " l %0,%2\n" 67 " l %0,%2\n"
70 "0: lr %1,%0\n" 68 "0: lr %1,%0\n"
71 " ahi %1,%4\n" 69 " ahi %1,%4\n"
72 " cs %0,%1,%2\n" 70 " cs %0,%1,%2\n"
73 " jl 0b" 71 " jl 0b"
74#else /* __s390x__ */ 72#else /* CONFIG_64BIT */
75 " lg %0,%2\n" 73 " lg %0,%2\n"
76 "0: lgr %1,%0\n" 74 "0: lgr %1,%0\n"
77 " aghi %1,%4\n" 75 " aghi %1,%4\n"
78 " csg %0,%1,%2\n" 76 " csg %0,%1,%2\n"
79 " jl 0b" 77 " jl 0b"
80#endif /* __s390x__ */ 78#endif /* CONFIG_64BIT */
81 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 79 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
82 : "Q" (sem->count), "i" (RWSEM_ACTIVE_READ_BIAS) 80 : "Q" (sem->count), "i" (RWSEM_ACTIVE_READ_BIAS)
83 : "cc", "memory"); 81 : "cc", "memory");
@@ -93,7 +91,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem)
93 signed long old, new; 91 signed long old, new;
94 92
95 asm volatile( 93 asm volatile(
96#ifndef __s390x__ 94#ifndef CONFIG_64BIT
97 " l %0,%2\n" 95 " l %0,%2\n"
98 "0: ltr %1,%0\n" 96 "0: ltr %1,%0\n"
99 " jm 1f\n" 97 " jm 1f\n"
@@ -101,7 +99,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem)
101 " cs %0,%1,%2\n" 99 " cs %0,%1,%2\n"
102 " jl 0b\n" 100 " jl 0b\n"
103 "1:" 101 "1:"
104#else /* __s390x__ */ 102#else /* CONFIG_64BIT */
105 " lg %0,%2\n" 103 " lg %0,%2\n"
106 "0: ltgr %1,%0\n" 104 "0: ltgr %1,%0\n"
107 " jm 1f\n" 105 " jm 1f\n"
@@ -109,7 +107,7 @@ static inline int __down_read_trylock(struct rw_semaphore *sem)
109 " csg %0,%1,%2\n" 107 " csg %0,%1,%2\n"
110 " jl 0b\n" 108 " jl 0b\n"
111 "1:" 109 "1:"
112#endif /* __s390x__ */ 110#endif /* CONFIG_64BIT */
113 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 111 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
114 : "Q" (sem->count), "i" (RWSEM_ACTIVE_READ_BIAS) 112 : "Q" (sem->count), "i" (RWSEM_ACTIVE_READ_BIAS)
115 : "cc", "memory"); 113 : "cc", "memory");
@@ -125,19 +123,19 @@ static inline void __down_write_nested(struct rw_semaphore *sem, int subclass)
125 123
126 tmp = RWSEM_ACTIVE_WRITE_BIAS; 124 tmp = RWSEM_ACTIVE_WRITE_BIAS;
127 asm volatile( 125 asm volatile(
128#ifndef __s390x__ 126#ifndef CONFIG_64BIT
129 " l %0,%2\n" 127 " l %0,%2\n"
130 "0: lr %1,%0\n" 128 "0: lr %1,%0\n"
131 " a %1,%4\n" 129 " a %1,%4\n"
132 " cs %0,%1,%2\n" 130 " cs %0,%1,%2\n"
133 " jl 0b" 131 " jl 0b"
134#else /* __s390x__ */ 132#else /* CONFIG_64BIT */
135 " lg %0,%2\n" 133 " lg %0,%2\n"
136 "0: lgr %1,%0\n" 134 "0: lgr %1,%0\n"
137 " ag %1,%4\n" 135 " ag %1,%4\n"
138 " csg %0,%1,%2\n" 136 " csg %0,%1,%2\n"
139 " jl 0b" 137 " jl 0b"
140#endif /* __s390x__ */ 138#endif /* CONFIG_64BIT */
141 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 139 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
142 : "Q" (sem->count), "m" (tmp) 140 : "Q" (sem->count), "m" (tmp)
143 : "cc", "memory"); 141 : "cc", "memory");
@@ -158,19 +156,19 @@ static inline int __down_write_trylock(struct rw_semaphore *sem)
158 signed long old; 156 signed long old;
159 157
160 asm volatile( 158 asm volatile(
161#ifndef __s390x__ 159#ifndef CONFIG_64BIT
162 " l %0,%1\n" 160 " l %0,%1\n"
163 "0: ltr %0,%0\n" 161 "0: ltr %0,%0\n"
164 " jnz 1f\n" 162 " jnz 1f\n"
165 " cs %0,%3,%1\n" 163 " cs %0,%3,%1\n"
166 " jl 0b\n" 164 " jl 0b\n"
167#else /* __s390x__ */ 165#else /* CONFIG_64BIT */
168 " lg %0,%1\n" 166 " lg %0,%1\n"
169 "0: ltgr %0,%0\n" 167 "0: ltgr %0,%0\n"
170 " jnz 1f\n" 168 " jnz 1f\n"
171 " csg %0,%3,%1\n" 169 " csg %0,%3,%1\n"
172 " jl 0b\n" 170 " jl 0b\n"
173#endif /* __s390x__ */ 171#endif /* CONFIG_64BIT */
174 "1:" 172 "1:"
175 : "=&d" (old), "=Q" (sem->count) 173 : "=&d" (old), "=Q" (sem->count)
176 : "Q" (sem->count), "d" (RWSEM_ACTIVE_WRITE_BIAS) 174 : "Q" (sem->count), "d" (RWSEM_ACTIVE_WRITE_BIAS)
@@ -186,19 +184,19 @@ static inline void __up_read(struct rw_semaphore *sem)
186 signed long old, new; 184 signed long old, new;
187 185
188 asm volatile( 186 asm volatile(
189#ifndef __s390x__ 187#ifndef CONFIG_64BIT
190 " l %0,%2\n" 188 " l %0,%2\n"
191 "0: lr %1,%0\n" 189 "0: lr %1,%0\n"
192 " ahi %1,%4\n" 190 " ahi %1,%4\n"
193 " cs %0,%1,%2\n" 191 " cs %0,%1,%2\n"
194 " jl 0b" 192 " jl 0b"
195#else /* __s390x__ */ 193#else /* CONFIG_64BIT */
196 " lg %0,%2\n" 194 " lg %0,%2\n"
197 "0: lgr %1,%0\n" 195 "0: lgr %1,%0\n"
198 " aghi %1,%4\n" 196 " aghi %1,%4\n"
199 " csg %0,%1,%2\n" 197 " csg %0,%1,%2\n"
200 " jl 0b" 198 " jl 0b"
201#endif /* __s390x__ */ 199#endif /* CONFIG_64BIT */
202 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 200 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
203 : "Q" (sem->count), "i" (-RWSEM_ACTIVE_READ_BIAS) 201 : "Q" (sem->count), "i" (-RWSEM_ACTIVE_READ_BIAS)
204 : "cc", "memory"); 202 : "cc", "memory");
@@ -216,19 +214,19 @@ static inline void __up_write(struct rw_semaphore *sem)
216 214
217 tmp = -RWSEM_ACTIVE_WRITE_BIAS; 215 tmp = -RWSEM_ACTIVE_WRITE_BIAS;
218 asm volatile( 216 asm volatile(
219#ifndef __s390x__ 217#ifndef CONFIG_64BIT
220 " l %0,%2\n" 218 " l %0,%2\n"
221 "0: lr %1,%0\n" 219 "0: lr %1,%0\n"
222 " a %1,%4\n" 220 " a %1,%4\n"
223 " cs %0,%1,%2\n" 221 " cs %0,%1,%2\n"
224 " jl 0b" 222 " jl 0b"
225#else /* __s390x__ */ 223#else /* CONFIG_64BIT */
226 " lg %0,%2\n" 224 " lg %0,%2\n"
227 "0: lgr %1,%0\n" 225 "0: lgr %1,%0\n"
228 " ag %1,%4\n" 226 " ag %1,%4\n"
229 " csg %0,%1,%2\n" 227 " csg %0,%1,%2\n"
230 " jl 0b" 228 " jl 0b"
231#endif /* __s390x__ */ 229#endif /* CONFIG_64BIT */
232 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 230 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
233 : "Q" (sem->count), "m" (tmp) 231 : "Q" (sem->count), "m" (tmp)
234 : "cc", "memory"); 232 : "cc", "memory");
@@ -246,19 +244,19 @@ static inline void __downgrade_write(struct rw_semaphore *sem)
246 244
247 tmp = -RWSEM_WAITING_BIAS; 245 tmp = -RWSEM_WAITING_BIAS;
248 asm volatile( 246 asm volatile(
249#ifndef __s390x__ 247#ifndef CONFIG_64BIT
250 " l %0,%2\n" 248 " l %0,%2\n"
251 "0: lr %1,%0\n" 249 "0: lr %1,%0\n"
252 " a %1,%4\n" 250 " a %1,%4\n"
253 " cs %0,%1,%2\n" 251 " cs %0,%1,%2\n"
254 " jl 0b" 252 " jl 0b"
255#else /* __s390x__ */ 253#else /* CONFIG_64BIT */
256 " lg %0,%2\n" 254 " lg %0,%2\n"
257 "0: lgr %1,%0\n" 255 "0: lgr %1,%0\n"
258 " ag %1,%4\n" 256 " ag %1,%4\n"
259 " csg %0,%1,%2\n" 257 " csg %0,%1,%2\n"
260 " jl 0b" 258 " jl 0b"
261#endif /* __s390x__ */ 259#endif /* CONFIG_64BIT */
262 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 260 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
263 : "Q" (sem->count), "m" (tmp) 261 : "Q" (sem->count), "m" (tmp)
264 : "cc", "memory"); 262 : "cc", "memory");
@@ -274,19 +272,19 @@ static inline void rwsem_atomic_add(long delta, struct rw_semaphore *sem)
274 signed long old, new; 272 signed long old, new;
275 273
276 asm volatile( 274 asm volatile(
277#ifndef __s390x__ 275#ifndef CONFIG_64BIT
278 " l %0,%2\n" 276 " l %0,%2\n"
279 "0: lr %1,%0\n" 277 "0: lr %1,%0\n"
280 " ar %1,%4\n" 278 " ar %1,%4\n"
281 " cs %0,%1,%2\n" 279 " cs %0,%1,%2\n"
282 " jl 0b" 280 " jl 0b"
283#else /* __s390x__ */ 281#else /* CONFIG_64BIT */
284 " lg %0,%2\n" 282 " lg %0,%2\n"
285 "0: lgr %1,%0\n" 283 "0: lgr %1,%0\n"
286 " agr %1,%4\n" 284 " agr %1,%4\n"
287 " csg %0,%1,%2\n" 285 " csg %0,%1,%2\n"
288 " jl 0b" 286 " jl 0b"
289#endif /* __s390x__ */ 287#endif /* CONFIG_64BIT */
290 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 288 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
291 : "Q" (sem->count), "d" (delta) 289 : "Q" (sem->count), "d" (delta)
292 : "cc", "memory"); 290 : "cc", "memory");
@@ -300,24 +298,23 @@ static inline long rwsem_atomic_update(long delta, struct rw_semaphore *sem)
300 signed long old, new; 298 signed long old, new;
301 299
302 asm volatile( 300 asm volatile(
303#ifndef __s390x__ 301#ifndef CONFIG_64BIT
304 " l %0,%2\n" 302 " l %0,%2\n"
305 "0: lr %1,%0\n" 303 "0: lr %1,%0\n"
306 " ar %1,%4\n" 304 " ar %1,%4\n"
307 " cs %0,%1,%2\n" 305 " cs %0,%1,%2\n"
308 " jl 0b" 306 " jl 0b"
309#else /* __s390x__ */ 307#else /* CONFIG_64BIT */
310 " lg %0,%2\n" 308 " lg %0,%2\n"
311 "0: lgr %1,%0\n" 309 "0: lgr %1,%0\n"
312 " agr %1,%4\n" 310 " agr %1,%4\n"
313 " csg %0,%1,%2\n" 311 " csg %0,%1,%2\n"
314 " jl 0b" 312 " jl 0b"
315#endif /* __s390x__ */ 313#endif /* CONFIG_64BIT */
316 : "=&d" (old), "=&d" (new), "=Q" (sem->count) 314 : "=&d" (old), "=&d" (new), "=Q" (sem->count)
317 : "Q" (sem->count), "d" (delta) 315 : "Q" (sem->count), "d" (delta)
318 : "cc", "memory"); 316 : "cc", "memory");
319 return new; 317 return new;
320} 318}
321 319
322#endif /* __KERNEL__ */
323#endif /* _S390_RWSEM_H */ 320#endif /* _S390_RWSEM_H */
diff --git a/arch/s390/include/asm/setup.h b/arch/s390/include/asm/setup.h
index 7244e1f64126..40eb2ff88e9e 100644
--- a/arch/s390/include/asm/setup.h
+++ b/arch/s390/include/asm/setup.h
@@ -22,19 +22,19 @@
22#include <asm/lowcore.h> 22#include <asm/lowcore.h>
23#include <asm/types.h> 23#include <asm/types.h>
24 24
25#ifndef __s390x__ 25#ifndef CONFIG_64BIT
26#define IPL_DEVICE (*(unsigned long *) (0x10404)) 26#define IPL_DEVICE (*(unsigned long *) (0x10404))
27#define INITRD_START (*(unsigned long *) (0x1040C)) 27#define INITRD_START (*(unsigned long *) (0x1040C))
28#define INITRD_SIZE (*(unsigned long *) (0x10414)) 28#define INITRD_SIZE (*(unsigned long *) (0x10414))
29#define OLDMEM_BASE (*(unsigned long *) (0x1041C)) 29#define OLDMEM_BASE (*(unsigned long *) (0x1041C))
30#define OLDMEM_SIZE (*(unsigned long *) (0x10424)) 30#define OLDMEM_SIZE (*(unsigned long *) (0x10424))
31#else /* __s390x__ */ 31#else /* CONFIG_64BIT */
32#define IPL_DEVICE (*(unsigned long *) (0x10400)) 32#define IPL_DEVICE (*(unsigned long *) (0x10400))
33#define INITRD_START (*(unsigned long *) (0x10408)) 33#define INITRD_START (*(unsigned long *) (0x10408))
34#define INITRD_SIZE (*(unsigned long *) (0x10410)) 34#define INITRD_SIZE (*(unsigned long *) (0x10410))
35#define OLDMEM_BASE (*(unsigned long *) (0x10418)) 35#define OLDMEM_BASE (*(unsigned long *) (0x10418))
36#define OLDMEM_SIZE (*(unsigned long *) (0x10420)) 36#define OLDMEM_SIZE (*(unsigned long *) (0x10420))
37#endif /* __s390x__ */ 37#endif /* CONFIG_64BIT */
38#define COMMAND_LINE ((char *) (0x10480)) 38#define COMMAND_LINE ((char *) (0x10480))
39 39
40#define CHUNK_READ_WRITE 0 40#define CHUNK_READ_WRITE 0
@@ -89,7 +89,7 @@ extern unsigned int user_mode;
89 89
90#define MACHINE_HAS_DIAG9C (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG9C) 90#define MACHINE_HAS_DIAG9C (S390_lowcore.machine_flags & MACHINE_FLAG_DIAG9C)
91 91
92#ifndef __s390x__ 92#ifndef CONFIG_64BIT
93#define MACHINE_HAS_IEEE (S390_lowcore.machine_flags & MACHINE_FLAG_IEEE) 93#define MACHINE_HAS_IEEE (S390_lowcore.machine_flags & MACHINE_FLAG_IEEE)
94#define MACHINE_HAS_CSP (S390_lowcore.machine_flags & MACHINE_FLAG_CSP) 94#define MACHINE_HAS_CSP (S390_lowcore.machine_flags & MACHINE_FLAG_CSP)
95#define MACHINE_HAS_IDTE (0) 95#define MACHINE_HAS_IDTE (0)
@@ -100,7 +100,7 @@ extern unsigned int user_mode;
100#define MACHINE_HAS_PFMF (0) 100#define MACHINE_HAS_PFMF (0)
101#define MACHINE_HAS_SPP (0) 101#define MACHINE_HAS_SPP (0)
102#define MACHINE_HAS_TOPOLOGY (0) 102#define MACHINE_HAS_TOPOLOGY (0)
103#else /* __s390x__ */ 103#else /* CONFIG_64BIT */
104#define MACHINE_HAS_IEEE (1) 104#define MACHINE_HAS_IEEE (1)
105#define MACHINE_HAS_CSP (1) 105#define MACHINE_HAS_CSP (1)
106#define MACHINE_HAS_IDTE (S390_lowcore.machine_flags & MACHINE_FLAG_IDTE) 106#define MACHINE_HAS_IDTE (S390_lowcore.machine_flags & MACHINE_FLAG_IDTE)
@@ -111,7 +111,7 @@ extern unsigned int user_mode;
111#define MACHINE_HAS_PFMF (S390_lowcore.machine_flags & MACHINE_FLAG_PFMF) 111#define MACHINE_HAS_PFMF (S390_lowcore.machine_flags & MACHINE_FLAG_PFMF)
112#define MACHINE_HAS_SPP (S390_lowcore.machine_flags & MACHINE_FLAG_SPP) 112#define MACHINE_HAS_SPP (S390_lowcore.machine_flags & MACHINE_FLAG_SPP)
113#define MACHINE_HAS_TOPOLOGY (S390_lowcore.machine_flags & MACHINE_FLAG_TOPOLOGY) 113#define MACHINE_HAS_TOPOLOGY (S390_lowcore.machine_flags & MACHINE_FLAG_TOPOLOGY)
114#endif /* __s390x__ */ 114#endif /* CONFIG_64BIT */
115 115
116#define ZFCPDUMP_HSA_SIZE (32UL<<20) 116#define ZFCPDUMP_HSA_SIZE (32UL<<20)
117#define ZFCPDUMP_HSA_SIZE_MAX (64UL<<20) 117#define ZFCPDUMP_HSA_SIZE_MAX (64UL<<20)
@@ -153,19 +153,19 @@ extern void (*_machine_power_off)(void);
153 153
154#else /* __ASSEMBLY__ */ 154#else /* __ASSEMBLY__ */
155 155
156#ifndef __s390x__ 156#ifndef CONFIG_64BIT
157#define IPL_DEVICE 0x10404 157#define IPL_DEVICE 0x10404
158#define INITRD_START 0x1040C 158#define INITRD_START 0x1040C
159#define INITRD_SIZE 0x10414 159#define INITRD_SIZE 0x10414
160#define OLDMEM_BASE 0x1041C 160#define OLDMEM_BASE 0x1041C
161#define OLDMEM_SIZE 0x10424 161#define OLDMEM_SIZE 0x10424
162#else /* __s390x__ */ 162#else /* CONFIG_64BIT */
163#define IPL_DEVICE 0x10400 163#define IPL_DEVICE 0x10400
164#define INITRD_START 0x10408 164#define INITRD_START 0x10408
165#define INITRD_SIZE 0x10410 165#define INITRD_SIZE 0x10410
166#define OLDMEM_BASE 0x10418 166#define OLDMEM_BASE 0x10418
167#define OLDMEM_SIZE 0x10420 167#define OLDMEM_SIZE 0x10420
168#endif /* __s390x__ */ 168#endif /* CONFIG_64BIT */
169#define COMMAND_LINE 0x10480 169#define COMMAND_LINE 0x10480
170 170
171#endif /* __ASSEMBLY__ */ 171#endif /* __ASSEMBLY__ */
diff --git a/arch/s390/include/asm/sfp-util.h b/arch/s390/include/asm/sfp-util.h
index ca3f8814e361..5959bfb3b693 100644
--- a/arch/s390/include/asm/sfp-util.h
+++ b/arch/s390/include/asm/sfp-util.h
@@ -51,7 +51,7 @@
51 wl = __wl; \ 51 wl = __wl; \
52}) 52})
53 53
54#ifdef __s390x__ 54#ifdef CONFIG_64BIT
55#define udiv_qrnnd(q, r, n1, n0, d) \ 55#define udiv_qrnnd(q, r, n1, n0, d) \
56 do { unsigned long __n; \ 56 do { unsigned long __n; \
57 unsigned int __r, __d; \ 57 unsigned int __r, __d; \
diff --git a/arch/s390/include/asm/string.h b/arch/s390/include/asm/string.h
index cd0241db5a46..8cc160c9e1cb 100644
--- a/arch/s390/include/asm/string.h
+++ b/arch/s390/include/asm/string.h
@@ -9,8 +9,6 @@
9#ifndef _S390_STRING_H_ 9#ifndef _S390_STRING_H_
10#define _S390_STRING_H_ 10#define _S390_STRING_H_
11 11
12#ifdef __KERNEL__
13
14#ifndef _LINUX_TYPES_H 12#ifndef _LINUX_TYPES_H
15#include <linux/types.h> 13#include <linux/types.h>
16#endif 14#endif
@@ -152,6 +150,4 @@ size_t strlen(const char *s);
152size_t strnlen(const char * s, size_t n); 150size_t strnlen(const char * s, size_t n);
153#endif /* !IN_ARCH_STRING_C */ 151#endif /* !IN_ARCH_STRING_C */
154 152
155#endif /* __KERNEL__ */
156
157#endif /* __S390_STRING_H_ */ 153#endif /* __S390_STRING_H_ */
diff --git a/arch/s390/include/asm/thread_info.h b/arch/s390/include/asm/thread_info.h
index 003b04edcff6..4e40b25cd060 100644
--- a/arch/s390/include/asm/thread_info.h
+++ b/arch/s390/include/asm/thread_info.h
@@ -9,15 +9,13 @@
9#ifndef _ASM_THREAD_INFO_H 9#ifndef _ASM_THREAD_INFO_H
10#define _ASM_THREAD_INFO_H 10#define _ASM_THREAD_INFO_H
11 11
12#ifdef __KERNEL__
13
14/* 12/*
15 * Size of kernel stack for each process 13 * Size of kernel stack for each process
16 */ 14 */
17#ifndef __s390x__ 15#ifndef CONFIG_64BIT
18#define THREAD_ORDER 1 16#define THREAD_ORDER 1
19#define ASYNC_ORDER 1 17#define ASYNC_ORDER 1
20#else /* __s390x__ */ 18#else /* CONFIG_64BIT */
21#ifndef __SMALL_STACK 19#ifndef __SMALL_STACK
22#define THREAD_ORDER 2 20#define THREAD_ORDER 2
23#define ASYNC_ORDER 2 21#define ASYNC_ORDER 2
@@ -25,7 +23,7 @@
25#define THREAD_ORDER 1 23#define THREAD_ORDER 1
26#define ASYNC_ORDER 1 24#define ASYNC_ORDER 1
27#endif 25#endif
28#endif /* __s390x__ */ 26#endif /* CONFIG_64BIT */
29 27
30#define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER) 28#define THREAD_SIZE (PAGE_SIZE << THREAD_ORDER)
31#define ASYNC_SIZE (PAGE_SIZE << ASYNC_ORDER) 29#define ASYNC_SIZE (PAGE_SIZE << ASYNC_ORDER)
@@ -123,8 +121,6 @@ static inline struct thread_info *current_thread_info(void)
123#define is_32bit_task() (1) 121#define is_32bit_task() (1)
124#endif 122#endif
125 123
126#endif /* __KERNEL__ */
127
128#define PREEMPT_ACTIVE 0x4000000 124#define PREEMPT_ACTIVE 0x4000000
129 125
130#endif /* _ASM_THREAD_INFO_H */ 126#endif /* _ASM_THREAD_INFO_H */
diff --git a/arch/s390/include/asm/timer.h b/arch/s390/include/asm/timer.h
index e63069ba39e3..15d647901e5c 100644
--- a/arch/s390/include/asm/timer.h
+++ b/arch/s390/include/asm/timer.h
@@ -10,8 +10,6 @@
10#ifndef _ASM_S390_TIMER_H 10#ifndef _ASM_S390_TIMER_H
11#define _ASM_S390_TIMER_H 11#define _ASM_S390_TIMER_H
12 12
13#ifdef __KERNEL__
14
15#include <linux/timer.h> 13#include <linux/timer.h>
16 14
17#define VTIMER_MAX_SLICE (0x7ffffffffffff000LL) 15#define VTIMER_MAX_SLICE (0x7ffffffffffff000LL)
@@ -50,6 +48,4 @@ extern void vtime_init(void);
50extern void vtime_stop_cpu(void); 48extern void vtime_stop_cpu(void);
51extern void vtime_start_leave(void); 49extern void vtime_start_leave(void);
52 50
53#endif /* __KERNEL__ */
54
55#endif /* _ASM_S390_TIMER_H */ 51#endif /* _ASM_S390_TIMER_H */
diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h
index 775a5eea8f9e..06e5acbc84bd 100644
--- a/arch/s390/include/asm/tlb.h
+++ b/arch/s390/include/asm/tlb.h
@@ -106,7 +106,7 @@ static inline void pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
106static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd, 106static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
107 unsigned long address) 107 unsigned long address)
108{ 108{
109#ifdef __s390x__ 109#ifdef CONFIG_64BIT
110 if (tlb->mm->context.asce_limit <= (1UL << 31)) 110 if (tlb->mm->context.asce_limit <= (1UL << 31))
111 return; 111 return;
112 if (!tlb->fullmm) 112 if (!tlb->fullmm)
@@ -125,7 +125,7 @@ static inline void pmd_free_tlb(struct mmu_gather *tlb, pmd_t *pmd,
125static inline void pud_free_tlb(struct mmu_gather *tlb, pud_t *pud, 125static inline void pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
126 unsigned long address) 126 unsigned long address)
127{ 127{
128#ifdef __s390x__ 128#ifdef CONFIG_64BIT
129 if (tlb->mm->context.asce_limit <= (1UL << 42)) 129 if (tlb->mm->context.asce_limit <= (1UL << 42))
130 return; 130 return;
131 if (!tlb->fullmm) 131 if (!tlb->fullmm)
diff --git a/arch/s390/include/asm/tlbflush.h b/arch/s390/include/asm/tlbflush.h
index 1d8648cf2fea..9fde315f3a7c 100644
--- a/arch/s390/include/asm/tlbflush.h
+++ b/arch/s390/include/asm/tlbflush.h
@@ -27,12 +27,12 @@ static inline void __tlb_flush_global(void)
27 register unsigned long reg4 asm("4"); 27 register unsigned long reg4 asm("4");
28 long dummy; 28 long dummy;
29 29
30#ifndef __s390x__ 30#ifndef CONFIG_64BIT
31 if (!MACHINE_HAS_CSP) { 31 if (!MACHINE_HAS_CSP) {
32 smp_ptlb_all(); 32 smp_ptlb_all();
33 return; 33 return;
34 } 34 }
35#endif /* __s390x__ */ 35#endif /* CONFIG_64BIT */
36 36
37 dummy = 0; 37 dummy = 0;
38 reg2 = reg3 = 0; 38 reg2 = reg3 = 0;
diff --git a/arch/s390/include/asm/types.h b/arch/s390/include/asm/types.h
index 05ebbcdbbf6b..6c8c35f8df14 100644
--- a/arch/s390/include/asm/types.h
+++ b/arch/s390/include/asm/types.h
@@ -28,7 +28,7 @@ typedef __signed__ long saddr_t;
28 28
29#ifndef __ASSEMBLY__ 29#ifndef __ASSEMBLY__
30 30
31#ifndef __s390x__ 31#ifndef CONFIG_64BIT
32typedef union { 32typedef union {
33 unsigned long long pair; 33 unsigned long long pair;
34 struct { 34 struct {
@@ -37,7 +37,7 @@ typedef union {
37 } subreg; 37 } subreg;
38} register_pair; 38} register_pair;
39 39
40#endif /* ! __s390x__ */ 40#endif /* ! CONFIG_64BIT */
41#endif /* __ASSEMBLY__ */ 41#endif /* __ASSEMBLY__ */
42#endif /* __KERNEL__ */ 42#endif /* __KERNEL__ */
43#endif /* _S390_TYPES_H */ 43#endif /* _S390_TYPES_H */
diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h
index 8f2cada4f7c9..1f3a79bcd262 100644
--- a/arch/s390/include/asm/uaccess.h
+++ b/arch/s390/include/asm/uaccess.h
@@ -50,10 +50,15 @@
50 50
51#define segment_eq(a,b) ((a).ar4 == (b).ar4) 51#define segment_eq(a,b) ((a).ar4 == (b).ar4)
52 52
53#define __access_ok(addr, size) \ 53static inline int __range_ok(unsigned long addr, unsigned long size)
54({ \ 54{
55 __chk_user_ptr(addr); \ 55 return 1;
56 1; \ 56}
57
58#define __access_ok(addr, size) \
59({ \
60 __chk_user_ptr(addr); \
61 __range_ok((unsigned long)(addr), (size)); \
57}) 62})
58 63
59#define access_ok(type, addr, size) __access_ok(addr, size) 64#define access_ok(type, addr, size) __access_ok(addr, size)
@@ -377,7 +382,7 @@ clear_user(void __user *to, unsigned long n)
377} 382}
378 383
379extern int memcpy_real(void *, void *, size_t); 384extern int memcpy_real(void *, void *, size_t);
380extern void copy_to_absolute_zero(void *dest, void *src, size_t count); 385extern void memcpy_absolute(void *, void *, size_t);
381extern int copy_to_user_real(void __user *dest, void *src, size_t count); 386extern int copy_to_user_real(void __user *dest, void *src, size_t count);
382extern int copy_from_user_real(void *dest, void __user *src, size_t count); 387extern int copy_from_user_real(void *dest, void __user *src, size_t count);
383 388
diff --git a/arch/s390/include/asm/vdso.h b/arch/s390/include/asm/vdso.h
index c4a11cfad3c8..a73eb2e1e918 100644
--- a/arch/s390/include/asm/vdso.h
+++ b/arch/s390/include/asm/vdso.h
@@ -1,8 +1,6 @@
1#ifndef __S390_VDSO_H__ 1#ifndef __S390_VDSO_H__
2#define __S390_VDSO_H__ 2#define __S390_VDSO_H__
3 3
4#ifdef __KERNEL__
5
6/* Default link addresses for the vDSOs */ 4/* Default link addresses for the vDSOs */
7#define VDSO32_LBASE 0 5#define VDSO32_LBASE 0
8#define VDSO64_LBASE 0 6#define VDSO64_LBASE 0
@@ -45,7 +43,4 @@ void vdso_free_per_cpu(struct _lowcore *lowcore);
45#endif 43#endif
46 44
47#endif /* __ASSEMBLY__ */ 45#endif /* __ASSEMBLY__ */
48
49#endif /* __KERNEL__ */
50
51#endif /* __S390_VDSO_H__ */ 46#endif /* __S390_VDSO_H__ */