diff options
author | Jake Burkholder <jake@FreeBSD.org> | 2002-04-27 21:56:28 +0000 |
---|---|---|
committer | Jake Burkholder <jake@FreeBSD.org> | 2002-04-27 21:56:28 +0000 |
commit | 8c93421144f9ba739b13896f3d0f533038789acc (patch) | |
tree | ef5f4b8e186ab8b15487aae5d54638610a6e672b /lib/libc/sparc64/sys/__sparc_utrap_private.h | |
parent | 24d44c5d51f48f6621310df6919592cf07832766 (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.h | 10 |
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 |