|
|
1.1 ! root 1: /* @(#)fpcrtdefs.h 1.1 86/02/03 SMI */ ! 2: ! 3: /* ! 4: * Copyright (c) 1985 by Sun Microsystems, Inc. ! 5: */ ! 6: ! 7: #include "DEFS.h" ! 8: ! 9: #define ENTER(f) .globl f ; f: ! 10: #define OBSOLETE(f) ENTER(f) ! 11: /* Obsolete entry points, remove in next release. */ ! 12: #define RTOBSOLETE(f) RTENTRY(f) ! 13: ! 14: /* ! 15: /* typedef enum fp_switch_type { ! 16: /* fp_unspecified, /* Floating point unit not specified yet. */ ! 17: /* fp_software, /* Floating point performed in software. */ ! 18: /* fp_skyffp, /* Floating point performed on Sky FFP. */ ! 19: /* fp_mc68881, /* Floating point performed on Motorola 68881. */ ! 20: /* fp_sunfpa /* Floating point performed on Sun FPA. */ ! 21: /* } ; ! 22: */ ! 23: #define FP_UNSPECIFIED 0 ! 24: #define FP_SOFTWARE 1 ! 25: #define FP_SKYFFP 2 ! 26: #define FP_MC68881 3 ! 27: #define FP_SUNFPA 4 ! 28: ! 29: /* ! 30: Structure of a V... entry point: ! 31: Vxxx: jsr V_switch:L ! 32: .long Fxxx software gets translated to jmp Fxxx:L ! 33: .long Sxxx Sky ffp board gets translated to jmp Sxxx:L ! 34: .long Mxxx Motorola 68881 or emulator ! 35: .long Wxxx Sun FPA board gets translated to jmp Wxxx:L ! 36: */ ! 37: ! 38: #define VOFFSET 2 ! 39: #define FOFFSET 6 ! 40: #define SOFFSET 10 ! 41: #define MOFFSET 14 ! 42: #define WOFFSET 18 ! 43: ! 44: #define VECTORED(f) \ ! 45: .data ; \ ! 46: ENTER(V/**/f) ; \ ! 47: jsr V_switch:L ; \ ! 48: .long F/**/f,S/**/f,M/**/f,W/**/f ! 49: ! 50: #define VECTOR(f,g) \ ! 51: .data ; \ ! 52: OBSOLETE(g) ; \ ! 53: ENTER(V/**/f) ; \ ! 54: jsr V_switch:L ; \ ! 55: .long F/**/f,S/**/f,M/**/f,W/**/f ! 56: ! 57: /* Entries to convert between C parameter convention and Vxxx convention. */ ! 58: ! 59: #define CVDTOD(f,g) \ ! 60: ENTER(_/**/f) ; \ ! 61: moveml sp@(4),d0/d1 ; \ ! 62: jra V/**/g/**/d ! 63: ! 64: #define CVDDTOD(f,g) \ ! 65: ENTER(_/**/f) ; \ ! 66: moveml sp@(4),d0/d1 ; \ ! 67: lea sp@(12),a0 ; \ ! 68: jra V/**/g/**/d ! 69: ! 70: #define VCDTOD(f) \ ! 71: ENTER(f) ; \ ! 72: moveml d0/d1,sp@- ; \ ! 73: jsr _C/**/f ; \ ! 74: addql #8,sp ; \ ! 75: rts ! 76: ! 77: #define VCDDTOD(f) \ ! 78: ENTER(f) ; \ ! 79: movel a0@(4),sp@- ; \ ! 80: movel a0@,sp@- ; \ ! 81: moveml d0/d1,sp@- ; \ ! 82: jsr _C/**/f ; \ ! 83: addl #16,sp ; \ ! 84: rts ! 85: ! 86: /* Entries to convert between Fortran parameter convention and Vxxx convention. */ ! 87: ! 88: #define VFSTOS(x) \ ! 89: ENTER(x) ; \ ! 90: movel d0,sp@- ; \ ! 91: pea sp@ ; \ ! 92: jsr _F/**/x/**/_ ; \ ! 93: addql #8,sp ; \ ! 94: rts ! 95: ! 96: #define VFSSTOS(x) \ ! 97: ENTER(x) ; \ ! 98: moveml d0/d1,sp@- ; \ ! 99: pea sp@(4) ; \ ! 100: pea sp@(4) ; \ ! 101: jsr _F/**/x/**/_ ; \ ! 102: addl #16,sp ; \ ! 103: rts ! 104: ! 105: #define VFDTOD(x) \ ! 106: ENTER(x) ; \ ! 107: moveml d0/d1,sp@- ; \ ! 108: pea sp@ ; \ ! 109: jsr _F/**/x/**/_ ; \ ! 110: addl #12,sp ; \ ! 111: rts ! 112: ! 113: #define VFDDTOD(x) \ ! 114: ENTER(x) ; \ ! 115: moveml d0/d1,sp@- ; \ ! 116: pea a0@ ; \ ! 117: pea sp@(4) ; \ ! 118: jsr _F/**/x/**/_ ; \ ! 119: addl #16,sp ; \ ! 120: rts ! 121: ! 122: /* Floating point condition codes, as in movew #FLT,cc */ ! 123: ! 124: #define FEQ 4 /* Z bit */ ! 125: #define FLT 25 /* XNC bits */ ! 126: #define FGT 0 /* no bits */ ! 127: #define FUN 2 /* V bit */ ! 128: ! 129: /* Floating point modes and status. */ ! 130: ! 131: /* ! 132: * Rounding Direction ! 133: */ ! 134: ! 135: #define ROUNDMASK ~0x30 ! 136: ! 137: #define RNEAREST 0 ! 138: #define RZERO 0x10 ! 139: #define RMINUS 0x20 ! 140: #define RPLUS 0x30 ! 141: ! 142: /* ! 143: * Rounding Precision ! 144: */ ! 145: ! 146: #define ROUNDTODOUBLE 0x80 /* 68881 rounding precision corresponding to F/S/W */ ! 147: ! 148: /* ! 149: * Jump Table Equates - all odd and negative ! 150: */ ! 151: ! 152: #define RETURNX -1 /* Return first argument */ ! 153: #define RETURNY -3 /* Return second argument */ ! 154: #define RETURNINVALID -5 /* Return a quiet nan and set errno */ ! 155: #define RETURN1 -7 /* Return +1.0. */ ! 156: #define RETURNINFORZERO -9 /* Return +inf for +inf, +0 for -inf. */ ! 157: ! 158: /* ! 159: * Context save/restore info. ! 160: */ ! 161: ! 162: #define FPSAVESIZE 64 /* Block for stacking state of current floating point device. */ ! 163: ! 164: /* 68020 cache clear call ! 165: * 68010 noop ! 166: */ ! 167: ! 168: #define CLEARCACHE trap #2 /* was jsr _getpid */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.