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