1/* 2 * BK Id: SCCS/s.mcrfs.c 1.6 05/17/01 18:14:23 cort 3 */ 4#include <linux/types.h> 5#include <linux/errno.h> 6#include <asm/uaccess.h> 7 8#include "soft-fp.h" 9 10int 11mcrfs(u32 *ccr, u32 crfD, u32 crfS) 12{ 13 u32 value, clear; 14 15#ifdef DEBUG 16 printk("%s: %p (%08x) %d %d\n", __FUNCTION__, ccr, *ccr, crfD, crfS); 17#endif 18 19 clear = 15 << ((7 - crfS) << 2); 20 if (!crfS) 21 clear = 0x90000000; 22 23 value = (__FPU_FPSCR >> ((7 - crfS) << 2)) & 15; 24 __FPU_FPSCR &= ~(clear); 25 26 *ccr &= ~(15 << ((7 - crfD) << 2)); 27 *ccr |= (value << ((7 - crfD) << 2)); 28 29#ifdef DEBUG 30 printk("CR: %08x\n", __FUNCTION__, *ccr); 31#endif 32 33 return 0; 34} 35