diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-10-01 02:27:45 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-01 03:39:22 -0400 |
commit | 3c1fcfe229e99752c74efb945a4a3f560be04204 (patch) | |
tree | 44085d9b599e06a92426141811a6f712beac17aa /arch/s390/kernel/head64.S | |
parent | cdc39363d33506b0e067d41fc91f89d186bdf7f7 (diff) |
[PATCH] Directed yield: direct yield of spinlocks for s390.
Use the new diagnose 0x9c in the spinlock implementation for s390. It
yields the remaining timeslice of the virtual cpu that tries to acquire a
lock to the virtual cpu that is the current holder of the lock.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/s390/kernel/head64.S')
-rw-r--r-- | arch/s390/kernel/head64.S | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/arch/s390/kernel/head64.S b/arch/s390/kernel/head64.S index 48998d50b00a..b30e5897cdf7 100644 --- a/arch/s390/kernel/head64.S +++ b/arch/s390/kernel/head64.S | |||
@@ -251,6 +251,17 @@ startup_continue: | |||
251 | 0: | 251 | 0: |
252 | 252 | ||
253 | # | 253 | # |
254 | # find out if the diag 0x9c is available | ||
255 | # | ||
256 | la %r1,0f-.LPG1(%r13) # set program check address | ||
257 | stg %r1,__LC_PGM_NEW_PSW+8 | ||
258 | stap __LC_CPUID+4 # store cpu address | ||
259 | lh %r1,__LC_CPUID+4 | ||
260 | diag %r1,0,0x9c # test diag 0x9c | ||
261 | oi 6(%r12),1 # set diag9c flag | ||
262 | 0: | ||
263 | |||
264 | # | ||
254 | # find out if we have the MVCOS instruction | 265 | # find out if we have the MVCOS instruction |
255 | # | 266 | # |
256 | la %r1,0f-.LPG1(%r13) # set program check address | 267 | la %r1,0f-.LPG1(%r13) # set program check address |