diff options
author | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-09-28 10:56:43 -0400 |
---|---|---|
committer | Martin Schwidefsky <schwidefsky@de.ibm.com> | 2006-09-28 10:56:43 -0400 |
commit | 94c12cc7d196bab34aaa98d38521549fa1e5ef76 (patch) | |
tree | 8e0cec0ed44445d74a2cb5160303d6b4dfb1bc31 /arch/s390/hypfs | |
parent | 25d83cbfaa44e1b9170c0941c3ef52ca39f54ccc (diff) |
[S390] Inline assembly cleanup.
Major cleanup of all s390 inline assemblies. They now have a common
coding style. Quite a few have been shortened, mainly by using register
asm variables. Use of the EX_TABLE macro helps as well. The atomic ops,
bit ops and locking inlines new use the Q-constraint if a newer gcc
is used. That results in slightly better code.
Thanks to Christian Borntraeger for proof reading the changes.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'arch/s390/hypfs')
-rw-r--r-- | arch/s390/hypfs/hypfs_diag.c | 23 |
1 files changed, 7 insertions, 16 deletions
diff --git a/arch/s390/hypfs/hypfs_diag.c b/arch/s390/hypfs/hypfs_diag.c index 684384f2b364..443fa377d9ff 100644 --- a/arch/s390/hypfs/hypfs_diag.c +++ b/arch/s390/hypfs/hypfs_diag.c | |||
@@ -333,22 +333,14 @@ static int diag204(unsigned long subcode, unsigned long size, void *addr) | |||
333 | register unsigned long _subcode asm("0") = subcode; | 333 | register unsigned long _subcode asm("0") = subcode; |
334 | register unsigned long _size asm("1") = size; | 334 | register unsigned long _size asm("1") = size; |
335 | 335 | ||
336 | asm volatile (" diag %2,%0,0x204\n" | 336 | asm volatile( |
337 | "0: \n" ".section __ex_table,\"a\"\n" | 337 | " diag %2,%0,0x204\n" |
338 | #ifndef __s390x__ | 338 | "0:\n" |
339 | " .align 4\n" | 339 | EX_TABLE(0b,0b) |
340 | " .long 0b,0b\n" | 340 | : "+d" (_subcode), "+d" (_size) : "d" (addr) : "memory"); |
341 | #else | ||
342 | " .align 8\n" | ||
343 | " .quad 0b,0b\n" | ||
344 | #endif | ||
345 | ".previous":"+d" (_subcode), "+d"(_size) | ||
346 | :"d"(addr) | ||
347 | :"memory"); | ||
348 | if (_subcode) | 341 | if (_subcode) |
349 | return -1; | 342 | return -1; |
350 | else | 343 | return _size; |
351 | return _size; | ||
352 | } | 344 | } |
353 | 345 | ||
354 | /* | 346 | /* |
@@ -491,8 +483,7 @@ out: | |||
491 | 483 | ||
492 | static void diag224(void *ptr) | 484 | static void diag224(void *ptr) |
493 | { | 485 | { |
494 | asm volatile(" diag %0,%1,0x224\n" | 486 | asm volatile("diag %0,%1,0x224" : :"d" (0), "d"(ptr) : "memory"); |
495 | : :"d" (0), "d"(ptr) : "memory"); | ||
496 | } | 487 | } |
497 | 488 | ||
498 | static int diag224_get_name_table(void) | 489 | static int diag224_get_name_table(void) |