summaryrefslogtreecommitdiff
path: root/libjava/sysdep
diff options
context:
space:
mode:
authordanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>2005-08-20 20:26:26 +0000
committerdanglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4>2005-08-20 20:26:26 +0000
commit59027a829aae0f399c964587a80130f3167aa078 (patch)
tree9f84797e3c6a84b09f4cb63db02114be51b19a3a /libjava/sysdep
parent070549bbdcd5b8d1168fe668cfe9091cfc14ab37 (diff)
downloadgcc-59027a829aae0f399c964587a80130f3167aa078.tar.gz
PR libgcj/21692
* sysdep/pa/descriptor.h: New file. * configure.host: Use sysdep/pa/descriptor.h on hppa*-*. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@103306 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libjava/sysdep')
-rw-r--r--libjava/sysdep/pa/descriptor.h7
1 files changed, 7 insertions, 0 deletions
diff --git a/libjava/sysdep/pa/descriptor.h b/libjava/sysdep/pa/descriptor.h
new file mode 100644
index 00000000000..d9888516d9c
--- /dev/null
+++ b/libjava/sysdep/pa/descriptor.h
@@ -0,0 +1,7 @@
+// Given a function pointer, return the code address.
+// If the plabel bit is set, mask it off and return the code from the
+// first word of the function descriptor. Otherwise, the function
+// pointer is the code address.
+
+#define UNWRAP_FUNCTION_DESCRIPTOR(X) \
+ (((unsigned int)(X)) & 2 ? *(void **)(((unsigned int)(X)) & ~3) : (X))