|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. ! 3: * ! 4: * @APPLE_LICENSE_HEADER_START@ ! 5: * ! 6: * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights ! 7: * Reserved. This file contains Original Code and/or Modifications of ! 8: * Original Code as defined in and that are subject to the Apple Public ! 9: * Source License Version 1.1 (the "License"). You may not use this file ! 10: * except in compliance with the License. Please obtain a copy of the ! 11: * License at http://www.apple.com/publicsource and read it before using ! 12: * this file. ! 13: * ! 14: * The Original Code and all software distributed under the License are ! 15: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER ! 16: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, ! 17: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, ! 18: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the ! 19: * License for the specific language governing rights and limitations ! 20: * under the License. ! 21: * ! 22: * @APPLE_LICENSE_HEADER_END@ ! 23: */ ! 24: ! 25: /* ! 26: * Copyright (c) 1992 NeXT Computer, Inc. ! 27: * ! 28: * Intel386 Family: Floating point maintenance support. ! 29: * ! 30: * HISTORY ! 31: * ! 32: * 7 April 1992 ? at NeXT ! 33: * Created. ! 34: */ ! 35: ! 36: #import <architecture/i386/fpu.h> ! 37: ! 38: /* ! 39: * Reinitialize the floating ! 40: * point unit. ! 41: */ ! 42: ! 43: static inline ! 44: void ! 45: fninit( ! 46: void ! 47: ) ! 48: { ! 49: asm volatile(" ! 50: fninit"); ! 51: } ! 52: ! 53: /* ! 54: * Save the entire state of ! 55: * the floating point unit. ! 56: * The task switched flag ! 57: * is cleared before the save ! 58: * so that we are guaranteed ! 59: * not to get an INT 7. Also ! 60: * wait until the state save is ! 61: * completed before returning. ! 62: */ ! 63: ! 64: static inline ! 65: void ! 66: fnsave( ! 67: fp_state_t * state ! 68: ) ! 69: { ! 70: asm volatile(" ! 71: clts; ! 72: fnsave %0; ! 73: fwait" ! 74: : ! 75: : "m" (*state)); ! 76: } ! 77: ! 78: /* ! 79: * Restore the entire state of ! 80: * the floating point unit. The ! 81: * task switched flags is cleared ! 82: * before the restore so that we ! 83: * are guaranteed not to get an ! 84: * INT 7. ! 85: */ ! 86: ! 87: static inline ! 88: void ! 89: frstor( ! 90: fp_state_t * state ! 91: ) ! 92: { ! 93: asm volatile(" ! 94: clts; ! 95: frstor %0" ! 96: : ! 97: : "m" (*state)); ! 98: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.