123456789101112131415161718192021222324252627282930313233 |
- #include <linux/types.h>
- #include <linux/errno.h>
- #include <asm/uaccess.h>
- #include <asm/sfp-machine.h>
- #include <math-emu/soft-fp.h>
- int
- mcrfs(u32 *ccr, u32 crfD, u32 crfS)
- {
- u32 value, clear;
- #ifdef DEBUG
- printk("%s: %p (%08x) %d %d\n", __func__, ccr, *ccr, crfD, crfS);
- #endif
- clear = 15 << ((7 - crfS) << 2);
- if (!crfS)
- clear = 0x90000000;
- value = (__FPU_FPSCR >> ((7 - crfS) << 2)) & 15;
- __FPU_FPSCR &= ~(clear);
- *ccr &= ~(15 << ((7 - crfD) << 2));
- *ccr |= (value << ((7 - crfD) << 2));
- #ifdef DEBUG
- printk("CR: %08x\n", __func__, *ccr);
- #endif
- return 0;
- }
|