#include <linux/sched.h>
#include <linux/module.h>
#include <linux/debugfs.h>
#include <linux/perf_event.h>
#include <asm/inst.h>
#include <asm/bootinfo.h>
#include <asm/processor.h>
#include <asm/ptrace.h>
#include <asm/signal.h>
#include <asm/mipsregs.h>
#include <asm/fpu_emulator.h>
#include <asm/uaccess.h>
#include <asm/branch.h>
#include "ieee754.h"
Go to the source code of this file.
|
#define | __mips 4 |
|
#define | FPCREG_RID 0 /* $0 = revision id */ |
|
#define | FPCREG_CSR 31 /* $31 = csr */ |
|
#define | modeindex(v) ((v) & FPU_CSR_RM) |
|
#define | SIFROMREG(si, x) |
|
#define | SITOREG(si, x) |
|
#define | DIFROMREG(di, x) ((di) = ctx->fpr[x & ~(cop1_64bit(xcp) == 0)]) |
|
#define | DITOREG(di, x) (ctx->fpr[x & ~(cop1_64bit(xcp) == 0)] = (di)) |
|
#define | SPFROMREG(sp, x) SIFROMREG((sp).bits, x) |
|
#define | SPTOREG(sp, x) SITOREG((sp).bits, x) |
|
#define | DPFROMREG(dp, x) DIFROMREG((dp).bits, x) |
|
#define | DPTOREG(dp, x) DITOREG((dp).bits, x) |
|
#define | DEF3OP(name, p, f1, f2, f3) |
|
|
| DEF3OP (madd, sp, ieee754sp_mul, ieee754sp_add,) |
|
| DEF3OP (msub, sp, ieee754sp_mul, ieee754sp_sub,) |
|
| DEF3OP (nmadd, sp, ieee754sp_mul, ieee754sp_add, ieee754sp_neg) |
|
| DEF3OP (nmsub, sp, ieee754sp_mul, ieee754sp_sub, ieee754sp_neg) |
|
| DEF3OP (madd, dp, ieee754dp_mul, ieee754dp_add,) |
|
| DEF3OP (msub, dp, ieee754dp_mul, ieee754dp_sub,) |
|
| DEF3OP (nmadd, dp, ieee754dp_mul, ieee754dp_add, ieee754dp_neg) |
|
| DEF3OP (nmsub, dp, ieee754dp_mul, ieee754dp_sub, ieee754dp_neg) |
|
int | fpu_emulator_cop1Handler (struct pt_regs *xcp, struct mips_fpu_struct *ctx, int has_fpu, void *__user *fault_addr) |
|
Value:static ieee754##
p fpemu_##
p##
_##
name(ieee754##
p r, ieee754##
p s, \
ieee754_csr.cx |= ieee754_csr_save.cx; \
ieee754_csr.sx |= ieee754_csr_save.sx; \
}
Definition at line 604 of file cp1emu.c.
#define DIFROMREG |
( |
|
di, |
|
|
|
x |
|
) |
| ((di) = ctx->fpr[x & ~(cop1_64bit(xcp) == 0)]) |
#define DITOREG |
( |
|
di, |
|
|
|
x |
|
) |
| (ctx->fpr[x & ~(cop1_64bit(xcp) == 0)] = (di)) |
#define FPCREG_CSR 31 /* $31 = csr */ |
#define SIFROMREG |
( |
|
si, |
|
|
|
x |
|
) |
| |
Value:((si) = cop1_64bit(xcp) || !(
x & 1) ? \
Definition at line 190 of file cp1emu.c.
#define SITOREG |
( |
|
si, |
|
|
|
x |
|
) |
| |
Value:(
ctx->fpr[
x & ~(cop1_64bit(xcp) == 0)] = \
cop1_64bit(xcp) || !(
x & 1) ? \
ctx->fpr[
x & ~1] >> 32 << 32 | (
u32)(si) : \
ctx->fpr[
x & ~1] << 32 >> 32 | (
u64)(si) << 32)
Definition at line 193 of file cp1emu.c.