int stfs(void *frS, void *ea) { FP_DECL_D(A); FP_DECL_S(R); FP_DECL_EX; float f; #ifdef DEBUG printk("%s: S %p, ea %p\n", __func__, frS, ea); #endif FP_UNPACK_DP(A, frS); #ifdef DEBUG printk("A: %ld %lu %lu %ld (%ld)\n", A_s, A_f1, A_f0, A_e, A_c); #endif FP_CONV(S, D, 1, 2, R, A); #ifdef DEBUG printk("R: %ld %lu %ld (%ld)\n", R_s, R_f, R_e, R_c); #endif _FP_PACK_CANONICAL(S, 1, R); if (!FP_CUR_EXCEPTIONS || !__FPU_TRAP_P(FP_CUR_EXCEPTIONS)) { _FP_PACK_RAW_1_P(S, &f, R); if (copy_to_user(ea, &f, sizeof(float))) return -EFAULT; } return FP_CUR_EXCEPTIONS; }
int stfs(void *frS, void *ea) { FP_DECL_D(A); FP_DECL_S(R); float f; int err; #ifdef DEBUG printk("%s: S %p, ea %p\n", __FUNCTION__, frS, ea); #endif __FP_UNPACK_D(A, frS); #ifdef DEBUG printk("A: %ld %lu %lu %ld (%ld)\n", A_s, A_f1, A_f0, A_e, A_c); #endif FP_CONV(S, D, 1, 2, R, A); #ifdef DEBUG printk("R: %ld %lu %ld (%ld)\n", R_s, R_f, R_e, R_c); #endif err = _FP_PACK_CANONICAL(S, 1, R); if (!err || !__FPU_TRAP_P(err)) { __FP_PACK_RAW_1(S, &f, R); if (copy_to_user(ea, &f, sizeof(float))) return -EFAULT; } return err; }
static int fcnvds(struct sh_fpu_soft_struct *fregs, int n) { FP_DECL_EX; FP_DECL_D(Fn); FP_DECL_S(Fr); UNPACK_D(Fn, DRn); FP_CONV(S, D, 1, 2, Fr, Fn); PACK_S(FPUL, Fr); return 0; }
static int fcnvsd(struct sh_fpu_soft_struct *fregs, int n) { FP_DECL_EX; FP_DECL_S(Fn); FP_DECL_D(Fr); UNPACK_S(Fn, FPUL); FP_CONV(D, S, 2, 1, Fr, Fn); PACK_D(DRn, Fr); return 0; }
double __trunctfdf2(long double a) { FP_DECL_EX; FP_DECL_Q(A); FP_DECL_D(R); double r; FP_INIT_ROUNDMODE; FP_UNPACK_Q(A, a); #if (2 * _FP_W_TYPE_SIZE) < _FP_FRACBITS_Q FP_CONV(D,Q,2,4,R,A); #else FP_CONV(D,Q,1,2,R,A); #endif FP_PACK_D(r, R); FP_HANDLE_EXCEPTIONS; return r; }
float __truncdfsf2(double a) { FP_DECL_EX; FP_DECL_D(A); FP_DECL_S(R); float r; FP_INIT_ROUNDMODE; FP_UNPACK_D(A, a); #if _FP_W_TYPE_SIZE < _FP_FRACBITS_D FP_CONV(S,D,1,2,R,A); #else FP_CONV(S,D,1,1,R,A); #endif FP_PACK_S(r, R); FP_HANDLE_EXCEPTIONS; return r; }
int efdcfs(void *rD, u32 *rB) { FP_DECL_S(B); FP_DECL_D(R); int ret; rB[0]=rB[1]; __FP_UNPACK_S(B, rB); #ifdef DEBUG printk("B: %ld %lu %ld (%ld)\n", B_s, B_f, B_e, B_c); #endif FP_CONV(D, S, 2, 1, R, B); #ifdef DEBUG printk("R: %ld %lu %lu %ld (%ld)\n", R_s, R_f1, R_f0, R_e, R_c); #endif return (ret | __FP_PACK_D(rD, R)); }