diff options
author | Michael Holzheu <holzheu@de.ibm.com> | 2007-02-21 10:55:18 +0100 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2007-02-21 10:55:18 +0100 |
commit | 72960a02c270950253126ee8b339afd400f55273 (patch) | |
tree | 3dec1f231bac88c2457af8a33b146b7df25df603 | |
parent | 6c732de2d3673e28c6a976c98ee6ba4d197a919a (diff) | |
download | op-kernel-dev-72960a02c270950253126ee8b339afd400f55273.zip op-kernel-dev-72960a02c270950253126ee8b339afd400f55273.tar.gz |
[S390] New get_cpu_id() inline assembly
Replace two stidp inline assemblies with one global implementation.
Signed-off-by: Michael Holzheu <holzheu@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
-rw-r--r-- | arch/s390/kernel/early.c | 2 | ||||
-rw-r--r-- | arch/s390/kernel/setup.c | 2 | ||||
-rw-r--r-- | include/asm-s390/processor.h | 5 |
3 files changed, 7 insertions, 2 deletions
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index e518dd5..011e8c7 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c @@ -129,7 +129,7 @@ static noinline __init void detect_machine_type(void) { struct cpuinfo_S390 *cpuinfo = &S390_lowcore.cpu_data; - asm volatile("stidp %0" : "=m" (S390_lowcore.cpu_data.cpu_id)); + get_cpu_id(&S390_lowcore.cpu_data.cpu_id); /* Running under z/VM ? */ if (cpuinfo->cpu_id.version == 0xff) diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 50c5210..49567d8 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c @@ -106,7 +106,7 @@ void __devinit cpu_init (void) /* * Store processor id in lowcore (used e.g. in timer_interrupt) */ - asm volatile("stidp %0": "=m" (S390_lowcore.cpu_data.cpu_id)); + get_cpu_id(&S390_lowcore.cpu_data.cpu_id); S390_lowcore.cpu_data.cpu_addr = addr; /* diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h index 4c1b739..33b80ce 100644 --- a/include/asm-s390/processor.h +++ b/include/asm-s390/processor.h @@ -36,6 +36,11 @@ typedef struct unsigned int unused : 16; } __attribute__ ((packed)) cpuid_t; +static inline void get_cpu_id(cpuid_t *ptr) +{ + asm volatile("stidp 0(%1)" : "=m" (*ptr) : "a" (ptr)); +} + struct cpuinfo_S390 { cpuid_t cpu_id; |