cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

fplsp.doc (8032B)


      1~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      2MOTOROLA MICROPROCESSOR & MEMORY TECHNOLOGY GROUP
      3M68000 Hi-Performance Microprocessor Division
      4M68060 Software Package
      5Production Release P1.00 -- October 10, 1994
      6
      7M68060 Software Package Copyright © 1993, 1994 Motorola Inc.  All rights reserved.
      8
      9THE SOFTWARE is provided on an "AS IS" basis and without warranty.
     10To the maximum extent permitted by applicable law,
     11MOTOROLA DISCLAIMS ALL WARRANTIES WHETHER EXPRESS OR IMPLIED,
     12INCLUDING IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
     13and any warranty against infringement with regard to the SOFTWARE
     14(INCLUDING ANY MODIFIED VERSIONS THEREOF) and any accompanying written materials.
     15
     16To the maximum extent permitted by applicable law,
     17IN NO EVENT SHALL MOTOROLA BE LIABLE FOR ANY DAMAGES WHATSOEVER
     18(INCLUDING WITHOUT LIMITATION, DAMAGES FOR LOSS OF BUSINESS PROFITS,
     19BUSINESS INTERRUPTION, LOSS OF BUSINESS INFORMATION, OR OTHER PECUNIARY LOSS)
     20ARISING OF THE USE OR INABILITY TO USE THE SOFTWARE.
     21Motorola assumes no responsibility for the maintenance and support of the SOFTWARE.
     22
     23You are hereby granted a copyright license to use, modify, and distribute the SOFTWARE
     24so long as this entire notice is retained without alteration in any modified and/or
     25redistributed versions, and that such modified versions are clearly identified as such.
     26No licenses are granted by implication, estoppel or otherwise under any patents
     27or trademarks of Motorola, Inc.
     28~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     29
     3068060 FLOATING-POINT SOFTWARE PACKAGE (Library version)
     31--------------------------------------------------------
     32
     33The file fplsp.sa contains the "Library version" of the
     3468060SP Floating-Point Software Package. The routines
     35included in this module can be used to emulate the
     36FP instructions not implemented in 68060 hardware. These
     37instructions normally take exception vector #11
     38"FP Unimplemented Instruction".
     39
     40By re-compiling a program that uses these instructions, and
     41making subroutine calls in place of the unimplemented
     42instructions, a program can avoid the overhead associated
     43with taking the exception.
     44
     45Release file format:
     46--------------------
     47The file fplsp.sa is essentially a hexadecimal image of the
     48release package. This is the ONLY format which will be supported.
     49The hex image was created by assembling the source code and
     50then converting the resulting binary output image into an
     51ASCII text file. The hexadecimal numbers are listed
     52using the Motorola Assembly Syntax assembler directive "dc.l"
     53(define constant longword). The file can be converted to other
     54assembly syntaxes by using any word processor with a global
     55search and replace function.
     56
     57To assist in assembling and linking this module with other modules,
     58the installer should add a symbolic label to the top of the file.
     59This will allow calling routines to access the entry points
     60of this package.
     61
     62The source code fplsp.s has also been included but only for
     63documentation purposes.
     64
     65Release file structure:
     66-----------------------
     67The file fplsp.sa contains an "Entry-Point" section and a
     68code section. The FPLSP has no "Call-Out" section. The first section
     69is the "Entry-Point" section. In order to access a function in the
     70package, a program must "bsr" or "jsr" to the location listed
     71below in "68060FPLSP entry points" that corresponds to the desired
     72function. A branch instruction located at the selected entry point
     73within the package will then enter the correct emulation code routine.
     74
     75The entry point addresses at the beginning of the package will remain
     76fixed so that a program calling the routines will not have to be
     77re-compiled with every new 68060FPLSP release.
     78
     79There are 3 entry-points for each instruction type: single precision,
     80double precision, and extended precision.
     81
     82As an example, the "fsin" library instruction can be passed an
     83extended precision operand if program executes:
     84
     85# fsin.x fp0
     86
     87	fmovm.x	&0x01,-(%sp)	# pass operand on stack
     88	bsr.l	_060FPLSP_TOP+0x1a8 # branch to fsin routine
     89	add.l	&0xc,%sp	# clear operand from stack
     90
     91Upon return, fp0 holds the correct result. The FPSR is
     92set correctly. The FPCR is unchanged. The FPIAR is undefined.
     93
     94Another example. This time, a dyadic operation:
     95
     96# frem.s %fp1,%fp0
     97
     98	fmov.s	%fp1,-(%sp)	# pass src operand
     99	fmov.s	%fp0,-(%sp)	# pass dst operand
    100	bsr.l	_060FPLSP_TOP+0x168 # branch to frem routine
    101	addq.l	&0x8,%sp	# clear operands from stack
    102
    103Again, the result is returned in fp0. Note that BOTH operands
    104are passed in single precision format.
    105
    106Exception reporting:
    107--------------------
    108The package takes exceptions according to the FPCR value upon subroutine
    109entry. If an exception should be reported, then the package forces
    110this exception using implemented floating-point instructions.
    111For example, if the instruction being emulated should cause a
    112floating-point Operand Error exception, then the library routine
    113executes an FMUL of a zero and an infinity to force the OPERR
    114exception. Although the FPIAR will be undefined for the enabled
    115Operand Error exception handler, the user will at least be able
    116to record that the event occurred.
    117
    118Miscellaneous:
    119--------------
    120The package does not attempt to correctly emulate instructions
    121with Signalling NAN inputs. Use of SNANs should be avoided with
    122this package.
    123
    124The fabs/fadd/fdiv/fint/fintrz/fmul/fneg/fsqrt/fsub entry points
    125are provided for the convenience of older compilers that make
    126subroutine calls for all fp instructions. The code does NOT emulate
    127the instruction but rather simply executes it.
    128
    12968060FPLSP entry points:
    130------------------------
    131_060FPLSP_TOP:
    1320x000:	_060LSP__facoss_
    1330x008:	_060LSP__facosd_
    1340x010:	_060LSP__facosx_
    1350x018:	_060LSP__fasins_
    1360x020:	_060LSP__fasind_
    1370x028:	_060LSP__fasinx_
    1380x030:	_060LSP__fatans_
    1390x038:	_060LSP__fatand_
    1400x040:	_060LSP__fatanx_
    1410x048:	_060LSP__fatanhs_
    1420x050:	_060LSP__fatanhd_
    1430x058:	_060LSP__fatanhx_
    1440x060:	_060LSP__fcoss_
    1450x068:	_060LSP__fcosd_
    1460x070:	_060LSP__fcosx_
    1470x078:	_060LSP__fcoshs_
    1480x080:	_060LSP__fcoshd_
    1490x088:	_060LSP__fcoshx_
    1500x090:	_060LSP__fetoxs_
    1510x098:	_060LSP__fetoxd_
    1520x0a0:	_060LSP__fetoxx_
    1530x0a8:	_060LSP__fetoxm1s_
    1540x0b0:	_060LSP__fetoxm1d_
    1550x0b8:	_060LSP__fetoxm1x_
    1560x0c0:	_060LSP__fgetexps_
    1570x0c8:	_060LSP__fgetexpd_
    1580x0d0:	_060LSP__fgetexpx_
    1590x0d8:	_060LSP__fgetmans_
    1600x0e0:	_060LSP__fgetmand_
    1610x0e8:	_060LSP__fgetmanx_
    1620x0f0:	_060LSP__flog10s_
    1630x0f8:	_060LSP__flog10d_
    1640x100:	_060LSP__flog10x_
    1650x108:	_060LSP__flog2s_
    1660x110:	_060LSP__flog2d_
    1670x118:	_060LSP__flog2x_
    1680x120:	_060LSP__flogns_
    1690x128:	_060LSP__flognd_
    1700x130:	_060LSP__flognx_
    1710x138:	_060LSP__flognp1s_
    1720x140:	_060LSP__flognp1d_
    1730x148:	_060LSP__flognp1x_
    1740x150:	_060LSP__fmods_
    1750x158:	_060LSP__fmodd_
    1760x160:	_060LSP__fmodx_
    1770x168:	_060LSP__frems_
    1780x170:	_060LSP__fremd_
    1790x178:	_060LSP__fremx_
    1800x180:	_060LSP__fscales_
    1810x188:	_060LSP__fscaled_
    1820x190:	_060LSP__fscalex_
    1830x198:	_060LSP__fsins_
    1840x1a0:	_060LSP__fsind_
    1850x1a8:	_060LSP__fsinx_
    1860x1b0:	_060LSP__fsincoss_
    1870x1b8:	_060LSP__fsincosd_
    1880x1c0:	_060LSP__fsincosx_
    1890x1c8:	_060LSP__fsinhs_
    1900x1d0:	_060LSP__fsinhd_
    1910x1d8:	_060LSP__fsinhx_
    1920x1e0:	_060LSP__ftans_
    1930x1e8:	_060LSP__ftand_
    1940x1f0:	_060LSP__ftanx_
    1950x1f8:	_060LSP__ftanhs_
    1960x200:	_060LSP__ftanhd_
    1970x208:	_060LSP__ftanhx_
    1980x210:	_060LSP__ftentoxs_
    1990x218:	_060LSP__ftentoxd_
    2000x220:	_060LSP__ftentoxx_
    2010x228:	_060LSP__ftwotoxs_
    2020x230:	_060LSP__ftwotoxd_
    2030x238:	_060LSP__ftwotoxx_
    204
    2050x240:	_060LSP__fabss_
    2060x248:	_060LSP__fabsd_
    2070x250:	_060LSP__fabsx_
    2080x258:	_060LSP__fadds_
    2090x260:	_060LSP__faddd_
    2100x268:	_060LSP__faddx_
    2110x270:	_060LSP__fdivs_
    2120x278:	_060LSP__fdivd_
    2130x280:	_060LSP__fdivx_
    2140x288:	_060LSP__fints_
    2150x290:	_060LSP__fintd_
    2160x298:	_060LSP__fintx_
    2170x2a0:	_060LSP__fintrzs_
    2180x2a8:	_060LSP__fintrzd_
    2190x2b0:	_060LSP__fintrzx_
    2200x2b8:	_060LSP__fmuls_
    2210x2c0:	_060LSP__fmuld_
    2220x2c8:	_060LSP__fmulx_
    2230x2d0:	_060LSP__fnegs_
    2240x2d8:	_060LSP__fnegd_
    2250x2e0:	_060LSP__fnegx_
    2260x2e8:	_060LSP__fsqrts_
    2270x2f0:	_060LSP__fsqrtd_
    2280x2f8:	_060LSP__fsqrtx_
    2290x300:	_060LSP__fsubs_
    2300x308:	_060LSP__fsubd_
    2310x310:	_060LSP__fsubx_