Adjust s390 addresses (the MSB is defined as "to be ignored").
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 29 Oct 2007 14:39:49 +0000 (14:39 +0000)
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>
Mon, 29 Oct 2007 14:39:49 +0000 (14:39 +0000)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3486 c046a42c-6fe2-441c-8c8c-71466251a162

target-alpha/op_helper.c
target-arm/op_helper.c
target-cris/op_helper.c
target-i386/helper.c
target-m68k/op_helper.c
target-mips/op_helper.c
target-ppc/op_helper.c
target-sh4/op_helper.c
target-sparc/op_helper.c

index ae8470b..fa1e6ac 100644 (file)
@@ -1076,7 +1076,11 @@ void helper_mtpr (int iprn)
 /* Softmmu support */
 #if !defined (CONFIG_USER_ONLY)
 
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 /* XXX: the two following helpers are pure hacks.
  *      Hopefully, we emulate the PALcode, then we should never see
index c0e7c8d..6e14a4d 100644 (file)
@@ -178,7 +178,11 @@ void do_vfp_get_fpscr(void)
 #if !defined(CONFIG_USER_ONLY)
 
 #define MMUSUFFIX _mmu
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
index 4f0f07c..d0ec519 100644 (file)
 #include "exec.h"
 
 #define MMUSUFFIX _mmu
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
index 88aa82e..bb927f6 100644 (file)
@@ -3865,7 +3865,11 @@ void update_fp_status(void)
 #if !defined(CONFIG_USER_ONLY)
 
 #define MMUSUFFIX _mmu
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
index 917ef52..80ec890 100644 (file)
@@ -31,7 +31,11 @@ void do_interrupt(int is_hw)
 extern int semihosting_enabled;
 
 #define MMUSUFFIX _mmu
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
index 3c04c55..50c76d1 100644 (file)
 
 #include "host-utils.h"
 
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 /*****************************************************************************/
 /* Exceptions processing helpers */
index 751bd72..da5a6f5 100644 (file)
@@ -2732,7 +2732,11 @@ DO_SPE_OP1(fsctuf);
 #if !defined (CONFIG_USER_ONLY)
 
 #define MMUSUFFIX _mmu
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
index 2535b8d..c1bc4e8 100644 (file)
@@ -28,7 +28,11 @@ void do_raise_exception(void)
 #ifndef CONFIG_USER_ONLY
 
 #define MMUSUFFIX _mmu
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"
index ccadf85..3746788 100644 (file)
@@ -1680,7 +1680,11 @@ static void do_unaligned_access(target_ulong addr, int is_write, int is_user,
 
 #define MMUSUFFIX _mmu
 #define ALIGNED_ONLY
-#define GETPC() (__builtin_return_address(0))
+#ifdef __s390__
+# define GETPC() ((void*)((unsigned long)__builtin_return_address(0) & 0x7fffffffUL))
+#else
+# define GETPC() (__builtin_return_address(0))
+#endif
 
 #define SHIFT 0
 #include "softmmu_template.h"