diff options
author | dwilder <dwilder> | 2007-02-26 01:41:46 +0000 |
---|---|---|
committer | dwilder <dwilder> | 2007-02-26 01:41:46 +0000 |
commit | 45c6f4cc211caea36fb1cd4c244ef267b57de229 (patch) | |
tree | 7c7180360a0f648c40f1da9aa1ee3b68b8950139 /runtime | |
parent | 3f9e827c2d0fabbbef88a15ff03046f6ece60fd1 (diff) | |
download | systemtap-steved-45c6f4cc211caea36fb1cd4c244ef267b57de229.tar.gz systemtap-steved-45c6f4cc211caea36fb1cd4c244ef267b57de229.tar.xz systemtap-steved-45c6f4cc211caea36fb1cd4c244ef267b57de229.zip |
Changed the s390 versions of __stp_put_asm __stp_get_asm to use EX_TABLE macro eliminating the need for both a s390 and s390x version of these functions. This alos fixed an aligment problem building the the exception table.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/loc2c-runtime.h | 58 |
1 files changed, 2 insertions, 56 deletions
diff --git a/runtime/loc2c-runtime.h b/runtime/loc2c-runtime.h index ef9d8f69..1860741a 100644 --- a/runtime/loc2c-runtime.h +++ b/runtime/loc2c-runtime.h @@ -296,53 +296,6 @@ #elif defined (__s390__) || defined (__s390x__) -#if defined __s390__ -#define __stp_get_asm(x, addr, err, size) \ -({ \ - asm volatile( \ - "0: mvc 0(%2,%4),0(%3)\n" \ - "1:\n" \ - ".section .fixup,\"ax\"\n" \ - "2: lhi %0,%5\n" \ - " bras 1,3f\n" \ - " .long 1b\n" \ - "3: l 1,0(1)\n" \ - " br 1\n" \ - ".previous\n" \ - ".section __ex_table,\"a\"\n" \ - " .align 4\n" \ - " .long 0b,2b\n" \ - ".previous" \ - : "+&d" (err), "=m" (x) \ - : "i" (size),"a"(addr), \ - "a" (&(x)),"K" (-EFAULT) \ - : "cc", "1" ); \ -}) - -#define __stp_put_asm(x, addr, err, size) \ -({ \ - asm volatile( \ - "0: mvc 0(%1,%2),0(%3)\n" \ - "1:\n" \ - ".section .fixup,\"ax\"\n" \ - "2: lhi %0,%5\n" \ - " bras 1,3f\n" \ - " .long 1b\n" \ - "3: l 1,0(1)\n" \ - " br 1\n" \ - ".previous\n" \ - ".section __ex_table,\"a\"\n" \ - " .align 4\n" \ - " .long 0b,2b\n" \ - ".previous" \ - : "+&d" (err) \ - : "i" (size), "a" (addr), \ - "a" (&(x)),"K" (-EFAULT) \ - : "cc", "1"); \ -}) - -#else /* s390x */ - #define __stp_get_asm(x, addr, err, size) \ ({ \ asm volatile( \ @@ -352,10 +305,7 @@ "2: lghi %0,%5\n" \ " jg 1b\n" \ ".previous\n" \ - ".section __ex_table,\"a\"\n" \ - " .align 8\n" \ - " .quad 0b,2b\n" \ - ".previous" \ + EX_TABLE(0b,2b) \ : "+&d" (err), "=m" (x) \ : "i" (size),"a"(addr), \ "a" (&(x)),"K" (-EFAULT) \ @@ -371,16 +321,12 @@ "2: lghi %0,%4\n" \ " jg 1b\n" \ ".previous\n" \ - ".section __ex_table,\"a\"\n" \ - " .align 8\n" \ - " .quad 0b,2b\n" \ - ".previous" \ + EX_TABLE(0b,2b) \ : "+&d" (err) \ : "i" (size),"a"(addr), \ "a"(&(x)),"K"(-EFAULT) \ : "cc"); \ }) -#endif #define deref(size, addr) \ ({ \ |