diff options
author | Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com> | 2009-04-14 09:36:16 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2009-04-14 09:37:21 -0400 |
commit | 25097bf153391f7be4c591d47061b3dc4990dac2 (patch) | |
tree | e6fce72c43759d97eb80f0af1ae08c0e6058e6bc /arch/s390/include/asm/lowcore.h | |
parent | b21597d0268983f8f9e8b563494f75490403e948 (diff) |
[S390] s390: move machine flags to lowcore
Currently the storage of the machine flags is a globally exported unsigned
long long variable. By moving the storage location into the lowcore struct we
allow assembler code to check machine_flags directly even without needing a
register. Addtionally the lowcore and therefore the machine flags too will be
in cache most of the time.
Signed-off-by: Christian Ehrhardt <ehrhardt@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/include/asm/lowcore.h')
-rw-r--r-- | arch/s390/include/asm/lowcore.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/s390/include/asm/lowcore.h b/arch/s390/include/asm/lowcore.h index b349f1c7fdfa..3aeca492b147 100644 --- a/arch/s390/include/asm/lowcore.h +++ b/arch/s390/include/asm/lowcore.h | |||
@@ -66,6 +66,7 @@ | |||
66 | #define __LC_USER_EXEC_ASCE 0x02ac | 66 | #define __LC_USER_EXEC_ASCE 0x02ac |
67 | #define __LC_CPUID 0x02b0 | 67 | #define __LC_CPUID 0x02b0 |
68 | #define __LC_INT_CLOCK 0x02c8 | 68 | #define __LC_INT_CLOCK 0x02c8 |
69 | #define __LC_MACHINE_FLAGS 0x02d8 | ||
69 | #define __LC_IRB 0x0300 | 70 | #define __LC_IRB 0x0300 |
70 | #define __LC_PFAULT_INTPARM 0x0080 | 71 | #define __LC_PFAULT_INTPARM 0x0080 |
71 | #define __LC_CPU_TIMER_SAVE_AREA 0x00d8 | 72 | #define __LC_CPU_TIMER_SAVE_AREA 0x00d8 |
@@ -110,6 +111,7 @@ | |||
110 | #define __LC_CPUID 0x0320 | 111 | #define __LC_CPUID 0x0320 |
111 | #define __LC_INT_CLOCK 0x0340 | 112 | #define __LC_INT_CLOCK 0x0340 |
112 | #define __LC_VDSO_PER_CPU 0x0350 | 113 | #define __LC_VDSO_PER_CPU 0x0350 |
114 | #define __LC_MACHINE_FLAGS 0x0358 | ||
113 | #define __LC_IRB 0x0380 | 115 | #define __LC_IRB 0x0380 |
114 | #define __LC_PASTE 0x03c0 | 116 | #define __LC_PASTE 0x03c0 |
115 | #define __LC_PFAULT_INTPARM 0x11b8 | 117 | #define __LC_PFAULT_INTPARM 0x11b8 |
@@ -127,9 +129,9 @@ | |||
127 | 129 | ||
128 | #ifndef __ASSEMBLY__ | 130 | #ifndef __ASSEMBLY__ |
129 | 131 | ||
130 | #include <asm/processor.h> | 132 | #include <asm/cpuid.h> |
133 | #include <asm/ptrace.h> | ||
131 | #include <linux/types.h> | 134 | #include <linux/types.h> |
132 | #include <asm/sigp.h> | ||
133 | 135 | ||
134 | void restart_int_handler(void); | 136 | void restart_int_handler(void); |
135 | void ext_int_handler(void); | 137 | void ext_int_handler(void); |
@@ -277,7 +279,8 @@ struct _lowcore | |||
277 | __u32 ext_call_fast; /* 0x02c4 */ | 279 | __u32 ext_call_fast; /* 0x02c4 */ |
278 | __u64 int_clock; /* 0x02c8 */ | 280 | __u64 int_clock; /* 0x02c8 */ |
279 | __u64 clock_comparator; /* 0x02d0 */ | 281 | __u64 clock_comparator; /* 0x02d0 */ |
280 | __u8 pad_0x02d8[0x0300-0x02d8]; /* 0x02d8 */ | 282 | __u32 machine_flags; /* 0x02d8 */ |
283 | __u8 pad_0x02dc[0x0300-0x02dc]; /* 0x02dc */ | ||
281 | 284 | ||
282 | /* Interrupt response block */ | 285 | /* Interrupt response block */ |
283 | __u8 irb[64]; /* 0x0300 */ | 286 | __u8 irb[64]; /* 0x0300 */ |
@@ -381,7 +384,8 @@ struct _lowcore | |||
381 | __u64 int_clock; /* 0x0340 */ | 384 | __u64 int_clock; /* 0x0340 */ |
382 | __u64 clock_comparator; /* 0x0348 */ | 385 | __u64 clock_comparator; /* 0x0348 */ |
383 | __u64 vdso_per_cpu_data; /* 0x0350 */ | 386 | __u64 vdso_per_cpu_data; /* 0x0350 */ |
384 | __u8 pad_0x0358[0x0380-0x0358]; /* 0x0358 */ | 387 | __u64 machine_flags; /* 0x0358 */ |
388 | __u8 pad_0x0360[0x0380-0x0360]; /* 0x0360 */ | ||
385 | 389 | ||
386 | /* Interrupt response block. */ | 390 | /* Interrupt response block. */ |
387 | __u8 irb[64]; /* 0x0380 */ | 391 | __u8 irb[64]; /* 0x0380 */ |