aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/sparc64/sys/__sparc_utrap_private.h
diff options
context:
space:
mode:
authorJake Burkholder <jake@FreeBSD.org>2002-04-27 21:56:28 +0000
committerJake Burkholder <jake@FreeBSD.org>2002-04-27 21:56:28 +0000
commit8c93421144f9ba739b13896f3d0f533038789acc (patch)
treeef5f4b8e186ab8b15487aae5d54638610a6e672b /lib/libc/sparc64/sys/__sparc_utrap_private.h
parent24d44c5d51f48f6621310df6919592cf07832766 (diff)
Emulate ldq and stq (load/store long double) instructions. GCC has started
using these to load long doubles, but they aren't implemented in hardware on (at least) UltraSPARC I and II machines. Emulate popc in the user trap handler as well. Re-arrange slightly to make support functions more accessible. Reviewed by: tmm
Notes
Notes: svn path=/head/; revision=95587
Diffstat (limited to 'lib/libc/sparc64/sys/__sparc_utrap_private.h')
-rw-r--r--lib/libc/sparc64/sys/__sparc_utrap_private.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/libc/sparc64/sys/__sparc_utrap_private.h b/lib/libc/sparc64/sys/__sparc_utrap_private.h
index cd11ccd8f39e..798ed705cfc1 100644
--- a/lib/libc/sparc64/sys/__sparc_utrap_private.h
+++ b/lib/libc/sparc64/sys/__sparc_utrap_private.h
@@ -50,6 +50,16 @@ struct utrapframe {
extern char __sparc_utrap_fp_disabled[];
extern char __sparc_utrap_gen[];
+int __emul_insn(struct utrapframe *uf);
+u_long __emul_fetch_reg(struct utrapframe *uf, int reg);
+void __emul_store_reg(struct utrapframe *uf, int reg, u_long val);
+u_long __emul_f3_op2(struct utrapframe *uf, u_int insn);
+u_long __emul_f3_memop_addr(struct utrapframe *uf, u_int insn);
+
void __sparc_utrap(struct utrapframe *);
+void __utrap_write(const char *);
+void __utrap_kill_self(int);
+void __utrap_panic(const char *);
+
#endif