Commit 72960a02 authored by Michael Holzheu's avatar Michael Holzheu Committed by Martin Schwidefsky

[S390] New get_cpu_id() inline assembly

Replace two stidp inline assemblies with one global implementation.
Signed-off-by: default avatarMichael Holzheu <holzheu@de.ibm.com>
Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
parent 6c732de2
...@@ -129,7 +129,7 @@ static noinline __init void detect_machine_type(void) ...@@ -129,7 +129,7 @@ static noinline __init void detect_machine_type(void)
{ {
struct cpuinfo_S390 *cpuinfo = &S390_lowcore.cpu_data; 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 ? */ /* Running under z/VM ? */
if (cpuinfo->cpu_id.version == 0xff) if (cpuinfo->cpu_id.version == 0xff)
......
...@@ -106,7 +106,7 @@ void __devinit cpu_init (void) ...@@ -106,7 +106,7 @@ void __devinit cpu_init (void)
/* /*
* Store processor id in lowcore (used e.g. in timer_interrupt) * 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; S390_lowcore.cpu_data.cpu_addr = addr;
/* /*
......
...@@ -36,6 +36,11 @@ typedef struct ...@@ -36,6 +36,11 @@ typedef struct
unsigned int unused : 16; unsigned int unused : 16;
} __attribute__ ((packed)) cpuid_t; } __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 struct cpuinfo_S390
{ {
cpuid_t cpu_id; cpuid_t cpu_id;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment