Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
cp1emu.c File Reference
#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.

Macros

#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)
 

Functions

 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)
 

Macro Definition Documentation

#define __mips   4

Definition at line 58 of file cp1emu.c.

#define DEF3OP (   name,
  p,
  f1,
  f2,
  f3 
)
Value:
static ieee754##p fpemu_##p##_##name(ieee754##p r, ieee754##p s, \
ieee754##p t) \
{ \
struct _ieee754_csr ieee754_csr_save; \
s = f1(s, t); \
ieee754_csr_save = ieee754_csr; \
s = f2(s, r); \
ieee754_csr_save.cx |= ieee754_csr.cx; \
ieee754_csr_save.sx |= ieee754_csr.sx; \
s = f3(s); \
ieee754_csr.cx |= ieee754_csr_save.cx; \
ieee754_csr.sx |= ieee754_csr_save.sx; \
return s; \
}

Definition at line 604 of file cp1emu.c.

#define DIFROMREG (   di,
  x 
)    ((di) = ctx->fpr[x & ~(cop1_64bit(xcp) == 0)])

Definition at line 198 of file cp1emu.c.

#define DITOREG (   di,
  x 
)    (ctx->fpr[x & ~(cop1_64bit(xcp) == 0)] = (di))

Definition at line 199 of file cp1emu.c.

#define DPFROMREG (   dp,
  x 
)    DIFROMREG((dp).bits, x)

Definition at line 203 of file cp1emu.c.

#define DPTOREG (   dp,
  x 
)    DITOREG((dp).bits, x)

Definition at line 204 of file cp1emu.c.

#define FPCREG_CSR   31 /* $31 = csr */

Definition at line 79 of file cp1emu.c.

#define FPCREG_RID   0 /* $0 = revision id */

Definition at line 78 of file cp1emu.c.

#define modeindex (   v)    ((v) & FPU_CSR_RM)

Definition at line 82 of file cp1emu.c.

#define SIFROMREG (   si,
  x 
)
Value:
((si) = cop1_64bit(xcp) || !(x & 1) ? \
(int)ctx->fpr[x] : (int)(ctx->fpr[x & ~1] >> 32))

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.

#define SPFROMREG (   sp,
  x 
)    SIFROMREG((sp).bits, x)

Definition at line 201 of file cp1emu.c.

#define SPTOREG (   sp,
  x 
)    SITOREG((sp).bits, x)

Definition at line 202 of file cp1emu.c.

Function Documentation

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 
)

Definition at line 1311 of file cp1emu.c.